赞
踩
摘要
https://arxiv.org/pdf/2404.16130
通过使用检索增强生成(RAG)从外部知识源中检索相关信息,大型语言模型(LLMs)能够回答来自私有和/或之前未见过的文档集合的问题。然而,当面对针对整个文本语料库的全局问题时,如“数据集中的主要主题是什么?”,RAG就会失败,因为这本质上是一个查询聚焦的摘要(QFS)任务,而非显式的检索任务。与此同时,先前的QFS方法无法扩展到由典型RAG系统索引的文本数量。为了结合这些对比方法的优点,我们提出了一种图RAG方法,用于对私有文本语料库进行问答,该方法既可以扩展用户问题的普遍性,也可以扩展要索引的源文本的数量。我们的方法使用LLM分两个阶段构建基于图的文本索引:首先从源文档中导出实体知识图,然后为所有密切相关的实体组预先生成社区摘要。给定一个问题,每个社区摘要都用于生成部分响应,然后所有部分响应再次汇总成对用户的最终响应。对于在100万标记范围内的数据集上的一类全局意义构建问题,我们表明,图RAG在生成答案的全面性和多样性方面较简单的RAG基线有了显著改进。全局和局部图RAG方法的开源、基于Python的实现即将在https://aka.ms/graphrag上发布。
1 引言
人类在各种领域中的努力都依赖于我们阅读和理解大量文档集合的能力,并经常得出超出源文本本身所述内容的结论。随着大型语言模型(LLMs)的出现,我们已经见证了在科学发现(Microsoft,2023)和情报分析(Ranade和Joshi,2023)等复杂领域中尝试自动化类似人类的认知过程,其中“认知”被定义为“一种有动机的、持续的努力,旨在理解(人与人之间的、地点之间的、事件之间的)联系,以便预测它们的轨迹并采取有效的行动”(Klein等人,2006a)。然而,要支持对整个文本语料库的人类主导的认知过程,就需要一种方法,使人们能够通过提出全局性的问题来应用和完善他们对数据的心理模型(Klein等人,2006b)。
检索增强生成(RAG,Lewis等人,2020)是一种已确立的方法,用于在整个数据集上回答用户问题,但它被设计为用于那些答案局部包含在文本区域中,且这些文本的检索为生成任务提供了足够基础的情况。相反,一个更合适的任务框架是查询聚焦摘要(QFS,Dang,2006),特别是查询聚焦抽象摘要,它生成自然语言摘要,而不仅仅是连接摘录(Baumel等人,2018;Laskar等人,2020;Yao等人,2017)。然而,近年来,在摘要任务中抽象与抽取、通用与查询聚焦、单文档与多文档之间的这些区别变得不那么重要了。虽然transformer架构的早期应用在所有这些摘要任务的最先进技术上都显示出了实质性的改进(Goodwin等人,2020;Laskar等人,2022;Liu和Lapata,2019),但这些任务现在被现代大型语言模型(LLMs)简化了,包括GPT(Achiam等人,2023;Brown等人,2020)、Llama(Touvron等人,2023)和Gemini(Anil等人,2023)系列,它们都可以使用上下文学习来总结其上下文窗口中提供的任何内容。
然而,对于整个语料库上的查询聚焦抽象摘要来说,挑战依然存在。如此大量的文本可能会远远超过大型语言模型(LLM)上下文窗口的限制,而且扩大这些窗口可能还不够,因为信息可能会在更长的上下文中“丢失在中间”(Kuratov等人,2024;Liu等人,2023)。此外,尽管在朴素的RAG中直接检索文本块对于QFS任务来说可能不够充分,但另一种形式的预索引可能支持一种新的RAG方法,专门针对全局摘要。
在本文中,我们提出了一种基于LLM生成知识图全局摘要的图RAG方法(图1)。与利用图索引的结构化检索和遍历能力的相关工作(第4.2小节)不同,我们关注于这一背景下图的一个先前未被探索的特性:它们固有的模块性(Newman,2006)以及社区检测算法将图划分为紧密相关节点的模块化社区的能力(例如,Louvain,Blondel等人,2008;Leiden,Traag等人,2019)。这些社区描述的LLM生成摘要提供了对底层图索引及其所代表输入文档的完整覆盖。然后,可以使用映射归约方法来实现对整个语料库的查询聚焦摘要:首先使用每个社区摘要独立且并行地回答查询,然后将所有相关的部分答案汇总成最终的全局答案。
为了评估这种方法,我们使用了一个大型语言模型(LLM)来从两个具有代表性的真实世界数据集(分别包含播客字幕和新闻文章)的简短描述中生成一系列以活动为中心的理解问题。对于全面性、多样性和赋权(在3.4小节中定义)这些目标特性,它们有助于理解广泛的问题和主题,我们既探索了用于回答查询的社区摘要层次水平变化的影响,也与朴素的RAG方法和源文本的全局映射归约摘要进行了比较。我们表明,所有全局方法在全面性和多样性方面均优于朴素的RAG方法,而且具有中间级和低级社区摘要的图RAG方法在这些相同指标上的表现优于源文本摘要,且令牌成本更低。
2 图RAG方法与流程
现在,我们将解析图RAG方法(图1)的高级数据流和流程,描述每个步骤的关键设计参数、技术和实现细节。
2.1 源文档 \rightarrow 文本块
一个基本的设计决策是,从源文档中提取的输入文本应该以何种粒度分割成文本块进行处理。在后续步骤中,这些文本块中的每一个都将被传递给一组大型语言模型(LLM)提示,旨在提取图索引的各种元素。较长的文本块需要较少的LLM调用来进行此类提取,但会遭受更长LLM上下文窗口的召回率下降的影响(Kuratov等人,2024;Liu等人,2023)。在单个提取轮次(即无提炼)的情况下,这种行为可以在图2中观察到:在样本数据集(HotPotQA,Yang等人,2018)上,使用600个令牌的块大小提取的实体引用数量几乎是使用2400个令牌块大小的两倍。虽然更多的引用通常更好,但任何提取过程都需要为目标活动平衡召回率和精确度。
2.2 文本块 \rightarrow 元素实例
此步骤的基本要求是从每个源文本块中识别和提取图节点和边的实例。我们使用一个多部分LLM提示来实现这一点,该提示首先识别文本中的所有实体,包括它们的名称、类型和描述,然后识别所有明确相关实体之间的关系,包括源实体、目标实体以及它们之间关系的描述。这两种类型的元素实例都以单个分隔元组列表的形式输出。
将这一提示定制到文档语料库领域的主要机会在于为大型语言模型(LLM)提供的用于上下文学习的少量示例选择(Brown等人,2020)。例如,虽然我们的默认提示可以提取像人、地点和组织这样的“命名实体”这一大类,通常具有普适性,但具有专门知识的领域(如科学、医学、法律)将从针对这些领域的少量示例中受益。我们还支持一个次级提取提示,用于我们想要与提取的节点实例相关联的任何其他协变量。我们的默认协变量提示旨在提取与检测到的实体相关的声明,包括主体、客体、类型、描述、源文本跨度以及开始和结束日期。
为了平衡效率和质量的需要,我们使用多轮“提炼”,直到达到指定的最大轮次,以鼓励LLM检测在先前提取轮次中可能遗漏的任何额外实体。这是一个多阶段过程,我们首先要求LLM评估是否已提取所有实体,通过设置100的对数偏差来强制做出是或否的决定。如果LLM回应称遗漏了实体,则继续表示“在上一次提取中遗漏了许多实体”,从而鼓励LLM提炼这些遗漏的实体。这种方法允许我们使用更大的块大小而不会降低质量(如图2所示)或被迫引入噪声。
2.3 元素实例 \rightarrow 元素摘要
使用大型语言模型(LLM)来“提取”源文本中表示的实体、关系和声明的描述,这本身已经是一种抽象摘要的形式,它依赖于LLM来创建可能由文本本身暗示但未明确表述的概念的独立且有意义的摘要(例如,隐含关系的存在)。为了将所有这样的实例级摘要转换为每个图元素(即实体节点、关系边和声明协变量)的描述性文本块,需要对匹配的实例组进行另一轮LLM摘要。
此阶段的一个潜在问题是,LLM可能无法在同一文本格式中一致地提取对同一实体的引用,从而导致实体元素重复,进而在实体图中出现重复节点。然而,由于所有密切相关的实体“社区”都将在后续步骤中被检测和摘要,并且鉴于LLM可以理解多个名称变体背后的共同实体,只要所有变体之间都有足够的连接到一个共享的密切相关实体集,我们的整体方法就能够应对这种变化。
总体而言,我们在可能嘈杂的图结构中为同构节点使用丰富的描述性文本,这与LLM的能力以及全局、查询聚焦的摘要需求相一致。这些特性也使我们的图索引与典型的知识图谱区分开来,后者依赖于简洁且一致的知识三元组(主语、谓语、宾语)来进行下游推理任务。
2.4 元素摘要 \rightarrow 图社区
前一步创建的索引可以建模为一个同构无向加权图,其中实体节点通过关系边连接,边权重表示检测到的关系实例的归一化计数。给定这样的图,可以使用多种社区检测算法将图划分为社区,这些社区中的节点与图中其他节点的连接比彼此之间的连接更强(例如,参见Fortunato, 2010和Jin等人, 2021的综述)。在我们的流程中,我们使用Leiden算法(Traag等人, 2019),因为它能够高效地恢复大规模图的层次社区结构(图3)。这个层次的每一层都提供了一个社区划分,它以互斥且集体穷尽的方式覆盖图的节点,从而实现了分而治之的全局摘要。
2.5 图社区 \rightarrow 社区摘要
下一步是使用一种设计为可扩展到非常大数据集的方法,为Leiden层次结构中的每个社区创建类似报告的摘要。这些摘要本身就有其独立的价值,因为它们提供了一种理解数据集全局结构和语义的方式,并且可以在没有问题的情况下用于理解语料库。例如,用户可以在一个层次级别上浏览社区摘要,寻找感兴趣的一般主题,然后跟随链接到更低级别的报告,这些报告为每个子主题提供了更多详细信息。然而,在这里,我们关注它们作为用于回答全局查询的图基索引的一部分的实用性。
社区摘要的生成方式如下:
2.6 社区摘要 \rightarrow 社区答案 \rightarrow 全局答案
给定用户查询,上一步生成的社区摘要可以通过一个多阶段过程来生成最终答案。社区结构的层次性也意味着可以使用来自不同级别的社区摘要来回答问题,这引发了一个问题:层次社区结构中的特定级别是否提供了最佳的摘要详细程度和范围平衡,以便对一般意义上的问题进行解释(在第3节中评估)。
对于给定的社区级别,任何用户查询的全局答案生成过程如下:
3.1 数据集
我们选择了两个位于一百万令牌范围内的数据集,每个数据集大致相当于约10部小说的文本量,并代表了用户在现实世界中可能遇到的语料库类型:
3.2 查询
存在许多用于开放领域问答的基准数据集,包括HotPotQA(Yang等人,2018年)、MultiHop-RAG(Tang和Yang,2024年)和MT-Bench(Zheng等人,2024年)。然而,这些相关的问题集的目标是明确的事实检索,而不是为了数据理解(data sensemaking)的摘要,即人们在更广泛的现实活动范围内检查、参与和将数据置于上下文中的过程(Koesten等人,2021年)。同样,也存在从源文本中提取潜在摘要查询的方法(Xu和Lapata,2021年),但这些提取出的问题可能会针对透露文本先验知识的细节。
为了评估RAG系统对于更全局性的理解任务的有效性,我们需要的问题只能传达对数据集内容的高级理解,而不是特定文本的细节。我们使用了一种以活动为中心的方法来自动化生成这类问题:给定数据集的简短描述,我们要求LLM识别出
N
N
N个潜在用户和每个用户的
N
N
N个任务,然后对于每个(用户,任务)组合,我们要求LLM生成
N
N
N个需要理解整个语料库的问题。在我们的评估中,
N
=
5
N=5
N=5的设定导致每个数据集有125个测试问题。表1显示了两个评估数据集各自的示例问题。
3.3 条件
在我们的分析中,我们比较了六种不同的条件,包括使用四个级别图社区( C 0 \mathbf{C 0} C0, C 1 \mathbf{C 1} C1, C 2 \mathbf{C 2} C2, C 3 \mathbf{C 3} C3)的图RAG、一种将我们的映射归约方法直接应用于源文本的文本摘要方法(TS),以及一种朴素的“语义搜索”RAG方法(SS):
在所有六个条件中,上下文窗口的大小和用于生成答案的提示都是相同的(除了对引用样式进行了一些小修改以匹配所使用的上下文信息类型)。这些条件仅在如何创建上下文窗口的内容上有所不同。
图索引支持条件 C 0 − C 3 \mathbf{C 0}-\mathbf{C 3} C0−C3仅使用我们针对实体和关系提取的通用提示创建,其中实体类型和少量示例都针对数据领域进行了定制。图索引过程对Podcast数据集使用了大小为600个标记的上下文窗口,并进行了1次提炼,而对News数据集则未进行提炼。
大型语言模型(LLMs)已被证明是自然语言生成的良好评估者,与人类评判相比,其表现达到了最先进水平或具有竞争力(Wang et al., 2023a; Zheng et al., 2024)。尽管这种方法在已知金标准答案时可以生成基于参考的指标,但它还能够以无参考方式测量生成文本的质量(如流畅性)(Wang et al., 2023a),以及直接比较竞争输出的优劣(LLMs作为评判者,Zheng et al., 2024)。LLMs还显示出评估传统RAG系统性能的潜力,能够自动评估诸如上下文相关性、忠实度和答案相关性等质量(RAGAS,Es et al., 2023)。
鉴于我们图RAG机制的多阶段性质、我们想要比较的多重条件,以及我们基于活动的意义构建问题缺乏金标准答案,我们决定采用使用LLM评估器的直接比较方法。我们选择了三个目标指标,这些指标捕捉了对于意义构建活动而言理想的质量特征,以及一个控制指标(直接性),用作有效性的指标。由于直接性与全面性和多样性相对立,因此我们不期望任何方法能在所有四个指标上都胜出。
我们使用LLM评估器计算得出的头对头指标如下:
在我们的评估中,LLM会接收到问题、目标指标以及一对答案,并被要求根据该指标评估哪个答案更好,以及原因。如果存在更优答案,则返回该答案;如果两者在本质上相似且差异可忽略不计,则判定为平局。为了考虑LLM的随机性,我们对每个比较运行五次,并使用平均分数。表2展示了LLM生成的评估示例。
3.5 配置
上下文窗口大小对任何特定任务的影响尚不清楚,特别是对于像gpt-4-turbo这样具有128k标记大上下文尺寸的模型。鉴于在更长的上下文中信息可能会“在中间丢失”(Kuratov等人,2024;Liu等人,2023),我们想要探索改变上下文窗口大小对我们数据集、问题和指标组合的影响。特别是,我们的目标是确定我们基线条件(SS)的最佳上下文大小,然后统一用于所有查询时间LLM的使用。为此,我们测试了四个上下文窗口大小:8k、16k、32k和64k。令人惊讶的是,在所有关于全面性的比较中,测试的最小上下文窗口大小(8k)普遍表现更好(平均胜率58.1%),同时在多样性(平均胜率=52.4%)和赋能性(平均胜率=51.3%)方面与较大的上下文大小相当。鉴于我们更倾向于更全面和多样的答案,因此我们在最终评估中使用了固定的8k标记上下文窗口大小。
3.6 结果
索引过程为Podcast数据集生成了一个包含8564个节点和20691条边的图,而为News数据集生成了一个更大的图,包含15754个节点和19520条边。表3显示了每个图社区层次结构中不同级别的社区摘要数量。
全局方法与朴素RAG的比较。如图4所示,在Podcast转录本和新闻文章的数据集上,全局方法在全面性和多样性指标上均一致优于朴素的RAG(SS)方法。具体来说,对于Podcast转录本,全局方法的全面性胜率在72%到83%之间,而新闻文章的全面性胜率在72%到80%之间。同时,全局方法在多样性上的胜率分别在75%到82%和62%到71%之间。我们使用直接性作为有效性测试也达到了预期结果,即朴素的RAG在所有比较中产生了最直接的响应。
社区摘要与源文本。使用Graph RAG比较社区摘要和源文本时,除了根级摘要外,社区摘要通常在答案的全面性和多样性方面提供了小而一致的改进。在播客数据集中的中级摘要和新闻数据集中的低级社区摘要中,全面性获胜率分别为
57
%
57\%
57%和
64
%
64\%
64%。播客中级摘要的多样性获胜率为
57
%
57\%
57%,新闻低级社区摘要的多样性获胜率为
60
%
60\%
60%。表3还说明了与源文本摘要相比,Graph RAG的可扩展性优势:对于低级社区摘要(C3),Graph RAG所需的上下文标记减少了
26
−
33
%
26-33\%
26−33%,而对于根级社区摘要(C0),它所需的标记减少了
97
%
97\%
97%以上。与其他全局方法相比,性能略有下降,但根级Graph RAG为迭代问答提供了一种高效的方法,该方法以意义构建活动为特征,同时在全面性(获胜率为
72
%
72\%
72%)和多样性(获胜率为
62
%
62\%
62%)方面优于朴素的RAG。
增强能力。与朴素的RAG(SS)相比,两种全局方法的增强能力比较结果喜忧参半;与源文本摘要(TS)相比,Graph RAG方法的增强能力比较结果也呈现混合状态。针对此度量标准分析LLM推理的即席LLM使用表明,提供具体示例、引语和引用的能力被认为是帮助用户形成知情理解的关键。调整元素提取提示可能有助于在Graph RAG索引中保留更多这些细节。
4 相关工作
4.1 RAG 方法与系统
在使用大型语言模型(LLMs)时,检索增强生成(RAG)首先涉及从外部数据源检索相关信息,然后将这些信息与原始查询一起添加到LLM的上下文窗口中(Ram 等人,2023)。朴素的RAG方法(Gao 等人,2023)通过将文档转换为文本、将文本分割成块,并将这些块嵌入到一个向量空间中来实现这一点,在这个向量空间中,相似的位置代表相似的语义。然后,将查询也嵌入到相同的向量空间中,使用最接近的k个向量的文本块作为上下文。尽管存在更高级的变体,但它们都解决了当感兴趣的外部数据集超过LLM的上下文窗口大小时应如何处理的问题。
高级的RAG系统包括预检索、检索和后检索策略,旨在克服朴素RAG的缺点,而模块化RAG系统则包括交错检索和生成迭代及动态循环的模式(Gao 等人,2023)。我们的Graph RAG实现结合了与其他系统相关的多个概念。例如,我们的社区摘要是一种自我记忆(Selfmem,Cheng 等人,2024),用于生成增强的检索(GAR,Mao 等人,2020),这有助于未来的生成循环,而我们从这些摘要中并行生成社区答案则是一种迭代(Iter-RetGen,Shao 等人,2023)或联邦(FeB4RAG,Wang 等人,2024)检索-生成策略。其他系统也结合了这些概念进行多文档摘要(CAiRE-COVID,Su 等人,2020)和多跳问答(ITRG,Feng 等人,2023;IR-CoT,Trivedi 等人,2022;DSP,Khattab 等人,2022)。我们使用分层索引和摘要的方法也与其他方法相似,例如通过聚类文本嵌入的向量来生成文本块的分层索引(RAPTOR,Sarthi 等人,2024),或生成“澄清树”来回答模糊问题的多种解释(Kim 等人,2023)。然而,这些迭代或分层方法中没有任何一种使用了Graph RAG所使用的那种自我生成的图索引。
4.2 图与大型语言模型
图与大型语言模型(LLMs)和检索增强生成(RAG)的结合是一个正在发展的研究领域,已经确立了多个研究方向。这些方向包括使用LLMs进行知识图谱的创建(Trajanoska 等人,2023)和补全(Yao 等人,2023),以及从源文本中提取因果图(Ban 等人,2023;Zhang 等人,2024)。此外,还包括高级RAG的形式(Gao 等人,2023),其中索引是知识图谱(KAPING,Baek 等人,2023),研究对象是图结构的子集(G-Retriever,He 等人,2024)或派生的图度量(GraphToolFormer,Zhang,2023),叙事输出紧密基于检索到的子图的事实(SURGE,Kang 等人,2023),使用叙事模板序列化检索到的事件情节子图(FABULA,Ranade 和 Joshi,2023),以及系统支持多跳问答中文本关系图的创建和遍历(Wang 等人,2023b)。在开源软件方面,LangChain(LangChain,2024)和LlamaIndex(LlamaIndex,2024)库都支持多种图数据库,同时也在出现一类更通用的基于图的RAG应用,包括能够在Neo4J(NaLLM,Neo4J,2024)和NebulaGraph(GraphRAG,NebulaGraph,2024)格式中创建和推理知识图谱的系统。然而,与我们的Graph RAG方法不同,这些系统都没有利用图的自然模块性来对数据进行全局摘要的分区。
5 讨论
评估方法的局限性。到目前为止,我们的评估仅针对约100万个标记符的两个语料库中的某一类解释性问题进行了考察。为了了解性能在不同问题类型、数据类型和数据集大小范围内的变化情况,以及为了通过最终用户验证我们的解释性问题和目标指标,还需要进行更多的工作。例如,通过使用SelfCheckGPT(Manakul 等人,2023)等方法比较编造率,也将有助于改进当前的分析。
构建图索引的权衡。我们始终观察到,Graph RAG在与其他方法的直接比较中取得了最佳结果,但在许多情况下,无图方法的源文本全局摘要表现也具有竞争力。在现实世界中,是否投资构建图索引的决策取决于多个因素,包括计算预算、每个数据集预期的生命周期查询次数,以及从图索引的其他方面(包括通用社区摘要和其他与图相关的RAG方法的使用)获得的价值。
未来工作。支持当前Graph RAG方法的图索引、富文本注释和层次化社区结构为细化和适应提供了许多可能性。这包括通过用户查询和图注释的基于嵌入的匹配,以更局部的方式运行的RAG方法,以及结合在采用我们的map-reduce摘要机制之前对社区报告进行基于嵌入的匹配的混合RAG方案的可能性。这种“汇总”操作还可以扩展到社区层次的更多级别,也可以作为一个更具探索性的“深入”机制来实现,该机制遵循高级社区摘要中包含的信息线索。
6 结论
我们提出了一种Graph RAG的全局方法,该方法结合了知识图生成、检索增强生成(RAG)和查询聚焦摘要(QFS),以支持对整个文本语料库的人类解释。初步评估表明,与朴素的RAG基线相比,该方法在答案的全面性和多样性方面都有显著改善,并且与使用map-reduce源文本摘要的全局但无图的方法相比也具有优势。对于需要在同一数据集上进行多次全局查询的情况,基于实体的图索引中根级别社区的摘要提供了一个数据索引,该索引既优于朴素的RAG,又以极低的标记成本实现了与其他全局方法相当的性能。
全局和局部Graph RAG方法的基于Python的开源实现即将在https://aka.ms/graphrag上发布。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。