微软GraphRAG的安装和在RAG中的使用体会
文章目录
-
- 0. 简介
-
- (1)**技术原理**
- (2)**优势**
- (3)**开源与演进**
- 1. 下载graphrag.git
- 2.安装 poetry
- 3.初始化项目:建立cases目录
- 4. 修改.env
- 5.修改settings.yaml,将两处 api_base改成中转站地址:
- 6.cases下面建目录input,把三国演义.txt拖进case/input
- 7. 建索引:
- 8. 问问题:
- 9. GraphRAG支持通过Python模块直接运行索引构建和查询:
- 10. 示例问题和回答。
0. 简介
Microsoft的GraphRAG是一种结合了知识图谱(Knowledge Graph)和检索增强生成(RAG)技术的先进框架,旨在提升大型语言模型(LLM)在处理复杂问题时的性能。详细内容和深入学习可以参考github,项目地址:GitHub - microsoft/graphrag。
以下是其核心特点和功能:
(1)技术原理
GraphRAG通过从非结构化文本中提取实体和关系,构建知识图谱,并利用社区检测算法(如Leiden算法)将图谱划分为模块化社区。每个社区生成摘要,增强模型对全局数据的理解。其流程分为两阶段:
- 索引阶段:拆分文本、提取实体关系、构建图谱、生成社区摘要。
- 查询阶段:支持Local模式(具体事实查询)和Global模式(全局概要性问题)。
(2)优势
- 全局理解:相比传统RAG依赖局部文本片段,GraphRAG通过图谱关联隐性信息,显著提升复杂查询的准确性。
- 高效低成本:后续优化的Fast-GraphRAG版本成本降低6倍,准确率提升20%。
- 多领域适用:适用于私有数据分析、新闻摘要、学术研究等场景。
(3)开源与演进
- 微软于2024年7月开源GraphRAG,并持续迭代(如LazyGraphRAG降低索引成本1000倍)。
本文是结合培训课程的讲义和自己的实操,记录整个下载安装GraphRag,初始化项目,并训练GraphRag 阅读三国演义,然后完成global和local两种询问回答方式。其中购买了OpenAI的国内跳板的Key。
从结果来看,虽然询问Deepseek或其他通用LLM得到的有关三国的相关问题,得到的答案可能比GraphRag只从阅读的三国演义来回答问题效果要好,但可以想象,如果回答一个企业或者一个单位独有的知识,那么通用大模型是无法很有针对性地回答的。而其他的RAG可能会通过分片文档的相似性,或者先通过主题词方式锁定问题范围再扩展内容,或者通过扩写问题缩写文档等方式增强问题回答的有效性,但可能都***难以和GraphRag的效果相匹配***。因为GraphRag建立的是***知识图谱***的形式,可以通俗理解为***脑图***,而***脑图也正是我在自学中特别喜欢用的的一种由简而繁掌握知识的高效方法***。
1. 下载graphrag.git
D:\\cursorprj git clone git@github.com:microsoft/graphrag.gitD:\\cursorprj cd graphrag
2.安装 poetry
D:\\cursorprj\\graphrag>pip install poetryD:\\cursorprj\\graphrag>poetry installInstalling dependencies from lock filePackage operations: 224 installs, 0 updates, 0 removals - Installing rpds-py (0.23.1) - Installing typing-extensions (4.12.2)... - Installing update-toml (0.2.1) Installing the current project: graphrag (2.1.0)
3.初始化项目:建立cases目录
D:\\cursorprj\\graphrag>poetry run graphrag init --root casesInitializing project at D:\\cursorprj\\graphrag\\cases⠋ GraphRAG IndexerD:\\cursorprj\\graphrag>cd casesD:\\cursorprj\\graphrag\\cases>dir 驱动器 D 中的卷没有标签。 卷的序列号是 8C12-4143 D:\\cursorprj\\graphrag\\cases 的目录2025-04-25 22:37 <DIR> .2025-04-25 22:37 <DIR> ..2025-04-25 22:37 27 .env2025-04-25 22:37 <DIR> prompts2025-04-25 22:37 5,251 settings.yaml 2 个文件 5,278 字节 3 个目录 51,580,456,960 可用字节
4. 修改.env
GRAPHRAG_API_KEY=hk-xxxxx # 替换为中转服务提供的Key
5.修改settings.yaml,将两处 api_base改成中转站地址:
models: default_chat_model: type: openai_chat # or azure_openai_chat api_base: \"OpenAI 中转站地址\" # api_version: 2024-05-01-preview auth_type: api_key # or azure_managed_identity api_key: ${ GRAPHRAG_API_KEY} # set this in the generated .env file # audience: \"https://cognitiveservices.azure.com/.default\" # organization: # model: gpt-4-turbo-preview model: gpt-4o-mini # deployment_name: # encoding_model: cl100k_base # automatically set by tiktoken if left undefined model_supports_json: true # recommended if this is available for your model. concurrent_requests: 25 # max number of simultaneous LLM requests allowed async_mode: threaded # or asyncio retry_strategy: native max_retries: -1 # set to -1 for dynamic retry logic (most optimal setting based on server response) tokens_per_minute: 0 # set to 0 to disable rate limiting requests_per_minute: 0 # set to 0 to disable rate limiting default_embedding_model: type: openai_embedding # or azure_openai_embedding # api_base: https://.openai.azure.com api_base: \"OpenAI 中转站地址\" # api_version: 2024-05-01-preview auth_type: api_key # or azure_managed_identity api_key: ${ GRAPHRAG_API_KEY} # audience: \"https://cognitiveservices.azure.com/.default\" # organization: model: text-embedding-3-small # deployment_name: # encoding_model: cl100k_base # automatically set by tiktoken if left undefined model_supports_json: true # recommended if this is available for your model. concurrent_requests: 25 # max number of simultaneous LLM requests allowed async_mode: threaded # or asyncio retry_strategy: native max_retries: -1 # set to -1 for dynamic retry logic (most optimal setting based on server response) tokens_per_minute: 0 # set to 0 to disable rate limiting requests_per_minute: 0 # set to 0 to disable rate limiting
6.cases下面建目录input,把三国演义.txt拖进case/input
7. 建索引:
D:\\cursorprj\\graphrag>poetry run graphrag index --root casesLogging enabled at D:\\cursorprj\\graphrag\\cases\\logs\\indexing-engine.log🚀 LLM Config Params Validated🚀 Embedding LLM Config Params ValidatedRunning standard indexing.🚀 create_base_text_units id ... n_tokens0 cf02da1c2dc3c912808ff082b27eb6728fb211e39442fb... ... 12001 937cd55bcc1b76580843225b204fa453e57e3347b0d9c2... ... 12002 536980b29828e270a099e329c2c29978c897fa0c1c461b... ... 12003 39e923690ff066188deb51a821f8cc333ea2639e7ea96c... ... 12004 09d9eea253b643a45386aa85219da4a3eeb9d7fc2a0aa7... ... 1200.. ... ... .