news 2026/11/2 1:43:19

Graph-Engineering-第16章第76节-GraphRAG架构全解-当知识图谱遇见多Agent检索

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Graph-Engineering-第16章第76节-GraphRAG架构全解-当知识图谱遇见多Agent检索

GraphRAG架构全解:当知识图谱遇见多Agent检索

向量RAG能回答"第37条条款写了什么",回答不了"这份合同整体对谁不利"——全局理解、多跳推理、可解释性,这三样是GraphRAG的入场券

本文导航

  • 向量RAG的三块天花板
  • GraphRAG是什么:两步走的核心思想
  • 五层架构全景图
  • 数据说话:那70%的提升从哪来
  • 上手微软官方graphrag:CLI全流程
  • 成本账与选型:什么时候该上GraphRAG
  • 小结
  • 下节预告
  • 互动区

向量RAG的三块天花板

第15章讲完协议,这一章名字里带"Graph"的领域终于来了——GraphRAG,图增强检索。这门课讲到现在,"图"字出现两种含义:前面二十多章讲的是计算图(编排拓扑),这一章讲的是知识图(实体关系网络)。GraphRAG的精妙之处在于它把两者焊接在一起:用知识图谱存知识,用多Agent计算图来检索。

先立靶子。传统向量RAG(把文档切块、embedding、相似度检索、拼接上下文)在2023-2024年统治了整个市场,但用过的人都知道它有三块天花板:

第一块:全局理解缺失。问"这批投诉数据里用户最不满的三个主题是什么",向量检索会把最像这句话的碎片捞出来——但"最不满的主题"需要通读全部数据再归纳,碎片相似度回答不了归纳性问题。Embedding天然是局部视角。

**第二块:多跳推理断裂。**问"A公司的供应商的竞争对手是谁",答案链条是A→供应商→X→竞争对手→B,两跳。向量检索第一跳都未必准,因为"供应商关系"这种结构化事实淹没在文本相似度海里。我在第2章讲Context Rot时说过:模型记不住的,检索就得替它找到——但向量检索找的是"长得像的",不是"逻辑相连的"。

**第三块:不可解释。**向量RAG给你五个碎片,为什么是这五个?余弦相似度0.83对0.81的差别没有任何业务语义。法务、医疗场景里"依据是什么"是必答题,"距离相近"不是合格答案。


GraphRAG是什么:两步走的核心思想

GraphRAG(这里特指微软2024年4月论文《From Local to Global》提出、同年7月开源的方案,广义上已是一类技术)用两步走解决上面的天花板:

第一步(离线,贵):把语料构建成知识图谱+社区层级。用LLM从每个文本块里抽取实体(人、组织、事件……)和关系,织成一张图;再用社区检测算法(Leiden)把图中抱团的实体划成层级化社区(粗到细像行政区划:省→市→区县);然后给每个社区生成摘要。这一步的本质是:预先把"通读全文后的理解"物化存储下来。

第二步(在线,快):按问题类型选检索模式。具体问题走Local Search——找到问题里的实体,沿图扩展它的邻居和原文,拼上下文回答;全局问题走Global Search——不碰原文,直接Map-Reduce遍历社区摘要,每个社区给出带置信分的部分答案,再归并成总答案。

一句话对比:向量RAG检索的是"相似的碎片",GraphRAG检索的是"相连的结构+预消化的理解"。三块天花板逐一对应:社区摘要给全局理解,图遍历给多跳,实体路径给可解释性。


五层架构全景图

把GraphRAG系统拆成五层,这张图是本章三节的总纲:

① 语料层

② 语料处理层

③ 存储层

④ 索引层(离线编排)

⑤ 检索与合成层(在线)

查询分析Agent
判断Local还是Global

Local Search
实体邻域扩展

Global Search
社区摘要Map-Reduce

答案合成Agent
带引用组装

抽取Agent池
并行处理文本块

摘要Agent池
社区/实体描述

构建协调器
多Agent流水线

图存储:实体/关系/社区
Neo4j / parquet

向量库:文本块embedding

社区摘要表

分块chunking

向量化

原始文档
txt/md/pdf

两个层最值得停一下:

第④层是"多Agent流水线"——GraphRAG的开源实现里,构建阶段就是一个多Agent编排系统:成百上千个文本块并行分派给抽取Agent,实体合并后再分派给摘要Agent,社区检测后每个社区再要一轮摘要。这正是我们这门课的核心命题:多Agent图编排不只用于对话应用,知识工程本身就是图拓扑的重度用户。第77节我会手写这条流水线。

第⑤层的Local/Global双模式是GraphRAG的招牌设计,也是它作为"多Agent检索系统"的灵魂:Global Search的Map阶段天然是扇出拓扑(每个社区一个并行Agent),Reduce阶段是汇聚拓扑——第8章的Diamond结构在检索场景的标准应用。第78节专讲。


