等不是办法,干才有希望,快速跑通graphRag

等不是办法,干才有希望,快速跑通graphRag

感谢

且不去理会各种繁杂的概念,先把项目跑起来体验一下。

运行环境配置

AI 相关的库更新迭代速度极快,今天学习的内容可能明天就已更新。因此,确保版本一致性至关重要,以下是本教程所需的核心环境:

  • Python 3.12
  • GraphRAG 2.1.0

安装主要依赖:

bash 复制代码
pip install graphrag==2.1.0

其余依赖项会在安装过程中自动下载,无需手动配置。

1 初始化

使用以下命令初始化项目:

bash 复制代码
graphrag init --root graphrag-demo

执行后将生成如下基本目录结构:

bash 复制代码
graphrag-demo
├── prompts
│   ├── basic_search_system_prompt.txt                           # 基础搜索系统提示文件
│   ├── community_report_graph.txt                               # 社区报告图谱生成提示文件
│   ├── community_report_text.txt                                # 社区报告文本生成提示文件
│   ├── drift_reduce_prompt.txt                                  # 漂移减少提示文件
│   ├── drift_search_system_prompt.txt                           # 漂移搜索系统提示文件
│   ├── extract_claims.txt                                       # 提取声明/主张的提示文件
│   ├── extract_graph.txt                                        # 从文本提取图谱关系的提示文件
│   ├── global_search_knowledge_system_prompt.txt                # 全局搜索知识系统提示文件
│   ├── global_search_map_system_prompt.txt                      # 全局搜索映射系统提示文件
│   ├── global_search_reduce_system_prompt.txt                   # 全局搜索归约系统提示文件
│   ├── local_search_system_prompt.txt                           # 本地搜索系统提示文件
│   ├── question_gen_system_prompt.txt                           # 问题生成系统提示文件
│   ├── summarize_descriptions.txt                               # 描述摘要生成提示文件
├── settings.yaml                                                # 配置文件,包含模型设置、输入输出设置等
└── .env                                                         # 环境变量文件,存储API密钥等敏感信息

2 修改提示词

extract_claims.txtextract_graph.txt 中的 English 改为 Chinese,使系统返回中文的实体和关系。

3 配置环境

需要对 settings.yaml 进行配置,并在 .env 文件中设置相应的环境变量:

注意事项:

  • 本教程使用的是 grok-2-1212 模型,可能会出现 encoding_model 找不到的错误,需要手动指定该参数
  • 对于 embedding_model,建议选择支持较大token长度的模型(如硅基流动),实测发现火山豆包等模型可能会出现错误

4 运行

bash 复制代码
graphrag index

5 查询

社区查询

bash 复制代码
graphrag query  --method local --query "都有哪些实体"

全局查询

bash 复制代码
graphrag query  --method global --query "按时间叙事"

output结构

csharp 复制代码
├── output # 输出目录,存储处理结果
│   ├── communities.parquet # 社区数据,存储识别出的主题社区信息
│   ├── community_reports.parquet # 社区报告数据,存储为每个社区生成的详细报告
│   ├── context.json # 上下文信息,存储处理过程中的上下文数据
│   ├── documents.parquet # 文档数据,存储处理后的文档信息
│   ├── entities.parquet # 实体数据,存储从文本中提取的实体信息
│   ├── lancedb # LanceDB向量数据库目录
│   │   ├── default-community-full_content.lance # 社区全文内容的向量存储
│   │   │   ├── _transactions # 事务记录
│   │   │   │   ├── 0-b8903013-e496-49d2-8056-26cdafbcb6da.txn # 事务文件
│   │   │   │   └── 1-c4e75ee4-4179-431a-afde-15ce230ebf52.txn # 事务文件
│   │   │   ├── _versions # 版本管理
│   │   │   │   ├── 1.manifest # 版本1清单
│   │   │   │   └── 2.manifest # 版本2清单
│   │   │   └── data # 数据存储
│   │   │       └── c4779283-b391-463d-a1e0-8af73d66a4fa.lance # 数据文件
│   │   ├── default-entity-description.lance # 实体描述的向量存储
│   │   │   ├── _transactions # 事务记录
│   │   │   │   ├── 0-f0aeed1e-f954-4fef-9987-e4ab2c441961.txn # 事务文件
│   │   │   │   └── 1-cf687bea-4335-4238-bec4-9006851c1aaf.txn # 事务文件
│   │   │   ├── _versions # 版本管理
│   │   │   │   ├── 1.manifest # 版本1清单
│   │   │   │   └── 2.manifest # 版本2清单
│   │   │   └── data # 数据存储
│   │   │       └── 2585fe1e-7787-4a4e-afa3-9b87b1925d86.lance # 数据文件
│   │   └── default-text_unit-text.lance # 文本单元的向量存储
│   │       ├── _transactions # 事务记录
│   │       │   ├── 0-53a32157-64a8-444b-a838-a60a38c76e67.txn # 事务文件
│   │       │   └── 1-859fd3ea-20d0-4db0-b000-d90e2a85c1a1.txn # 事务文件
│   │       ├── _versions # 版本管理
│   │       │   ├── 1.manifest # 版本1清单
│   │       │   └── 2.manifest # 版本2清单
│   │       └── data # 数据存储
│   │           └── 7cb17cae-41b3-4003-845d-abde65e0ee6a.lance # 数据文件
│   ├── relationships.parquet # 关系数据,存储实体间的关系信息
│   ├── stats.json # 统计数据,存储处理过程的统计信息
│   └── text_units.parquet # 文本单元数据,存储文本分割后的基本单元

后续随缘更新

相关推荐
聆风吟º1 天前
CANN开源项目深度实践:基于amct-toolkit实现自动化模型量化与精度保障策略
运维·开源·自动化·cann
Victor3561 天前
https://editor.csdn.net/md/?articleId=139321571&spm=1011.2415.3001.9698
后端
冬奇Lab1 天前
一天一个开源项目(第15篇):MapToPoster - 用代码将城市地图转换为精美的海报设计
python·开源
Victor3561 天前
Hibernate(89)如何在压力测试中使用Hibernate?
后端
灰子学技术1 天前
go response.Body.close()导致连接异常处理
开发语言·后端·golang
大大大反派1 天前
CANN 生态未来展望:统一框架 `CANN Unified` 与开源协同演进
开源
Gogo8161 天前
BigInt 与 Number 的爱恨情仇,为何大佬都劝你“能用 Number 就别用 BigInt”?
后端
fuquxiaoguang1 天前
深入浅出:使用MDC构建SpringBoot全链路请求追踪系统
java·spring boot·后端·调用链分析
酷酷的崽7981 天前
CANN 开源生态实战:端到端构建高效文本分类服务
分类·数据挖掘·开源
晚霞的不甘1 天前
CANN 在工业质检中的亚像素级视觉检测系统设计
人工智能·计算机视觉·架构·开源·视觉检测