GraphRAG 真能取代传统 RAG 吗?从微软、斯坦福到 Anthropic,看懂知识图谱工程

导读
传统 RAG 擅长从文档中找局部片段,但面对“多个实体之间有什么关系”“整个资料库有哪些主题”“一连串因果是怎么形成的”这类复杂问题时,容易只找到关键词,找不到关系。本文基于 X Article《Graph Engineering replaced RAG at Microsoft, Stanford and Anthropic. Here's how it works.》,拆解 GraphRAG、DSPy、STORM、关系记忆和 MCP 的连接,同时对原文中的评测数字、案例数据和“取代 RAG”这一表述做事实边界说明。

🧭 先说结论:GraphRAG 不是“更大的向量数据库”

传统 RAG 的基本思路是:

用户提问
   ↓
把问题转成向量
   ↓
从文档片段中检索相似内容
   ↓
把片段交给大模型生成答案

它对于局部问题非常有效,例如:

  • “这份合同的付款期限是多少?”

  • “产品手册中如何配置这个参数?”

  • “某个项目使用了哪种数据库?”

但当问题从“找一段话”变成“理解一组关系”,传统 RAG 就可能遇到瓶颈。

比如:

为什么我们三月份的产品销量下降?

普通 RAG 可能找到包含“销量”和“三月”的文档片段,却未必能自动串起:

供应商延迟
   ↓
关键零件缺货
   ↓
交付周期变长
   ↓
客户取消订单
   ↓
三月销量下降

它找到的是文本碎片,GraphRAG 试图找到的是实体、关系和因果链

不过,“Graph Engineering 取代 RAG”更适合作为原文作者的标题化表达,而不是严格的技术结论。GraphRAG 并没有让向量检索失去价值;更准确的理解是:它把传统 RAG 从文本片段检索扩展到了关系检索和全局分析。

🔍 为什么普通 RAG 会在复杂问题上遇到天花板?

传统 RAG 的优势正是它的局限:它非常擅长局部相似度。

问题中的关键词如果与某些文档片段相似,系统就会把这些片段取回来。但复杂问题往往不是关键词问题,而是关系问题:

  • 谁影响了谁?

  • 哪些事件属于同一条链路?

  • 多份文档之间是否存在矛盾?

  • 一个实体在不同时间发生了什么变化?

  • 整个资料库反复出现哪些主题?

如果知识只保留成孤立文本块,模型就必须在生成答案时自己推断这些关系。

这会带来三种风险:

  1. 相关片段没有同时被检索出来;

  2. 片段之间的关系没有被明确表达;

  3. 模型需要在上下文中临时重建知识结构。

GraphRAG 的思路,是在检索前增加一层知识建模:从文本中抽取实体、关系、事件和社区,再把它们组织成图。

图:原文示意图,普通 RAG 主要找文本片段,GraphRAG 进一步处理实体之间的关系。

🕸️ GraphRAG 的基本工作流

一个典型 GraphRAG 系统大致包括以下步骤:

1. 文档切分

把长文档拆成适合处理的文本单元,同时保留章节、来源、时间和权限等元数据。

2. 实体抽取

识别人、公司、产品、地点、事件、指标和其他关键对象。

3. 关系抽取

判断实体之间存在什么关系,例如:

  • 属于;

  • 依赖;

  • 导致;

  • 竞争;

  • 替代;

  • 发生于;

  • 引用;

  • 负责。

4. 图构建

将实体作为节点,将关系作为边,形成知识图谱。

5. 社区发现

在大型图中识别高度关联的实体群,形成主题社区或局部知识簇。

6. 图查询与检索

问题进入系统后,可以从局部实体关系出发,也可以从整个知识图谱的社区摘要出发,回答局部问题或全局问题。

7. 生成答案

大模型不再只看到几段相似文本,也可以看到实体关系、路径、社区摘要和证据来源。

可以把它概括为:

非结构化文本
   ↓
实体 + 关系 + 社区
   ↓
局部查询 / 全局查询
   ↓
带证据的答案

🏢 Microsoft GraphRAG:局部问题和全局问题都要处理

Microsoft 开源的 GraphRAG[1] 是目前最有代表性的实践之一。

传统 RAG 更擅长回答局部问题:

关于某个具体实体,文档里有什么信息?

GraphRAG 还试图回答全局问题:

