微软新一代 RAG:GraphRAG 实战指南
本月初,微软发布了基于知识图谱的检索增强生成(RAG)开源方案 GraphRAG。该项目上线后迅速获得广泛关注,旨在解决传统基于向量检索的 RAG 在大规模文档环境下的理解与总结问题。
核心原理
GraphRAG 通过构建知识图谱来增强大语言模型(LLM)的应答速度与品质。其核心实现步骤如下:
- 实体关系抽取:利用 LLM 从原始文档中抽取实体及其事件关系,构建结构化知识图谱。
- 社区摘要生成:为关系密切的实体群预生成社区摘要。在提问时,系统会检索相关社区摘要生成部分回应,最终汇总为完整答案。
相比传统向量检索,GraphRAG 能更好地处理跨文档的复杂推理和全局性问答。
环境准备
本项目基于 Python 构建,推荐使用 Python 3.11 版本以确保兼容性。
1. 克隆源码
为了方便修改调试,建议直接从 GitHub 拉取原始代码:
git clone https://github.com/microsoft/graphrag.git
cd graphrag
2. 安装依赖
项目使用 Poetry 进行依赖管理。请确保已安装 Poetry:
pip install poetry
poetry install
3. 初始化项目
执行以下命令初始化项目结构:
poetry run poe index --init --root .
初始化完成后,根目录将生成以下关键目录:
input:存放需要索引的文件(默认支持 txt,可在 settings.yaml 修改)。output:存储生成的图数据、总结及日志信息。prompts:存储默认的提示词文件(如 entity_extraction.txt 等)。cache:用于缓存提取结果,减少 LLM 调用开销。.env:包含环境变量,主要设置 GRAPHRAG_API_KEY。settings.yaml:核心配置文件。
配置文件详解
GraphRAG 基于 OpenAI SDK 协议构建。国内用户可使用兼容该协议的模型(如通义千问、月之暗面等)替代 OpenAI。
1. LLM 配置
在 settings.yaml 中配置 LLM 参数。以通义千问为例,需注意以下限制:
top_p:必须设置在 0-1 之间(如 0.99)。max_tokens:建议设置为 2000,超过可能报错。model:建议使用 qwen-turbo,避免使用 qwen-long 以防输入过长导致错误。
llm:
api_key: YOUR_API_KEY
type: openai_chat
model: gpt-4-turbo-preview # 或对应兼容模型名称


