技术动态 | 微软发表GraphRAG论文并即将开源项目

32181d6e4eb7ac2629e73f00838eb66b.png

全文摘要:

微软发表GraphRAG论文"From Local to Global: A Graph RAG Approach to Query-Focused Summarization"并即将开源项目,论文讨论GraphRAG方法,用于对文本语料库进行问题回答,结合了检索增强生成和图形索引,以提高答案的全面性和多样性。

主要观点:

- GraphRAG将检索增强生成与知识图谱索引相结合,用于问题回答。

- 旨在提高文本语料库答案的全面性和多样性。

- 该方法在分层图结构中使用社区摘要进行可扩展的索引。

- GraphRAG相对于简单的RAG基准显示出实质性改进。

- 为迭代式问题回答提供了高效的根级社区摘要。

- 随着更高级别社区摘要的增加,GraphRAG的效率也增加。

- 在元素提取提示方面,权限方面可能会受益于进一步的细化。

相关阅读:

微软的GraphRAG:智能问答系统的革命

GraphRAG: 解锁大模型RAG知识增强

论文摘要:

0e891bc3bfe0bb5e1c5a884d33fdbd9b.png

GraphRAG(图检索增强生成)是一种通过将文本提取、网络分析以及LLM提示和摘要结合到单一端到端系统中,丰富理解文本数据集的技术。利用检索增强生成(RAG)从外部知识源中检索相关信息,使得大型语言模型(LLMs)能够回答关于私有和/或先前未见文档集合的问题。

然而,RAG 在针对整个文本语料库的全局问题上失败,例如“数据集中的主题是什么?”因为这本质上是一个面向查询的总结(QFS)任务,而不是一个明确的检索任务。与此同时,先前的 QFS 方法未能扩展到典型 RAG 系统索引的文本数量。

为了结合这些对立方法的优势,我们提出了一种GraphRAG 方法,用于回答关于私有文本语料库的问题,这种方法可随用户问题的普遍性和待索引源文本的数量进行扩展。

我们的方法使用一个LLM在两个阶段构建基于知识图谱的文本索引:首先从源文档中导出实体知识图谱,然后为所有相关实体组的社区生成摘要。给定一个问题,每个社区摘要都用于生成部分响应,然后所有部分响应再次在最终响应中对用户进行总结。

对于 1 百万token范围内数据集中的一类全局概念理解问题,我们展示了GraphRAG相对于朴素RAG基线在生成答案的全面性和多样性方面取得的重大改进。即将在此 https URL https://www.microsoft.com/en-us/research/project/graphrag/ 上发布基于 Python 的开源实现,包括全局和本地GraphRAG 方法。

论文主要内容视频:

进度条,百分之8

ea6bcbcb2ca599c7e30008f23e90ad17.png

图1,使用源文档文本的基于LLM推导的图索引来构建RAG管道。这个索引涵盖了通过专门针对数据集领域定制的LLM提示检测、提取和总结的节点(例如实体)、边缘(例如关系)和协变量(例如声明)。社区检测(例如Leiden,Traag等人,2019年)被用来将图索引划分为元素(节点、边缘、协变量)组,LLM可以在索引时间和查询时间同时并行总结这些组中的内容。对于给定查询的“全局答案”是使用终极的一轮面向查询的总结生成,该总结涵盖了所有与该查询相关性报告的社区总结。

GraphRAG方法与流程

我们现在解开GraphRAG方法(图1)和流程的高级数据流,描述每个步骤的关键设计参数、技术和实现细节。

2.1 源文档 → 文本块

一个基本的设计决策是应该以怎样的粒度将从源文档中提取的输入文本分割成文本块以供处理。在接下来的步骤中,每个这样的块将被传递给一组LLM提示,这些提示旨在提取图索引的各种元素。较长的文本块需要更少的LLM调用来进行提取,但受长LLM上下文窗口(Kuratov等人,2024年;刘等人,2023年)的回忆降级的影响。这种行为可以在图2中观察到,在单次提取轮次中(即,零个精读情况下):在一个样本数据集(HotPotQA,Yang等人,2018年)中,当使用600个标记的块大小时,提取的实体引用几乎是使用2400个标记的块大小时的两倍。虽然更多的引用通常更好,但是任何提取过程都需要在目标活动的召回和准确性之间取得平衡。

