Home / 大语言模型 / GraphRAG:当问题问的是整个资料库,检索几段相似文本还够吗

090|GraphRAG:当问题问的是整个资料库,检索几段相似文本还够吗

返回目录 · 发展时间线

论文:Darren Edge 等,From Local to Global: A GraphRAG Approach to Query-Focused Summarization,首次公开于 2024。本文依据2025 年修订的 v2,包括新增的声明数量与多样性评估;实现见官方仓库。版本中的实验范围与当前软件全部功能不等同。

图表来源:Darren Edge 等,2024,原文;CC BY 4.0。本篇展示做了图形区域裁切,图中数据与标签未改动。

先接住前作的问题

RAG擅长找局部事实,最相似几段却未必代表资料库的共识与分歧。本篇直接扩展检索问题范围,以社区摘要组织全局主题;Self-RAG检查逐句支持性,是不同的可靠性轴。

五个前置概念

五个前置概念:向量检索按表示相似度找片段;实体对齐判断不同提及是否指向同一对象;社区发现寻找连接紧密的节点组;map-reduce先局部处理再合并;相对胜率表示评估者偏好一方的比例,不是事实准确率。

一、问题设定:局部相关片段怎样扩展为全库观点覆盖

询问公司成立时间可依赖少数片段,询问一批访谈的监管分歧则需要覆盖多方观点和例外。相似度检索没有代表性保证,本篇用图与层级摘要组织跨文档信息,并必须验证图相对无图全局处理究竟增加多少价值。

这是文档问答和面向查询的摘要任务,不是强化学习。模型没有通过环境奖励训练;图也不是可学习的环境动力学模型。输入是资料库与查询,输出是有来源关联的综合回答,系统的新工作主要在索引和推理流程。

作者使用“global sensemaking”强调全局理解。这个任务定义很重要,因为论文的评价问题本来就要求全局覆盖。若实际任务是精确日期、代码行或法律条款定位,不能直接套用这里的相对胜率。

二、用实体社区组织两次压缩并核算统计分母

1. 文本分块与元素抽取

语言模型从每块文本抽取实体、关系和相关声明,并生成描述。抽取结果保留与原文的联系,之后将多次出现的元素聚合。

原实验的实体对齐使用精确字符串匹配。因此同名异物可能被合并,别名可能被拆开。作者认为很多重复节点会聚到相近社区,但这不是普遍保证,更不是已经完成严格实体消歧。

关系在多处出现会影响边权。频繁出现的关系有更大组织作用,却不意味着它更真实;转载、重复报道或偏置语料也会提高频次。

2. Leiden 社区与层次摘要

系统递归进行社区划分。每一层覆盖图中的节点,再向下细分出更具体的主题。它按社区聚合实体、边和声明,生成报告式摘要;高层如果放不下全部原始描述,就用子社区摘要代替。

这里“覆盖所有节点”仅指已抽取的图节点。若某个细节在最初抽取时丢失,完整社区覆盖也不会让它回来;若摘要压缩抹掉了少数观点,后续 map-reduce 同样无法无中生有恢复证据。

3. Map-reduce 回答查询

选择社区层级后,将摘要打乱并打包进多个上下文。各包独立生成与查询相关的局部回答,并自评帮助程度,零分的回答被过滤。其余按评分排序,放入最终窗口,由模型合成全局回答。

随机打乱的作用是分散相关信息,避免它恰好挤在一个窗口而被忽略;它不是随机抽掉大部分资料。局部评分也不是经过训练的、校准良好的置信度,不能把 90 分解释为事实正确概率 90%。

下面是教学抽象。对社区集合 Cℓ\mathcal C_\ell,预处理生成摘要 scs_c,查询 qq 到来时产生局部答案与评分:

sc=Summarize⁡(c),(aj,wj)=Map⁡(q,Pack⁡({sc})),s_c=\operatorname{Summarize}(c),\qquad (a_j,w_j)=\operatorname{Map}(q,\operatorname{Pack}(\{s_c\})),

a=Reduce⁡(q,TopBudget⁡({aj:wj>0},wj)).a=\operatorname{Reduce}\big(q,\operatorname{TopBudget}(\{a_j:w_j>0\},w_j)\big).

这是系统流程表达,不是原文的新损失函数。ℓ\ell 控制抽象粒度,预算决定最终能保留多少局部答案。系统优化的是面向问题的信息组织;实验改善的指标是回答全面性、多样性等,而不是训练交叉熵下降。

高层摘要更少、更便宜,也更容易丢失细节。低层摘要更多,可能覆盖具体观点,却需要更多查询计算。这是可调的索引粒度,而不是一个所有任务共用的固定最佳层级。

两次压缩,为什么“遍历全部社区”仍可能漏掉少数观点?

