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 技术全貌。