整个资料库的主要主题是什么? 这 10,000 份文档中有哪些反复出现的模式? 不同实体之间形成了哪些群体和关系?

这类问题难以依靠一次相似度检索解决,因为答案不是集中在某一个段落里,而是分散在多个文档、多个实体和多条关系中。

GraphRAG 常见的两种思路是:

  • Local Search:围绕某个实体和它的邻居展开检索;

  • Global Search:先利用图社区摘要,再对整个知识库进行主题级分析。

例如,在企业知识库里:

  • “某个客户有哪些未解决工单?”属于局部问题;

  • “最近三个月客户投诉最集中的根因是什么?”更接近全局问题。

关于 18% 和 85% 这两个数字

原文提到 GraphRAG 在特定研究中实现:

  • 准确率提升 18%;

  • 成本降低 85%。

但这两个数字不能直接写成“GraphRAG 普遍比传统 RAG 准确 18%、便宜 85%”。原文同时指向了一个具体的 ChatP&ID 研究场景,论文链接为:

ChatP&ID:arXiv:2603.22528[2]

更准确的表述是:在特定工业工程图和问答任务中,研究者报告了上述改进;换到其他数据集、模型、图构建成本和查询类型时,结果可能不同。

GraphRAG 还会产生新的成本:

  • 实体和关系抽取需要模型调用;

  • 图谱需要清洗、去重和更新;

  • 社区摘要需要重新生成;

  • 数据变化后需要增量维护;

  • 图查询和权限过滤需要工程支持。

所以不能只比较在线回答成本,还要计算离线建图和维护成本。

🧪 Stanford DSPy:模型只是图上的一个节点

原文把 Stanford NLP 的 DSPy[3] 与 Graph Engineering 联系起来,关键不是 DSPy 本身就是知识图谱系统,而是它提供了一个重要的系统观:

大模型不是整个 AI 系统,而是流程中的一个模块。

DSPy 可以把 AI Pipeline 表达为多个模块的组合:

检索模块
   ↓
推理模块
   ↓
工具调用
   ↓
评估模块
   ↓
优化和反馈

在这种结构里,模型只是某个节点。系统最终效果还取决于:

  • 上下文如何进入;

  • 检索结果如何过滤;

  • 什么时候调用工具;

  • 失败时如何反馈;

  • 评估器如何判断成功;

  • 哪些参数需要自动优化。

这和 GraphRAG 的联系是:

  • GraphRAG 关注的是知识本身的关系图

  • DSPy 关注的是推理流程和模块的结构图

图:原文展示的 DSPy/模块化 Pipeline 示意。

二者都在做同一件事:把“一个模型回答一切”的幻想拆掉,变成多个可以观察、组合和优化的组件。

📚 Stanford STORM:先构建研究图,再开始写作

Stanford 的 STORM[4] 进一步展示了复杂研究任务如何结构化。

它不是直接让模型“写一篇文章”,而是把研究过程拆成连续步骤:

  1. 明确主题;

  2. 规划研究角度;

  3. 收集来源;

  4. 组织证据;

  5. 搭建大纲;

  6. 生成初稿;

  7. 核查事实;

  8. 修改和完善。

每一步都受到前一步发现的实体、观点和关系影响。

这就是一种“研究图”:

研究问题
   ↓
来源节点
   ↓
事实与观点
   ↓
主题社区
   ↓
文章结构
   ↓
验证和修订

原文认为,STORM 所代表的共同洞察是:复杂任务需要一组连接起来的步骤,而不是一次模型调用。

这里的“Graph”不一定意味着所有节点都要存进 Neo4j,也不一定要构建一张完美的知识图谱。它更重要的意义是:让任务之间的依赖和证据流动显式化。

📈 “更大的模型”不一定胜过“更好的图”

原文还引用了一篇比较多个开源模型的知识图谱工程论文,并总结出一句很有传播力的话:

正确的图,可能胜过更大的模型。

这句话不能理解成模型大小不重要,而是说,在关系密集型任务中,模型并不应该独自承担所有关系推断。

如果系统已经明确告诉模型:

实体 A → 导致 → 事件 B
实体 B → 发生于 → 时间 C
事件 B → 影响 → 指标 D

模型就不必从十几篇文档里临时猜测这些关系。

这也解释了为什么知识图谱可能降低逻辑错误:它把关系从隐含信息变成显式结构,让模型更多地“查询关系”,而不是仅靠语言概率推断关系。

