
🧠 图解记忆: 向量 RAG 找“像的片段”,GraphRAG 找“有关联的事实链”;简单事实与多跳关系应走不同路径。
💡 答案要点
传统向量 RAG 的问题:
用户问题:"苹果公司CEO都做了哪些环保措施?"
向量检索:找与"苹果CEO环保"语义最相似的文档
→ 可能返回多篇关于Tim Cook、环保政策、苹果公司的独立文章
→ 难以关联"CEO"和"环保措施"之间的关系
→ 无法回答需要多跳推理的问题GraphRAG 解决方案:
python
# 知识图谱结构:
# (苹果公司) --[CEO]--> (Tim Cook) --[推动]--> (环保政策)
# (苹果公司) --[总部]--> (加州) --[气候]--> (清洁能源)
# 用户问题 → 拆解为子问题:
# 1. Tim Cook是谁?→ (苹果公司CEO)
# 2. 他推动了哪些环保措施?→ 查询 (Tim Cook) --[推动]--> (?)
# GraphRAG 返回的不是文档,而是知识图谱子图
subgraph = {
"nodes": ["Tim Cook", "苹果公司", "环保措施A", "环保措施B"],
"edges": [
("Tim Cook", "CEO", "苹果公司"),
("Tim Cook", "推动", "环保措施A"),
("Tim Cook", "推动", "环保措施B")
]
}GraphRAG vs 向量 RAG 对比:
| 维度 | 向量 RAG | GraphRAG |
|---|---|---|
| 检索单元 | 文档片段 | 知识图谱子图 |
| 关系理解 | ❌ 弱(靠语义相似) | ✅ 强(图结构显式关系) |
| 多跳推理 | ❌ 差(一跳问询) | ✅ 好(多跳关联) |
| 复杂问题 | 一般 | ✅ 优秀(理解问题结构) |
| 实现复杂度 | 低 | 高(需要构建知识图谱) |
| 构建成本 | 低(直接切分文档) | 高(需要NLP提取实体关系) |
GraphRAG 适用场景:
| 场景 | 向量 RAG | GraphRAG |
|---|---|---|
| "查找苹果公司的环保报告" | ✅ | ✅ |
| "Tim Cook 推动了什么环保政策?" | ✅ | ✅ |
| "苹果公司CEO和谷歌CEO谁更关注环保?" | ❌ | ✅ |
| "过去5年科技公司CEO环保措施对比" | ❌ | ✅ |
面试话术:
"GraphRAG 的核心是知识图谱——把文档里的实体(人物、公司、地点)和关系(CEO、推动、合作)抽出来构成图。检索时不是找相似文档,而是找图里的子路径。比如问'苹果和谷歌CEO的环保对比',向量 RAG 只能各自召回文章,GraphRAG 能关联出两个人的具体环保举措。缺点是构建成本高,需要 NLP 提取实体关系。"
📚 参考:Microsoft GraphRAG 官方项目(原论文:From Local to Global) · GraphRAG 论文:Unlocking LLM Discovery on Narrative Private Data