2.2 文本块 → 元素实例

这一步的基本要求是从每个源文本块中识别和提取图节点和边的实例。我们使用一个多部分LLM提示来完成这一步骤,首先识别文本中的所有实体,包括它们的名称、类型和描述,然后识别所有明显相关实体之间的关系,包括源实体和目标实体以及它们关系的描述。两类元素实例都在一个被划分元组的列表中输出。

将这个提示定制为文档语料库的领域的主要机会在于为LLM提供适用于上下文学习的少量示例的选择(布朗等人,2020年)。

例如,尽管我们的默认提示提取了“命名实体”这一广泛类别,如人物、地点和组织,这通常是适用的,但具有专业知识领域(例如科学、医学、法律)将受益于专门为这些领域定制的少样本示例。我们还支持用于提取与提取的节点实例相关的任何附加协变量的次要提取提示。我们的默认协变量提示旨在提取与检测到的实体相关联的声明,包括主体、客体、类型、描述、源文本跨度以及开始和结束日期。为了平衡效率和质量的需求,我们使用多轮“摘录”,最多进行到指定的最大值,以鼓励LLM检测可能在先前提取轮中遗漏的任何额外实体。这是一个多阶段过程,我们首先要求LLM评估是否提取出了所有实体,使用100的logit偏差来强制进行是/否决定。如果LLM回应说实体被遗漏了,然后一个继续指示“上次提取中遗漏了许多实体”将鼓励LLM摘取这些遗漏的实体。这种方法使我们能够在不降低质量(图2)或强制引入噪声的情况下使用更大的块大小。

2.3 元素实例 → 元素摘要

使用LLM“提取”实体、关系和声明的描述已经是一种抽象摘要的形式,依赖LLM创建独立有意义的概念摘要,这些概念可能被暗示但不是文本本身所述(例如,暗示关系的存在)。将所有此类实例级摘要转换为每个图元素(即实体节点、关系边缘和声明协变量)的描述文本块需要进行进一步的LLM摘要轮次,覆盖匹配实例组。

在这一阶段的一个潜在问题是,LLM在相同文本格式中可能不一致地提取对同一实体的引用,从而导致重复实体元素和因此在实体图中重复节点。但是,由于所有紧密相关的实体“社区”都将在接下来的步骤中被检测和总结,并且考虑到LLM可以理解多个名称变体背后的常见实体,我们的整体方法对这种变化是有弹性的,只要所有变体都与一组紧密相关的实体具有足够的连接性。

总的来说,我们在潜在的嘈杂图结构中对同质节点使用丰富的描述性文本与LLMs的能力以及全球、查询重点摘要的需求是一致的。这些特征还将我们的图索引与依赖简洁和一致知识三元组(主语、谓语、宾语)进行下游推理任务的典型知识图区分开来。

2.4 元素摘要 → 图社区

在前一步骤中创建的索引可以被建模为一个同质的无向加权图,其中实体节点通过关系边连接,边权重表示检测到的关系实例的规范化计数。在这样的图中,可以使用各种社区检测算法将图分区为彼此之间连接更紧密而与图中其他节点相连性较弱的节点的社区(例如,Fortunato, 2010和Jin等人, 2021提供的调查)。在我们的管道中,我们使用Leiden(Traag等人, 2019)来恢复大规模图的分层社区结构,因为它能够高效地提供这种结构(图3)。这种分层的每个级别都提供了一个社区分区,以互斥且集体穷尽的方式覆盖了图的节点,实现了分而治之的全局摘要。

2.5 图社区 → 社区摘要

接下来的步骤是根据设计用于大规模数据集的方法,创建Leiden等级制度中每个社区的类似报告的摘要。这些摘要本身在独立使用时就具有用处,可以作为理解数据集的全局结构和语义的一种方式,并且可以用来在没有问题的情况下理清一个文集。例如,用户可以在其中一个级别的社区摘要中浏览以寻找感兴趣的一般主题,然后转到提供每个子主题更多细节的较低级别报告。但在这里,我们关注它们作为用于回答全局查询的基于图的索引的一部分的效用。社区摘要是按照以下方式生成的:

