当前位置: 首页 > news >正文

GraphRAG 到底在干嘛?——微软这篇博客的深度拆解

原文:GraphRAG: Unlocking LLM discovery on narrative private data - Microsoft Research

微软 2024 年初发了一篇技术博客,核心就一句话:传统 RAG 在复杂数据面前不够用,GraphRAG 用知识图谱 + 图聚类补上了这块短板。

这不是学术论文,更像是一篇"技术安利文",目标读者是技术决策者和工程师。下面我把它拆开来聊。

传统 RAG 到底差在哪?

GraphRAG 要解决的问题,得先从传统 RAG 的痛点说起。文章指出了两个传统 RAG 搞不定的场景:

串不起来的信息

想象你问 AI:"Novorossiya 做了什么?"

传统 RAG 拿着"Novorossiya"这个词去做向量搜索,结果检索回来的 10 个文本片段里,没有一个直接提到这个名字——答案散落在不同的文档里,靠的是实体之间的间接关联才能拼出来。向量搜索只会找"长得像"的文本,这种需要"跳着找"的推理它做不了。

GraphRAG 就不一样了:它在知识图谱里找到 Novorossiya 这个节点,然后沿着关系边一路走下去——行动、目标、相关组织——最后把完整答案拼出来。

说白了,向量检索是"局部匹配",而真实世界的知识经常是通过实体关系链间接连起来的。

回答不了"大问题"

再比如你问:"这堆数据里排名前 5 的主题是什么?"

传统 RAG 傻眼了——"主题"这个词太泛了,向量搜索不知道该往哪个方向找,碰巧匹配到一些包含"主题"这个词的无关文本,答案自然跑偏。

这本质上是个粒度问题:向量 RAG 的检索单元是文本片段(chunk),但"整体主题"这种问题需要对整个数据集有宏观理解,任何单个 chunk 都撑不起这个回答。

GraphRAG 靠预先建好的社区聚类和社区摘要,直接从宏观结构里提取主题,轻松搞定。

GraphRAG 怎么干的?

整个流程分两个阶段:先离线建索引,再在线回答问题。

离线建索引:三步走

原始文档 │ ▼ ┌─────────────────────────────┐ │ Step 1: 实体和关系抽取 │ LLM 逐块处理文档,提取所有 │ (Entity & Relationship │ 实体(人、地、组织等)和 │ Extraction) │ 它们之间的关系 └─────────────────────────────┘ │ ▼ ┌─────────────────────────────┐ │ Step 2: 知识图谱构建 │ 将抽取的实体和关系组装成 │ (Knowledge Graph │ 一个完整的图结构 │ Construction) │ └─────────────────────────────┘ │ ▼ ┌─────────────────────────────┐ │ Step 3: 社区检测与摘要 │ 对图进行自底向上的层次聚类 │ (Community Detection │ (如 Leiden 算法),为每个 │ & Summarization) │ 社区生成 LLM 摘要报告 └─────────────────────────────┘

简单说就是:先让 LLM 把文档里的人、事、物和它们的关系都挖出来,拼成一张大图,然后对这张图做分群,给每个群写一份摘要。

在线回答:看问题类型选策略

问题类型怎么找答案
具体问题(如"Novorossiya 做了什么")在图里定位实体 → 沿关系遍历 → 收集相关文本 → 生成回答
宏观问题(如"前 5 个主题")直接用社区摘要 → 逐层聚合 → 生成全局回答

几个值得深挖的技术点

为什么用 LLM 建图,而不是传统 NLP?

传统做法是用 NER(命名实体识别)+ 关系抽取模型,但这些模型有硬伤:得预先定义好实体类型和关系类型,换个领域就不灵了,隐含关系更是抓不住。

LLM 的优势很明显: -零样本就能干活,不用为每个领域单独训练 -能读懂言外之意,比如从"总检察长办公室报告了 Novorossiya 的创建"里抽出"政府关注"这层隐含关系 -不受 schema 限制,实体和关系类型让 LLM 自己发现