从原文到社区摘要是第一次压缩,从局部答案到最终窗口是第二次压缩。设三个社区分别含80、15、5份文档,最后每个社区只贡献一份摘要。如果综合时把三份摘要等量对待,就容易把小社区观点看成三分之一的意见;但80/15/5也不能直接当成人群比例,因为文档可能重复、作者可能反复发言。这是原创教学例,说明覆盖单位和统计分母必须先定义。

反过来,若小社区关于某项风险的局部答案自评分较低而未进入最终窗口,第一阶段完整遍历也不会阻止该风险消失。原文 §3.1.6 使用帮助度排序、按预算纳入局部回答,因此最终可追溯性需要检查“哪条陈述来自哪个局部答案、哪个社区、哪些原文”,不能只检查曾经建立过覆盖全图的分区。

索引何时值得摊销? 令一次建索引费用为 II,GraphRAG单次查询费用为 cgc_g,无图全局摘要费用为 ctc_t,同一索引复用 QQ 次。仅比较这些费用时,GraphRAG更省的条件是 I+Qcg<QctI+Qc_g<Qc_t,即在 ct>cgc_t>c_g 时 Q>I/(ct−cg)Q>I/(c_t-c_g)。自构取 I=100,cg=0.2,ct=0.8I=100,c_g=0.2,c_t=0.8 个同一计价单位,至少167次查询才跨过收支点。该数值不是论文报价,还未计数据更新、索引重建和质量差异。

所以表2的查询上下文压缩说明“重复问全局问题”可能划算;它不意味着给一个不断更新的资料库只问一次问题也必然节省。原文TS无图基线尤其重要,因为它同时检验全局处理本身能带来多少收益。

假设资料库有 100 次访谈,30 次谈隐私监管、20 次谈开源、10 次谈两者冲突,其余话题分散。查询“技术领导者对开放与监管的主要分歧是什么”时,向量检索可能集中找到措辞最接近的 5 次访谈,却漏掉另一阵营。

社区摘要可以分别保留隐私、开源和交叉讨论,再生成综合比较。但如果抽取器把“反对全面开放”错误归成“支持全面开放”,多层汇总会放大而非修正这个错误。因此好答案应把趋势、相反观点和具体来源分开,而非仅列出更多论点。

追溯链应从最终论断回到原句

一条最终结论先对应某个局部答案,再对应社区摘要,最后才回到原文。若只核对“社区摘要确实这么说”,无法发现第一次压缩已把“部分受访者”变成“所有人”。可逐级保留支持片段与限定词;全面性评委偏爱长答案,也不能替代这条逐声明核查链。

教法联系:Lilian Weng的Extrinsic Hallucinations in LLMs。算例为本文自构。

三、离线建图摘要,再按预算汇总局部回答

离线输入:文档库
将文档切块,抽取实体、关系、声明及来源
合并重复元素,建立加权实体图
递归划分图社区
从底向上生成社区摘要;必要时用子社区摘要压缩内容
保存图、元素来源和各层摘要

在线输入:问题、选定社区层级、上下文预算
打乱该层摘要并打包为多个上下文
并行生成每包的局部答案及帮助评分
过滤零分答案,按评分排序
将预算允许的局部答案汇入最终上下文
生成全局回答及来源关联

四、保留无图全局基线以分离覆盖与图的收益

热图先比较全局与局部,再比较图方法与无图TS;查询token压缩、声明数量和事实准确性是不同测量。

项目 原文设置 要检验的假设
访谈资料 1669 个约 600-token 块,100-token 重叠,约百万 token 跨访谈主题和观点的综合
新闻资料 3197 个同类块,约 170 万 token;涵盖 2013–2023 多类新闻 不同主题文档中的全局总结
问题 每库 5 类用户×5 个任务×5 个问题,共 125 题 问题由资料库描述及使用情境生成,偏向整体理解
对照 C0–C3 四层社区摘要;TS 原文分治摘要;SS 向量检索 图组织相对全文处理和局部检索分别有什么贡献
窗口 摘要、局部回答与最终回答统一 8K 单次上下文容量相同;总调用次数与输入量不同
评估 全面性、多样性、赋能、直接性;每对问题比较重复 5 次 相对回答偏好,而非人工金标准准确率
后续检验 Claimify 抽取 47075 条回答内去重声明,按 ROUGE-L 距离聚类 用声明数和簇数补充主观评判

依据 §3–5。访谈图包含 8564 节点、20691 边,新闻图包含 15754 节点、19520 边。访谈索引报告耗时 281 分钟,运行于 16GB RAM 的虚拟机并调用 GPT-4 Turbo API;这个时间包含外部服务条件,不能当作纯本地 CPU 算法复杂度。