但这条路线的难点也很明显:如果图谱本身抽错关系、遗漏实体、时间过期或把不同对象错误合并,模型得到的结构化信息反而可能让错误更稳定。

图:原文展示的关系结构如何辅助模型处理复杂知识。

因此,Graph Engineering 不是“把文本变成图就结束”,而是需要持续做好:

  • 抽取质量;

  • 实体消歧;

  • 关系置信度;

  • 来源追溯;

  • 时间更新;

  • 冲突处理;

  • 权限隔离。

🧠 关系记忆:模型为什么需要显式结构?

原文引用了 MIT Press 的关系记忆研究,核心解释是:当语言模型连接到一个保存关系的结构化记忆,而不是只接收文本块时,它更容易生成连贯内容,也更少出现逻辑错误。

原因可以简单理解为:

只有文本:模型需要自己推断关系
有关系图:模型可以直接读取关系

这对以下任务尤其重要:

  • 企业股权和组织关系;

  • 供应链追踪;

  • 软件依赖分析;

  • 科研文献关系;

  • 医疗实体和病历事件;

  • 法律案件、人物和时间线;

  • 多项目、多团队的工程协作。

不过知识图谱不是事实的自动保险箱。图谱中的每一条边都应该尽量保留来源和置信度,否则“结构化错误”可能比“文本中的模糊错误”更难发现。

🔗 Anthropic:不是推出了 Graph Engineering 产品

原文说 Microsoft、Stanford 和 Anthropic 都转向了 Graph Engineering,但这里需要做一个重要澄清:Anthropic 并没有推出一个名为“Graph Engineering”的官方产品或统一框架。

更准确的说法是,Anthropic 的一些案例和开发工具可以与图结构结合:

第一层:Claude 从文本中抽取图

Claude 可以辅助完成:

  • 实体抽取;

  • 关系抽取;

  • 去重;

  • 规范化;

  • 本体草案生成。

过去这些工作往往需要专门的 NLP Pipeline,现在可以用模型完成相当一部分初始处理,但仍然需要验证和质量控制。

第二层:Claude 查询图

Claude 可以把自然语言转换成图查询,访问 Neo4j 或其他图数据库,再把结果解释给用户。

用户不必掌握 Cypher 等查询语言,但系统仍应保留查询日志、权限和来源链路。

第三层:MCP 连接 Claude 与图

MCP[5] 可以充当工具连接层,让 Claude 在授权范围内访问知识图谱和其他数据源。

这三层组合起来,形成的是:

Claude:抽取和解释
知识图谱:保存实体与关系
Graph Database:执行查询
MCP:提供工具连接

它不是“Graph Engineering 已经取代 RAG”,而是说明未来的 AI 系统可能同时使用:

  • 文本检索;

  • 向量数据库;

  • 知识图谱;

  • 关系数据库;

  • 工具协议;

  • 外部验证器。

⚖️ GraphRAG 什么时候值得用?

GraphRAG 并不适合所有知识库。

更适合的场景

  • 问题需要跨文档关联;

  • 资料库中实体和关系很多;

  • 用户经常提出全局分析问题;

  • 事实之间有时间、因果和层级关系;

  • 需要解释“为什么得出这个结论”;

  • 结果需要追踪来源和证据路径。

例如:

  • 投资尽调;

  • 企业销售情报;

  • 供应链分析;

  • 工程故障诊断;

  • 科研文献综述;

  • 法律案件分析;

  • 个人知识库和研究助手。

不一定值得用的场景

  • 文档很少;

  • 问题大多是单文档事实查找;

  • 数据变化极快,无法维护图谱;

  • 建图成本高于回答收益;

  • 用户只需要简单 FAQ;

  • 权限边界还没有设计好。

如果用户问的是“退款期限是多少”,普通 RAG 可能已经足够。为了回答一个简单字段问题,提前建立复杂图谱,反而属于过度工程化。

💼 知识图谱上可以构建什么业务?

原文列举了几类商业方向。它们的共同点是:客户愿意为“关系洞察”付费,而不仅仅是为文档搜索付费。

1. 尽职调查平台

服务投资基金、律所、银行和并购顾问,把企业、人物、股权、诉讼、供应链和财务信息连接起来。

2. 销售情报

