AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


GraphRAG: 结合知识图谱、RAG和QFS技术,来提高模型对全局含义的理解
发布日期:2024-04-29 14:12:43 浏览次数: 2227


深度图学习与大模型LLM(小编):大家好,今天与大家分享一篇最新发布的研究论文。

这篇论文提出了一种基于图的Retrieval-Augmented Generation (RAG)方法,用于对整个文本语料库进行Query-Focused Summarization (QFS)。该方法很好地结合了知识图谱生成、RAG和QFS技术,为理解文本语料库的整体层面的意思提供了新思路。

1. 基本信息

  • 论文题目: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, Jonathan Larson

  • 作者研究单位:Microsoft Research, Microsoft Strategic Missions and Technologies, Microsoft Office of the CTO

  • 代码链接:https://aka.ms/graphrag

2. 介绍

现有的Retrieval-Augmented Generation (RAG)方法能够从外部知识源中检索相关信息,使Large Language Models (LLMs)能够回答关于私有或未见过的文档集合的问题。但是,当回答全局性问题时,比如"数据集的主要主题是什么?",RAG方法往往无法给出满意的答案,因为这本质上是一个Query-Focused Summarization (QFS)任务,而非单纯的信息检索任务。另一方面,现有的QFS方法也难以扩展到典型RAG系统所索引的海量文本。为了结合这两类方法的优势,作者提出了Graph RAG方法,用于私有文本语料库的问答,该方法能够适应不同普适性的用户问题和不同规模的源文本数据。

3. 方法

Graph RAG方法利用LLM分两个阶段构建基于图的文本索引:

  1. 从源文档中提取实体知识图谱

  2. 为相关的实体组预生成Community Summaries

给定一个问题,每个Community Summary被用来生成一个局部答案,然后所有局部答案再次被汇总为给用户的最终答案。

Graph RAG的主要流程包括以下步骤(见Figure 1):

  1. 从源文档中提取文本块(左第一行)。作者讨论了文本块粒度的选择对后续图索引质量的影响。较长的文本块需要更少的调用,但由于LLM上下文窗口的限制,可能导致信息丢失和召回率下降。因此,需要在召回率和精确率之间进行权衡。

  2. 使用LLM提示从文本块中提取图元素实例(节点、边、协变量)左第2/3。作者设计了多部分LLM提示,先识别文本中的所有实体,包括实体名称、类型和描述,然后识别相关实体之间的关系,包括源实体、目标实体和关系描述。Prompt可以根据领域进行定制,例如针对科学、医学、法律等专业领域,可以使用特定的few-shot示例来提高提取质量。作者还引入了"gleaning"的概念,通过多轮提取来提高召回率,同时避免引入噪声。

  3. 使用LLM汇总图元素实例左第4,生成图元素摘要。在这一步,LLM已经提取出了隐含在源文本中的知识(如隐含关系),形成了独立的概念摘要。接下来,需要对所有指向同一图元素(实体、关系、协变量)的实例进行汇总,生成统一的描述性文本。值得注意的是,由于LLM提取的实体引用可能存在不一致的情况,导致图中出现重复节点。但只要所有变体与一组共同的密切相关实体有足够的连接,Graph RAG的整体方法就具有较强的鲁棒性。

  4. 使用社区检测算法(如Leiden)对图索引进行分区,得到图社区(右第4)。图索引可以建模为无向加权图,边表示检测到的关系实例数的数量。在这种图上,可以使用各种社区检测算法进行分区,得到节点间连接更紧密的社区。Leiden算法能够有效地检测大规模图的层次社区结构,每一层社区划分都以互斥且完全穷尽的方式覆盖了图的节点,从而支持分治的全局摘要。

  5. 使用LLM生成Community Summaries右第3。Community Summaries本身就是对数据全局结构和语义的高度概括,即使没有问题,用户也可以通过浏览不同层次的Community Summaries来理解语料库。Community Summaries的生成方式需要能够扩展到非常大的数据集。子社区的summaries通过优先级将社区元素摘要(节点、边、协变量)迭代添加到LLM上下文窗口中,直到达到token限制。更高级别的社区摘要则迭代用子社区摘要替换元素摘要来压缩上下文,直到适合上下文窗口。

  6. 对于给定的查询,使用Community Summaries生成Community Answers右第2行)。根据社区在层次结构中的级别,Community Summaries用于以不同的方式生成最终答案。无论使用哪个级别,基本思路都是随机打乱Community Summaries并划分为指定大小的块,确保相关信息分布在不同的上下文窗口中。然后并行地从每个块中生成中间答案,并附上一个指示其对目标问题有多大帮助的打分。

  7. 使用查询相关的摘要对Community Answers进行汇总,生成最终答案右第1行)。中间Community Answers按照相关性打分降序排列,迭代添加到一个新的上下文窗口中,直到达到token限制。这个最终上下文用于生成返回给用户的全局答案。

4. 实验发现

作者在两个数据集上评估了Graph RAG方法:

  1. Podcast transcripts:由Kevin Scott与其他技术领导者的播客对话记录编译而成。

  2. News articles:由2013年9月至2023年12月发表的新闻文章组成的数据集。

作者从全面性(comprehensiveness)、多样性(diversity)和赋能(empowerment)三个维度,评估了Graph RAG和几种基线方法的质量。实验结果表明:

  • 所有的全局方法在全面性和多样性上均好于一般的RAG方法。

  • 使用中间层次和低层次社区摘要的Graph RAG在这些指标上表现好于源文本摘要。

  • 对于频繁的全局查询,使用根级社区摘要(C0)的Graph RAG是一种高效的方法,与其他全局方法相比,它在全面性(72%胜率)和多样性(62%胜率)上具有优势,而token成本却大幅降低。

5. 结论

本文提出了一种全局Graph RAG方法,将知识图谱生成、RAG和QFS技术融为一体,以支持文本语料库的整体理解。初步评估表明,与一般的RAG基线相比,该方法在答案的全面性和多样性方面有显著改进,并且好于全局但无图索引的方法。对于需要对同一数据集进行多次全局查询的场景,基于实体图索引的根级社区摘要提供了一种优越的数据索引方式,它不仅好于RAG,而且以一小部分的token成本达到了与其他全局方法相当的性能。


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询