bd3839b8d4c9fdcf7e2872ead6132b17.png

图 3:使用 Leiden 算法(Traag等,2019年)在 MultiHop-RAG(Tang和Yang,2024年)数据集上检测到的图社区,以索引方式表示。圆圈代表实体节点,其大小与它们的度成比例。节点布局通过 OpenORD(Martin等,2011年)和 Force Atlas 2(Jacomy等,2014年)执行。节点颜色代表实体社区,展示了两个层次聚类的情况:(a)级别 0,对应具有最大模块性的层次分区,以及(b)级别 1,揭示了这些根级社区内部结构。

• 叶级社区。叶级社区的元素摘要(节点,边缘,协变量)被优先考虑,然后迭代地添加到 LLM 上下文窗口中,直到达到令牌限制。优先顺序如下:对于每个社区边缘,按照联合源和目标节点度(即总体重要性)的降序顺序,添加源节点、目标节点、链接的协变量以及边缘本身的描述。

• 更高级别社区。如果所有元素摘要都适合上下文窗口的令牌限制,则按照叶级社区进行操作,并总结社区内的所有元素摘要。否则,按元素摘要标记的减少顺序排列子社区,并迭代替换子社区摘要(较短)以替代其关联的元素摘要(较长),直到符合上下文窗口的要求。

2.6 社区摘要 → 社区答案 → 全局答案

给定用户查询,可以使用前一步生成的社区摘要来生成最终答案,进行多阶段过程。社区结构的分层性质还意味着可以使用不同层次的社区摘要来回答问题,引发一个问题,即在分层社区结构中的特定层次是否提供了最佳的摘要详细信息和范围以回答一般意义的问题(在第 3 节中进行评估)。

对于给定的社区级别,对任何用户查询的全局答案生成如下:

• 准备社区摘要。社区摘要被随机洗牌并分成预先指定的令牌大小的块。这确保相关信息分布在块中,而不是集中(并且可能丢失)在单个上下文窗口中。

• 映射社区答案。并行生成中间答案,每个块一个。还要求 LLM 生成一个介于 0 到 100 之间的分数,指示生成的答案对回答目标问题的帮助程度。得分为 0 的答案被过滤掉。

• 缩减到全球答案。将中间社区答案按照帮助程度得分降序排列,并迭代地添加到新的上下文窗口中,直到达到令牌限制。最终的上下文用于生成返回给用户的全局答案。

fdce9b0d38dc418538aa056b9b3ec628.png

表格1:基于目标数据集简短描述生成的潜在用户、任务和问题示例,由LLM生成。问题的重点在于全局理解,而非具体细节。

播客译文

用户:寻求科技行业见解和趋势的科技记者

任务:了解科技领袖如何看待政策和监管的角色

问题:

1. 哪些集的主要内容涉及科技政策和政府监管?

2. 嘉宾如何看待隐私法对技术发展的影响?

3. 有嘉宾讨论创新与道德考虑之间的平衡吗?

4. 嘉宾提出了当前政策变更的建议有哪些?

5. 科技公司和政府之间的合作讨论了什么以及如何?

新闻文章

用户:将时事纳入课程的教育工作者

任务:教授健康和福祉知识

问题:

1. 健康领域的哪些时事话题可纳入健康教育课程中?

2. 新闻文章如何涵盖预防医学和健康概念?

3. 是否存在相互矛盾的健康文章示例,如果有,原因是什么?

4. 可以通过新闻报道获得哪些关于公共卫生优先事项的见解?

5. 教育工作者如何利用数据集突出健康素养的重要性?

微软GraphRAG项目主要参与人:

891a5eedfabff1cf478fe5d173417302.png

f64f0a3a2f5553225c51c0f293f3df4e.png

eb1a1e38da94be12cba565ebf22122d7.png

原文编译自:

https://www.microsoft.com/en-us/research/project/graphrag/


OpenKG

OpenKG(中文开放知识图谱)旨在推动以中文为核心的知识图谱数据的开放、互联及众包,并促进知识图谱算法、工具及平台的开源开放。

5705f8b22b91a36e141328a73920c761.png

点击阅读原文,进入 OpenKG 网站。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值