数据说话:那70%的提升从哪来

课程任务书里流传着"GraphRAG提升70%准确率"的说法,我把原始出处和口径讲清楚,免得以讹传讹。

微软论文及后续评估的两组关键数据:

  1. 人类评估胜率:在"综合性(comprehensiveness)、多样性(diversity)、赋能感(empowerment)"三个维度上,Global模式对比向量RAG基线,胜率在72%~83%区间(不同数据集/问题类型浮动)。注意这是偏好胜率,不是准确率。
  2. 多跳问题准确率:在需要跨文档推理的多跳问题上,多篇第三方复现报告GraphRAG相对强基线向量RAG的准确率提升幅度在50%~70%+(基线越强提升越小;基线是裸向量RAG时提升最猛)。"70%"这个数字来自这类实验里基线较弱的场景。

所以严谨的说法是:全局归纳类问题大幅胜出(胜率七成以上),多跳推理类问题提升五到七成,但单点事实类问题两者打平甚至向量RAG更快。我的实测也吻合:拿自家2万条客服工单跑双系统,"某工单怎么处理的"向量RAG完胜(0.8s vs 4s),"本季度投诉的根因主题分布"GraphRAG碾压(有结构有依据 vs 一堆碎片)。

问题类型向量RAGGraphRAG LocalGraphRAG Global
单点事实(某条款内容)★★★★★ 快★★★★★★ 杀鸡牛刀
多跳推理(A的对手的股东)★★★★★★★★★★
全局归纳(主要主题/趋势)★★ 碎片化★★★★★★★★
可解释性★ 余弦距离★★★★ 实体路径★★★★ 社区溯源
在线成本低中高(Map-Reduce)

上手微软官方graphrag:CLI全流程

理论到位,跑一遍官方实现。环境:Python 3.11+,uv pip install graphrag,需要GRAPHRAG_API_KEY环境变量(兼容任何OpenAI式端点,配GRAPHRAG_API_BASE可指向国内网关)。

# 1. 初始化工作区:生成 settings.yaml + prompts/ + input/$ uv run graphrag init--root./ragtest[INFO]Creating configurationfileat ./ragtest/settings.yaml[INFO]Creating prompts directory at ./ragtest/prompts[INFO]Creating input directory at ./ragtest/input# 2. 放入语料(纯文本,约1.2万token的行业研报若干篇)$cpresearch/*.txt ./ragtest/input/# 3. 建索引:抽取实体→织图→社区检测→社区摘要(离线,贵的一步)$ uv run graphrag index--root./ragtest

index是整条流水线的自动化执行,控制台会滚过九个工作流(节选自我本地的真实日志):

🚀 Async Pipeline Started ├── create_base_text_units # 分块(默认1200 token,100重叠) ├── extract_graph # 实体+关系抽取(抽取Agent池并行) ├── summarize_descriptions # 实体描述归并 ├── create_base_entity_graph # 图装配 ├── cluster_graph # Leiden社区检测(多层级) ├── create_final_text_units # 块↔实体映射 ├── create_final_entities / relationships / communities / community_reports # 社区摘要 📊 Local Search Indexing Complete | 100%|████████| 63/63 text units ⠹ Global Search Indexing Complete | 100%|████████| 18/18 communities (3 levels)

查询侧两种模式:

# Global模式:问全局归纳问题(Map-Reduce社区摘要)$ uv run graphrag query--root./ragtest--methodglobal\--query"这批研报里新能源板块的主要风险主题有哪些?"# Local模式:问具体问题(实体邻域+原文)$ uv run graphrag query--root./ragtest--methodlocal\--query"宁德时代在匈牙利的工厂涉及哪些供应链伙伴?"

Global查询的真实输出(节选,能看到明显的"部分答案+置信分"归并痕迹):

SUCCESS: Global Search Response: 新能源板块的主要风险主题包括: 1. 产能过剩与价格战(数据支撑度: 高)——多家研报指出2026年锂电产能利用率下滑至61%... 2. 海外政策不确定性(数据支撑度: 中)——欧盟碳关税与IRA修订案影响出口模型... 3. 技术路线切换风险(数据支撑度: 中)——固态电池产业化时间表分歧...

配置上三个最有用的旋钮(都在settings.yaml):chunks.size(块越大抽取越省但粒度越粗)、entity_extraction.entity_types(领域定制实体类型,金融语料加"证券/基金/政策"后我的抽取质量肉眼可见提升)、community_reports.max_length(摘要长度,直接决定Global的token账单)。