当然代价也很直接:LLM 调用贵,索引阶段要处理整个数据集,计算开销不小。

社区检测——GraphRAG 的杀手锏

很多方法都会用知识图谱来增强 RAG,但 GraphRAG 真正独特的地方在于社区检测:

  • 用 Leiden 之类的算法把知识图谱切成多层次的社区(你可以理解为"话题群组")
  • 给每个社区预先生成一份 LLM 摘要报告
  • 不同层次的社区对应不同的抽象级别,回答问题时按需选粒度

这就是它能回答"大问题"的秘密——不用临时遍历整张图,直接查预先写好的摘要就行。

生成社区报告时,LLM 拿到的输入是该社区内实体和关系的 CSV 表:Entities 表(实体 ID、名称、描述)、Relationships 表(源、目标、描述、combined_degree)、以及可选的 Claims 表。关系按combined_degree降序排列,优先塞最重要的,token 超了就截断。

溯源——每句话都能查到出处

GraphRAG 特别强调溯源能力,整条证据链是这样的:

用户查询 → GraphRAG 回答 + [数据:实体 (ID), 关系 (ID)] → 关系 ID 指向知识图谱中的具体边 → 边关联到原始源文档的具体片段

回答 → 图里的实体/关系 → 原始文档,一路可追溯。对企业级应用来说,这个能力非常关键——你能验证 AI 说的每一句话。

实验是怎么做的?

数据集

用的是 VIINA 数据集(新闻文章暴力事件信息),选得很讲究:

  • 涉及多方冲突,信息碎片化,够复杂
  • 包含俄乌双方新闻源,观点对立,有矛盾信息
  • 2023 年 6 月的数据,确保不在 LLM 训练集里
  • 数千篇文章,远超上下文窗口,不用 RAG 没法处理

评估结果

用了四个指标来打分:

指标说的是啥怎么评
全面性答案完不完整LLM 评分器成对比较
人类赋权有没有给出处让你验证LLM 评分器成对比较
多样性有没有多角度回答LLM 评分器成对比较
忠实度有没有瞎编SelfCheckGPT 绝对测量

结果挺有意思:GraphRAG 在前三项上大幅领先传统 RAG,但忠实度上两者差不多。也就是说,GraphRAG 的提升主要在"找得更全",而不是"编得更少"。

别光看优点,局限也得知道

这毕竟是篇安利文,自然报喜不报忧。几个需要注意的坑:

索引成本高——每个文档块都要调 LLM 来抽实体和关系,大数据集可能要跑几小时甚至几天,用 GPT-4 级别的模型,API 费用相当可观。

增量更新是个难题——文章压根没提数据变了怎么办。实际上新增文档要重新抽取、合并,社区结构可能因此改变,得重新聚类、重新生成摘要,这在工程上还没有很好的解法。

抽取质量看 LLM 脸色——LLM 抽实体和关系不是百分百准的,可能漏掉隐含实体、搞错关系,不同模型的抽取质量差异也大,一致性难保证。

查询会慢一些——图遍历 + LLM 生成比简单的向量检索 + LLM 生成链路更长,延迟自然更高。

不是所有问题都需要它——文章自己也承认,简单的事实性查询(比如"什么是 Novorossiya"),传统 RAG 就够用了。GraphRAG 的优势集中在多跳推理和全局总结这两个场景。

打个比方帮你建立直觉

假设你是公司新人,想了解"最近三个月最重要的项目进展"。

传统 RAG 就像翻文件柜:你走到档案室,用"项目进展"当关键词去翻。找到几十份文件,散落在不同抽屉里——会议纪要、邮件、报告都有。你得自己把碎片拼起来。

GraphRAG 就像问一个什么都知道的老同事:他不仅读过所有文件,还记得"张三的 A 项目和李四的 B 项目其实有关联",知道"上个月的预算调整影响了三个部门"。他能直接给你一个有条理的完整回答。