连接公司、联系人、项目、合同、产品和沟通记录,帮助销售团队判断客户关系和下一步机会。

3. 工程情报

连接代码、工单、发布记录、事故、会议和项目管理工具,定位变更与故障之间的关系。

4. 研究情报

连接论文、作者、方法、数据集、机构和引用关系,帮助研究人员发现趋势和研究空白。

5. 个人知识操作系统

把个人笔记、邮件、项目、书籍和对话连接起来,让 AI 不只是搜索片段,而是理解长期知识关系。

这些方向都需要注意隐私和权限。知识图谱越完整,潜在价值越高;但一旦权限设计错误,泄露的也不再是某一份文档,而可能是一整张关系网络。

🧩 Graph Engineering 与普通 RAG 如何组合?

更现实的架构不是抛弃 RAG,而是根据问题类型选择检索方式:

用户问题
   ↓
问题分类
   ├─ 单事实问题 → 向量 / 关键词检索
   ├─ 实体关系问题 → 图查询
   ├─ 全局主题问题 → 社区摘要
   ├─ 时间线问题 → 事件图 + 时间过滤
   └─ 复杂研究问题 → Graph + RAG + Agent

在实际系统中,可以同时保留:

  • 文本原文,用于引用和证据;

  • 向量索引,用于语义相似检索;

  • 图结构,用于实体和关系查询;

  • 关系数据库,用于精确字段过滤;

  • Agent 流程,用于多步骤推理和验证。

GraphRAG 的真正价值,不是把所有知识都图谱化,而是让系统知道:什么时候应该找文本,什么时候应该找关系,什么时候应该做全局聚合。

⚠️ 原文三个关键结论,需要怎样理解?

“Graph Engineering 替代了 RAG”

更准确:GraphRAG 扩展了传统 RAG,在关系和全局问题上提供了另一种检索路径。

“准确率提升 18%、成本降低 85%”

更准确:这是特定 ChatP&ID 工业工程场景的研究结果,不是对所有知识库和所有 GraphRAG 架构的普遍保证。

“三家机构独立得到同一个结论”

更准确:Microsoft、Stanford 和 Anthropic 的公开工具与研究都体现了“系统结构很重要”的方向,但它们的目标、数据、评测方法和产品形态不同,不能简单合并成一项统一实验结论。

🏁 最后的判断:模型记住文本,图谱保存关系

GraphRAG 最值得借鉴的地方,不是“再造一个更复杂的 RAG”,而是改变了知识系统的基本单位:

  • 传统 RAG 的基本单位是文本片段;

  • GraphRAG 的基本单位是实体、关系、事件和社区;

  • Agent 系统的基本单位是可执行步骤、状态和反馈。

三者结合起来,才可能形成真正面向复杂工作的 AI 系统:

文本提供证据
   ↓
图谱保存关系
   ↓
Agent 编排步骤
   ↓
模型完成理解和生成
   ↓
验证器检查结果

但这条路线绝不是低成本魔法。它需要更多工程设计,也会引入建图、更新、权限和错误传播问题。

所以,团队不应该因为 GraphRAG 热门,就把所有文档都强行转成知识图谱。更好的做法是先问:

  1. 用户的问题是否真的需要跨文档关系?

  2. 数据中的实体和关系是否稳定?

  3. 图谱维护成本是否值得?

  4. 是否能保留每条关系的来源?

  5. 能否对图谱错误进行审核和回溯?

  6. 普通 RAG 是否已经足够解决问题?

如果问题只是“找信息”,传统 RAG 依然高效;如果问题是“理解一组关系”,GraphRAG 才真正开始体现价值。

模型理解语言,图谱表达关系,工程系统决定两者如何协作。

引用文献

[1]GraphRAG: https://github.com/microsoft/graphrag

[2]ChatP&ID:arXiv:2603.22528: https://arxiv.org/abs/2603.22528

[3]DSPy: https://github.com/stanfordnlp/dspy

[4]STORM: https://github.com/stanford-oval/storm

[5]MCP: https://github.com/modelcontextprotocol

[6]https://x.com/sprytixl/status/2078778799064584535

转载原文:https://mp.weixin.qq.com/s/6-0r3fsf-Dv5t12biSQfRQ

分享协议:  CC BY 4.0

©2026 AI全书. 保留部分权利

    备案号: 浙ICP备06043869号-8