微软GraphRAG答全局问题,全面性胜率最高83%

From Local to Global: A Graph RAG Approach to Query-Focused Summarization

Darren Edge, Ha Trinh, Newman Cheng, Joshua Bradley, Alex Chao, Apurva Mody, Steven Truitt, Dasha Metropolitansky, Robert Osazuwa Ness, Jonathan Larson

cs.CL, cs.AI, cs.IR

2024-04-25

微软用LLM抽实体图、Leiden分层社区再预写摘要。对约百万token语料的全局问题,全面性胜率72%到83%,根社区查询只需原文约2.6%的token。

这篇在解决什么

向量 RAG 擅长「这段话里有没有这个事实」。它不擅长「整份语料的主线是什么」。后一类问题本质是查询导向的摘要,不是检索:你没法从最近邻的几段文字里拼出全局主题。

旧的查询摘要方法又吃不下 RAG 系统那种体量。两边卡住的地方正好相反。微软这条线要同时扛住问题的宏观程度和语料的规模。

方法

GraphRAG 在索引期用 LLM 做两件事,查询期再做一轮 map-reduce。

索引期先把文档切成约 600 token 的块,抽实体、关系和可选的事实声明,聚成知识图。边权来自关系被抽到的次数。然后用 Leiden 做分层社区发现,得到互斥且覆盖全图的社区划分。叶子社区按节点度数优先往上下文里填元素摘要;上层社区塞不下时,用子社区摘要替换更长的元素摘要,自底向上写出每一层的社区报告。

查询期把同一层的社区摘要打乱切块,并行生成带 0 到 100 有用性分数的部分答案,丢掉 0 分,再按分数从高到低填进最终上下文,收成全局回答。

评测本身也是造出来的。先让 LLM 根据语料用途生成假想用户和任务,再写出必须通读全库、不能靠一条事实的问题,每库 125 道。没有标准答案,所以用 LLM 两两对比:全面性、多样性、读完能否做判断,外加一条对照用的直接性。第二实验再用 Claimify 把回答拆成可核验的事实声明,用声明数量和聚类数做硬指标。

结果

两份语料都在百万 token 量级。播客是 Kevin Scott 的 Behind the Tech 转写,约 100 万 token、1669 块;新闻是 2013 到 2023 的多类新闻,约 170 万 token、3197 块。播客图有 8564 个节点、20691 条边;新闻图 15754 个节点、19520 条边。对照包括四层社区摘要 C0 到 C3、直接对源文本套同一套 map-reduce 的 TS,以及往上下文里堆语义块直到满窗的向量检索 SS。索引用 gpt-4-turbo,播客那份跑了 281 分钟。

对比全面性胜率多样性胜率
全局方法 vs 向量 RAG,播客72%–83%75%–82%
全局方法 vs 向量 RAG,新闻72%–80%62%–71%
中层社区 vs 原文摘要,播客全面性57%
底层社区 vs 原文摘要,新闻全面性64%

根社区 C0 每次查询只用最大 token 量的 2.6%(播客)和 2.3%(新闻),比原文 map-reduce 少 97% 以上,对向量 RAG 仍有 72% 的全面性胜率和 62% 的多样性胜率。「读完能否做判断」这一项打平或互有胜负,裁判理由常落到有没有具体例子和引文。直接性则是向量 RAG 稳赢,符合「短而准」对「长而全」的预期。

声明实验方向一致:新闻语料上 C0 平均 34.18 条声明,向量 RAG 25.23 条。LLM 裁判和声明指标在非平局样本上,全面性一致率 78%,多样性约 70%。

为什么重要

如果你的问题是「库里反复出现的主题、争议、政策立场」,向量检索会给出一堆局部金句,假装那就是全貌。GraphRAG 把这件事改成预计算的社区报告,查询变成对报告做摘要。根层适合反复追问、要控成本的场景;中下层更细,token 更贵,相对原文摘要只有几个点的胜率。

这是 2024 年就把「图索引加社区摘要」做成可复现流水线的工作,后来大量开源库都接了类似扩展。它解决的是全局理解,不是多跳事实问答。别拿它去替 HotPotQA 式检索。

局限与存疑

评测只覆盖两份约百万 token 的语料,领域更杂、规模更大时数字会不会掉,论文自己说还没验证。没有拿 SelfCheckGPT 这类方法比幻觉率,全面性赢有可能部分来自更长、更敢写。判断力这项打平,说明「读完能做判断」并不跟着全面性走,例子和引用在抽图时容易丢。

问题由 LLM 根据语料描述生成,不是从正文抽的,减少了泄漏,也让题分布依赖生成器的品味。实体匹配用的是精确字符串,重复实体靠后续聚类兜,脏数据多的库会更吵。索引成本是查询省下来的前提:播客那份 281 分钟、还要为每一层预写摘要,只问三五个全局问题未必划算。

术语

原文与代码

社区讨论

相关论文

全部论文解读