传统 RAGGraphRAG
工作方式搜关键词,找相关段落先建关系网,再沿着关系回答
擅长的问题"X 是什么?""X 怎么做?""X 和 Y 有什么关系?""整体情况是什么?"
类比图书馆管理员帮你找书侦探帮你把线索串成完整故事
短板碎片化,缺全局视角建关系网需要时间和算力

最后划几个重点

  • GraphRAG 解决的不是"搜得更准"的问题,而是"搜的维度"的问题——从文本相似性扩展到了实体关系和全局结构。

  • 知识图谱是手段,社区聚类才是真正的创新——很多方法都用图增强 RAG,但社区检测 + 预摘要是 GraphRAG 解决全局查询的独门武器。

  • 溯源能力是信任的基础——每个断言都能追溯到原始文档,企业级应用离不开这个。

  • 代价是索引成本——用 LLM 处理全量数据建图谱,比简单向量化贵得多,落地时必须权衡。

  • 不是替代,是互补——复杂推理和全局分析用 GraphRAG,简单事实查询用传统 RAG,实际系统里两者结合才是正解。

http://www.jsqmd.com/news/751586/

相关文章:

  • Pocket P.C.开发套件交付与GNSS模块更换技术解析
  • 终极AI马赛克处理工具:3分钟学会智能隐私保护与图像修复
  • 市交通运输局:恩平市综合交通运输体系发展“十五五”规划 2026
  • RECALL方法解决大语言模型持续学习中的灾难性遗忘
  • 如何在3分钟内安全导出浏览器Cookie文件:Get cookies.txt LOCALLY终极指南
  • 告别VS Code调试C++时的‘退出代码-1’:一份针对gcc和gdb路径的避坑指南
  • 拆解TI AWR2944的DDMA黑科技:如何用4发4收实现9.5°高分辨率?
  • 从电视盒子到全能服务器:Armbian在Amlogic设备上的技术突破与实践
  • 2026年4月好用的码垛机批发厂家推荐,收缩包装机/低位码垛机/机械手码垛机/纸箱码垛机/全自动打包机,码垛机品牌哪家强 - 品牌推荐师
  • S32K3xx的CRC硬件加速到底有多快?实测对比软件CRC与查表法(附RTD-SDK代码)
  • 利用Taotoken模型广场为不同AI任务选择合适的模型
  • 手机号码定位神器:3分钟实现陌生来电地理位置可视化查询
  • 手把手调试:用逻辑分析仪抓SPI波形,根治FATFS在Flash上的FR_DISK_ERR故障
  • LyricsX:macOS桌面歌词显示的终极完整指南
  • 为无头AI编程助手构建人机交互桥:基于MCP与OpenClaw的异步决策方案
  • 3分钟掌握B站字幕下载:BiliBiliCCSubtitle完全指南
  • Flink SQL实战:5分钟搞懂时间区间关联(Interval Join)的四种玩法与避坑指南
  • 亨得利维修保养服务电话 400-901-0695 官方发布:为什么全国高端腕表用户只信赖这六城直营门店?(附七大实体地址与异地邮寄全攻略) - 时光修表匠
  • 终极指南:如何用Zotero文献格式化插件提升3倍文献管理效率
  • 植物大战僵尸宽屏适配终极指南:告别黑边,拥抱全景视野
  • 27_《智能体微服务架构企业级实战教程》Redis FastMCP服务之异步客户端封装
  • 解锁Honey Select 2完整潜力:HF Patch 200+插件整合包深度解析
  • 5分钟快速上手:音乐标签编辑器从零到精通的完整指南 [特殊字符]
  • 终极指南:在TX3 Mini电视盒上快速部署Armbian系统完整方案
  • 终极免费NCM音乐解锁工具:5分钟完全掌握ncmppGui
  • nodejs服务端应用无缝接入taotoken多模型api指南
  • 2026 阜阳黄金回收优选:金润阁回收线上线下双轨,全区域覆盖 - 福正美黄金回收
  • 3分钟快速部署:Perseus补丁全功能解锁指南
  • CroBo框架:全局-局部协同的视觉状态表示学习
  • ChatGPT、LangChain与Semantic Kernel:构建AI原生应用的核心工具链解析