30秒快速回答: GraphRAG = Graph(知识图谱)+ RAG(检索增强生成)。传统 RAG 是把文档切块后做相似度检索,但遇到”张三是李四的上司,李四管哪个部门?”这种需要推理关系的问题就抓瞎。GraphRAG 先自动从文档中提取实体和关系,构建一个知识图谱,然后用社区检测算法做结构化检索——既能回答”点在哪儿”的精确问题,也能做”全局摘要”式的宏观总结。
一、定义:RAG vs GraphRAG
传统 RAG 的局限
| 问题 | 原因 |
|---|---|
| 多跳推理失败 | “A → B → C” 的关联跨越多个文档块 |
| 全局理解缺失 | 只能看局部片段,无法总结”整个数据集在说什么” |
| 冗余与矛盾 | 不同来源的冲突信息无法消解 |
GraphRAG 的思路
把文档库转化为知识图谱:实体为节点,关系为边。检索不再只靠向量相似度,而是走图遍历、社区检索等多维路径。
二、原理:GraphRAG 怎么工作?
1. 核心流程(微软 GraphRAG)
阶段一:图构建
文档 → LLM 提取实体+关系 → 知识图谱(节点+边)
→ 社区检测(Leiden 算法)→ 生成社区摘要
阶段二:检索模式
┌─ Local Search(本地搜索):在某实体附近遍历图
├─ Global Search(全局搜索):查询社区摘要,做宏观回答
└─ Drift Search(漂移搜索):动态在图上游走扩展上下文
2. 社区检测的作用
把大图自动切分为紧密关联的社区(Community),每个社区生成一份摘要。当用户问宽泛问题时(”这个数据库整体讲了什么?”),直接检索社区摘要而非逐块匹配。
3. 与传统 RAG 的对比
| 维度 | 传统 RAG | GraphRAG |
|---|---|---|
| 检索单位 | 文档块 | 图节点/社区 |
| 多跳推理 | 弱 | 强 |
| 全局总结 | 不支持 | 原生支持 |
| 构建成本 | 低 | 较高(需 LLM 提取) |
| 适合场景 | 事实查询 | 分析/综述/关联 |
三、实操:快速上手 GraphRAG
步骤 1:安装
pip install graphrag
mkdir -p ./ragtest/input
步骤 2:放入文档
将你的 TXT/PDF/Markdown 文档放到 ragtest/input/ 目录。
步骤 3:初始化并配置
graphrag init --root ./ragtest
# 编辑 settings.yaml,填入 API Key
步骤 4:构建索引
graphrag index --root ./ragtest
# 会自动:分块 → 实体提取 → 图构建 → 社区检测 → 摘要生成
步骤 5:查询
# 全局查询
graphrag query --root ./ragtest --method global \
--query "这个数据集的核心主题是什么?"
# 本地查询
graphrag query --root ./ragtest --method local \
--query "张三和李四是什么关系?"
四、工具推荐表
| 工具 | 用途 | 价格 | 亮点 |
|---|---|---|---|
| msgraphrag | 微软官方 | 开源免费 | 社区检测 |
| Neo4j + LLM | 图数据库方案 | 有免费版 | 灵活可定制 |
| LangChain Graph | 图集成 | 开源免费 | 生态完善 |
| LlamaIndex KG | 知识图谱索引 | 开源免费 | 上手快 |
| LightRAG | 轻量方案 | 开源免费 | 构建快 |
五、FAQ 常见问题
Q1:GraphRAG 比传统 RAG 一定更好吗? 不是。简单事实查询(”合同金额是多少”)传统 RAG 更快更准。分析类、全局类、关联类任务 GraphRAG 有明显优势。
Q2:构建索引成本高吗? 高。每篇文档都要调 LLM 提取实体关系,大文档库成本不低。建议先用传统 RAG 做基础检索,再针对分析型场景引入 GraphRAG。
Q3:适合哪些场景? 企业知识库全局分析、科研文献综述、法律案例关联、金融研报解读。
Q4:和知识图谱本体(Ontology)有什么区别? 传统知识图谱是人工定义的 schema,GraphRAG 的图谱是 LLM 自动提取的,更灵活但结构化程度更低。
Q5:中文支持好吗? GraphRAG 默认用 GPT 系列,中文实体提取效果取决于模型。用 DeepSeek、通义千问等国产模型也能跑。
延伸阅读:什么是 AI 搜索? 了解 AI 搜索的基础——RAG 技术全貌。