跑通CLI后我再补三个官方教程不会告诉你的实战认知:

  1. 先拿小语料校准Prompt再上全量。官方默认抽取prompt是通用域的,直接怼行业语料,抽取质量会有明显的"水土不服"。正确姿势:抽20个块人工review抽取结果,按第77节讲的六要素迭代一两轮prompt,再放全量索引——否则你花的第一笔索引费大概率是学费。
  2. 索引产物是parquet,别被吓到。output/目录下一堆parquet文件就是图谱本体(entities/relationships/communities/text_units五张表),官方CLI之外你完全可以用pandas/DuckDB直接查询、用第77节的方式自建检索层。理解了存储格式,graphrag就从黑盒变成零件库。
  3. 增量更新是当前最大的工程短板。官方update命令只对新增文档做增量抽取,但社区检测和社区摘要在多数场景下仍要全量重算——语料周更的场景要么接受社区漂移,要么自己实现分区索引(按业务域切多个小索引再联邦查询)。这一点在选型前必须想清楚。

成本账与选型:什么时候该上GraphRAG

不吹不黑,先算账。Indexing是一次性成本但很硬:我这份1.2万token语料,gpt-4o-mini档位花了约0.3美元;换算微软论文场景(10万token级语料)大约13美元,gpt-4o档位乘十。语料到百万token级,成本进入"必须立项审批"区间。在线查询:Local和向量RAG同量级,Global因为Map所有社区会贵310倍(这是LazyGraphRAG、DRIFT这些后继工作优化的重点)。

选型决策表,拿去直接用:

你的情况建议
只有单点事实问答需求向量RAG,别折腾
有全局归纳/主题/趋势类问题GraphRAG(Global)
强多跳、关系密集(金融/合规/情报)GraphRAG(Local为主)
"依据是什么"是硬需求(法务/医疗)GraphRAG(可解释性)
语料高频变更(小时级更新)慎重:增量索引是真实痛点,或看LazyGraphRAG
预算紧 + 只要全局概览先试便宜的map-reduce摘要法,不行再上图

中间路线也存在:LightRAG(更轻的图构建)、LazyGraphRAG(微软2024年底提出,先建概念轻索引、查询时再深入,官方数据用0.1%的索引成本拿到接近的效果)。架构选型的顺序应该是:向量RAG→摘要Map-Reduce→LazyGraphRAG→完整GraphRAG,每一步升级都有明确的触发条件,别一步到位。


小结

  1. 向量RAG三块天花板:全局理解缺失、多跳推理断裂、不可解释——GraphRAG逐一对症。
  2. 两步走核心思想:离线把"通读后的理解"物化成图谱+社区摘要;在线按问题类型走Local(实体邻域)或Global(社区Map-Reduce)。
  3. 五层架构:语料→处理→存储→索引(多Agent流水线)→检索合成(多Agent双模式)——知识工程本身就是图编排的重度用户。
  4. 数据口径要严谨:72-83%是人类偏好胜率,多跳准确率提升50-70%+;单点事实类问题向量RAG依然更快。
  5. 选型梯度:向量RAG→摘要MR→LazyGraphRAG→完整GraphRAG,按触发条件升级,成本账(索引一次性贵、Global在线贵3-10倍)先算后上。

下节预告

架构看完了,下一节钻进五层架构里最硬核的第④层:知识图谱构建流水线。实体抽取的Prompt怎么设计(含gleaning多轮补捞)、Leiden社区检测为什么比Louvain更适合、社区摘要的层级Map-Reduce怎么编排——最后我会手写一条可运行的多Agent构建Pipeline,把graphrag黑盒里的东西拆开给你看。

互动区

你们生产上的RAG现在是什么形态——裸向量、加了rerank,还是已经上图了?如果你踩过"用户问全局问题、系统给一堆碎片"的尴尬场景,当时是怎么兜底的?评论区聊聊,我猜一半人的答案是"让运营人工写周报"——如果真是这样,这一章就是为你写的。


如果觉得本文对你有帮助,欢迎点赞、收藏、关注三连!
本系列持续更新中,关注不迷路~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/2 1:42:15

LightCraft 局部调整实战指南:蒙版、画笔与亮度范围这样用

LightCraft 局部调整实战指南:蒙版、画笔与亮度范围这样用 【免费下载链接】lightcraft LightCraft: An open-source non-destructive photo editor written by scratch in pure Rust 项目地址: https://gitcode.com/gh_mirrors/li/lightcraft 用 LightCraft…

作者头像 李华
网站建设 2026/11/2 1:41:44

Folia 歌词动画播放器装进手机:PWA 安装与自部署 30 分钟完整指南

Folia 歌词动画播放器装进手机:PWA 安装与自部署 30 分钟完整指南 【免费下载链接】folia-major 专注于绚丽的歌词动画效果的本地音乐/navidrome/第三方多平台在线音乐播放器 项目地址: https://gitcode.com/GitHub_Trending/fo/folia-major 昨晚地铁上&…

作者头像 李华