GraphRAG简介

引言

最近因为团队有 GraphRAG 的需求,一直在调研这方面相关的工作。其实很早就了解以及折腾过这个领域中的鼻祖:微软的GraphRAG,至今依然很经典,但是当时也是浅尝辄止,没有好好深入了解。这次也是想借此机会好好整理下 GraphRAG 的技术内容,温故而知新,并且研究一些这方面做得比较好的开源项目,了解下目前这块的进展,后续慢慢更新。

GraphRAG 是什么?

GraphRAG是一种结构化、分层的检索增强生成(RAG)方法,与使用纯文本片段的简单语义搜索方法不同。GraphRAG流程包括从原始文本中提取知识图谱、构建社区层次结构、为这些社区生成摘要,然后在执行基于RAG的任务时利用这些结构。

简而言之,可以理解为将我们平常所熟知的 RAG(这里我们称之为 Naive RAG)中所使用的向量数据库替换为知识图谱,在 R(etrieve) 阶段,从知识图谱中检索相关信息,而不是像原来一样,基于向量相似度从向量数据库中检索相关文本块。

GraphRAG 解决的问题

既然在这之前已经有了 Naive RAG(使用向量相似度作为检索技术),为何还需要 GraphRAG 呢?GraphRAG 到底解决了什么问题或者痛点呢?这就得提到 Naive RAG 表现比较差的两个场景了:

  • "连接点"难题:当答案需整合多个分散信息片段时(也就是熟知的多跳问题),Naive RAG 通常表现很差
  • 全局语义理解:当需要从大量数据集甚至单个大型文档中整体理解抽象、全局的语义概念时,Naive RAG 的效果也很差。

Naive RAG 在这两类问题上表现不佳,其根本原因在于它的检索机制本质是扁平的、局部的、基于向量相似性匹配的检索,缺乏对信息之间结构化关系和整体语义组织的建模能力。GrapRAG 则是为了解决这些问题而设计的,其通过构建知识图谱,创建了实体之间的关联关系和结构化信息,再加上对知识图谱进行社区检测操作、输出社区报告和摘要,实现了对全局信息和整体文档的更好的理解,因此能在这两类问题上有不错的表现。下面简单举例说明下这两个问题。

问题举例说明

假设你有一个包含 5,000 篇科技新闻、产品评测、供应链报告和专利文档 的私有知识库,内容涵盖 2020--2025 年华为手机相关动态。

这些文档分散提及以下信息:

  • 文档 A(2023年供应链报告):

    "中芯国际已为华为提供 7nm 芯片代工服务,用于新款旗舰手机。"

  • 文档 B(2024年发布会新闻稿):

    "华为 Mate 60 Pro 搭载麒麟 9000S 芯片,支持 5G。"

  • 文档 C(行业分析文章):

    "麒麟 9000S 是华为自研 SoC,由中芯国际代工,采用 N+2 工艺(等效 7nm)。"

  • 文档 D(用户论坛摘要):

    "Mate 60 系列是华为自 2019 年后首次在旗舰机上恢复 5G 功能。"

  • 文档 E(专利数据库):

    "华为于 2022 年申请了射频前端模组专利,用于绕过美国 5G 射频限制。"

多跳问题

用户问题:

"华为是如何在被制裁的情况下让 Mate 60 Pro 支持 5G 的?"

这个问题的答案分散在多个文档中,没有任何一篇完整说明整个技术路径。

Naive RAG 效果
  • 检索系统根据"华为 Mate 60 Pro 5G 制裁"生成嵌入,返回最相似的几个文本块。
  • 可能命中:
    • 文档 B:"Mate 60 Pro 支持 5G。"
    • 文档 D:"Mate 60 是 2019 年后首款 5G 华为手机。"
  • 无法召回关于芯片代工(文档 A/C)或射频专利(文档 E)的内容,因为它们不包含"Mate 60 Pro"或"5G"等关键词组合。
  • 生成结果 : "华为 Mate 60 Pro 支持 5G,这是自 2019 年以来的首次回归。"

    未回答"如何实现",缺失核心技术路径。

GraphRAG 效果
  • 离线阶段构建知识图谱,识别关键实体与关系:
    • 实体:华为Mate 60 Pro麒麟 9000S中芯国际5G射频专利
    • 关系:
      • Mate 60 Pro ---搭载→ 麒麟 9000S
      • 麒麟 9000S ---由→ 中芯国际 代工
      • 中芯国际 ---提供→ 7nm 工艺
      • 华为 ---拥有→ 射频前端专利
      • 射频专利 ---用于→ 绕过 5G 限制
  • 查询时,系统围绕"Mate 60 Pro"和"5G"展开局部图遍历,聚合所有关联路径。
  • 生成结果 : "华为通过三方面突破实现 Mate 60 Pro 的 5G 功能:(1) 自研麒麟 9000S 芯片;(2) 由中芯国际使用 7nm 级工艺代工;(3) 应用其 2022 年申请的射频前端专利,规避美国对 5G 射频组件的限制。"

    完整还原技术逻辑链,实现多跳推理。