相同 8K 窗口只控制每次调用容量。GraphRAG 和 TS 会多次调用模型,SS 主要将检索内容塞进一次回答窗口,因此它们不是总算力严格匹配的实验。图索引费用还能被多次查询摊销,但不能从每次查询输入量中直接忽略。

证据一:图2、附录表6,全局方法优于局部检索的覆盖。 各全局方法对 SS 的全面性胜率在访谈为 72–83%、新闻为 72–80%,多样性也占优。这些区间包括无图 TS,支持“全局处理重要”,不能全部记在图的账上。SS 在直接性上更强,赋能指标则结果混合。 热图中每格是行方法胜过列方法的比例;对角50%是展示用参考值,不是实际完成了自我对比实验。四种评判指标应分别读。

GraphRAG不同索引方法在两类数据和四种指标上的成对胜率热图
原实验图摘引:Darren Edge 等,2024,图2,PDF第10页;核对原文。原版权保留。

证据二:图2,图相对全文摘要的额外增益较小。 访谈中间层与新闻低层相对 TS 的全面性胜率分别为 57% 和 64%,多样性为 57% 和 60%。这支持社区组织可能有帮助,但远小于对局部 SS 的差距。根层摘要通常更省,却不是所有质量指标的赢家。

证据三:表2,压缩索引降低查询处理量。 访谈 C0 摘要共 26657 token,对比 TS 的 1014611;新闻 C0 为 39770,对比 1707694。按表中数值计算,分别约为原文输入规模的 2.63% 和 2.33%,减少约 97.4% 和 97.7%。这只是所统计的上下文单元 token,不能写成包含建图与输出费用的总成本下降 97%。

证据四:表3、表4,替代指标支持部分结论,也收窄部分结论。 新闻 C0 平均 34.18 条声明,SS 为 25.23;访谈 C2 为 32.46,SS 为 26.50。声明更多与“全面”一致,但并未逐条证明正确。多样性聚类在新闻上依阈值变化;§5.2 还说明全局图方法相互之间、以及它们与 TS 之间没有显著的声明指标差异。

证据五:§5.2,评估器一致性是有条件的。 非平局子集里,LLM 偏好与声明指标的一致比例为全面性 78%、多样性约 69–70%;这些子集仅占全部比较的 33% 和 39%。不能把条件一致率误写成所有答案比较上的一致率。

五、压缩遗漏、索引更新和事实核查仍限制可靠性

它不同于单纯从知识图谱检索三元组,也不同于查询时沿图不断搜索的代理。

建图和层次摘要产生额外费用,更新文档还可能要求更新实体、社区与摘要。长期稳定、多次查询的资料库更容易摊销成本;只问一次或资料高速变化时,是否划算需要重新计量。这是系统成本分析,论文未给出对所有工作负载的盈亏平衡点。

事实性是未充分完成的验证。声明抽取回答中的可验证断言,并不自动核对它们是否与原文一致。声明更多可能是覆盖更好,也可能是增加了错误陈述。作者在 §6.1 明确把生成虚构内容的比较列为进一步工作。

使用语言模型生成问题和判分,可能偏向它擅长的回答风格。重复五次评判减少部分随机性,却不会消除系统性长度偏好、提示偏好或共同知识错误。直接性作为对照有意义,但不能替代长度匹配或人工来源审计。

社区划分也偏向图中连接明显的主题,罕见但关键的孤立事件可能在摘要中弱化。频率不是重要性,更不是真实性。对于决策场景,仍需要回到具体原文,检查时间、否定、冲突和少数观点。

六、让全局覆盖与逐条来源支持共同成立

全局覆盖之外,回看Self-RAG的逐句支持与DeepVerifier的事后查证。社区图可以组织来源,却不能替每条最终声明提供真值或自动发现压缩遗漏。

自测:能否选择正确的比较对象

1. GraphRAG 比向量 RAG 全面,是否证明知识图谱本身不可替代?

不能。无图 TS 也对整个资料库做 map-reduce,在全面性和多样性上同样明显优于 SS。隔离图的作用应比较 C0–C3 与 TS,并同时报告索引、查询总量和质量。论文支持图组织加压缩有价值,不支持所有收益都来自图。

2. C0 查询上下文减少约 97%,为什么不能宣布系统总费用减少 97%?

该比例比较的是摘要与原文上下文单元的 token 数,不包含全部建图、摘要生成、局部回答输出、最终回答和更新费用。总费用还取决于查询次数、模型价格与缓存。只有固定工作负载并把全部阶段计入,才能比较系统总成本。

3. 回答包含更多声明和更多声明簇,是否意味着更值得信赖?

不一定。这些指标反映内容量和表达差异,没有自动验证声明真实性。应回溯引用原文检查支持关系、矛盾和时间范围,并区分有证据的概括与推断。丰富、全面、正确是相关但不同的评价维度。