全局语义理解问题

用户问题:

"过去五年,华为手机业务的战略重心发生了哪些变化?"

这是一个宏观、抽象、需要整体洞察的问题。

Naive RAG 效果
  • 检索"华为 手机 战略 五年 变化",可能返回几篇标题含"战略"的文章片段。
  • 结果可能包括:
    • 2021年:"华为聚焦软件生态(鸿蒙)"
    • 2023年:"回归硬件,发布 Mate 50"
    • 2024年:"Mate 60 Pro 支持 5G"
  • 但这些片段孤立、无组织,LLM 很难从中提炼出清晰演进脉络。
  • 生成结果 : "华为这几年发布了鸿蒙系统,后来又出了新手机,最近还支持 5G 了......"

    零散、缺乏结构、无深度洞察

GraphRAG 效果
  • 图谱构建后,通过社区检测(Leiden 算法)发现多个主题社区:
    • 社区1(2020--2021) :以"鸿蒙 OS""HMS 生态""剥离荣耀"为核心 → 软件求生期
    • 社区2(2022--2023) :聚焦"4G 旗舰回归""卫星通信""国产供应链" → 硬件重建期
    • 社区3(2024--2025) :关键词"5G 回归""自研芯片量产""高端市场反攻" → 技术突围期
  • 每个社区已有预生成的摘要。
  • 生成结果 : "华为手机战略经历了三个阶段:(1) 生存转型期 (2020--2021):转向鸿蒙生态,剥离荣耀以保核心;(2) 能力重建期 (2022--2023):在无 5G 条件下推出卫星通信等创新功能;(3) 技术反攻期 (2024 起):通过自研芯片与国产代工实现 5G 回归,重夺高端市场。"

    结构清晰、时间有序、洞察深刻

问题总结与对比

其实除了上述提到的两个主要的问题,还有一些在 Naive RAG 上表现比较差的问题,在这里与之前的问题一起,包括 GraphRAG 如何相应地解决这些问题,整理在下面的表格:

痛点 Naive RAG 的表现 GraphRAG 如何解决
1. 无法进行多跳推理(Multi-hop Reasoning) (即"连接点"问题) 只能检索与查询字面最相似的片段,无法将分散在不同文档中的实体/事实关联起来。例如:"A 和 C 有什么关系?"但 A→B→C 的路径分布在三篇文档中 → RAG 找不到答案。 通过知识图谱显式建模实体间关系,支持图遍历(如 A → B → C),实现跨文档多跳推理。
2. 缺乏全局语义理解能力 每次只看局部 top-k 文本块,无法把握整个语料库的主题结构、趋势或宏观模式。回答"整体上讲了什么?"这类问题效果差。 利用社区检测(如 Leiden 算法)对图谱聚类,生成分层社区摘要,支持"Global Search"回答全局性问题。
3. 对模糊/抽象/高层次问题响应弱 查询如"主要风险有哪些?""核心争议是什么?"缺乏关键词匹配,检索结果噪声大或不相关。 ✅ 社区摘要天然包含高层次语义(如"该社区聚焦数据隐私与模型偏见"),可直接用于回答抽象问题。
4. 重复信息冗余,缺乏去重与整合 多篇文档可能重复提及同一事实,RAG 会多次检索相似片段,导致 LLM 输入冗长、矛盾或低效。 ✅ 图谱将相同实体/关系归一化,天然去重;社区摘要自动融合多源信息,输出更简洁一致。
5. 难以解释答案来源 虽可引用检索段落,但无法说明"为什么这些段落相关"或"逻辑链如何形成"。 ✅ 图结构提供可追溯的推理路径(如实体 A → 关系 R → 实体 B),增强可解释性与可信度。
6. 对私有/专业领域术语理解浅层 向量嵌入可能无法准确捕捉领域内细微语义(如同义词、缩写、隐含关系)。 ✅ 在图构建阶段可通过定制化 NER 和关系抽取(如用领域 LLM 提示工程)显式捕获专业语义,提升准确性。

Reference

https://weaviate.io/blog/introduction-to-rag

https://microsoft.github.io/graphrag/

相关推荐
NAGNIP5 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab6 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab6 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP10 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年10 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼10 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS10 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
warm3snow10 小时前
Claude Code 黑客马拉松:5 个获奖项目,没有一个是"纯码农"做的
ai·大模型·llm·agent·skill·mcp
天翼云开发者社区11 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈11 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能