【LLM之RAG】GraphRAG论文阅读笔记

研究背景

本文探讨了大型语言模型(LLM)如何通过从外部知识源检索相关信息来回答关于私有或之前未见过的文档集合的问题。特别指出,传统的检索增强生成(RAG)系统在处理全局问题时存在局限性,例如问整个文本语料库的主题是什么,因为这些问题本质上是查询焦点的摘要(QFS)任务,而不仅仅是一个显式的检索任务。

研究目标

论文的目标是结合RAG和传统QFS方法的优势,提出一种图RAG方法,用于处理私有文本语料库上的问题回答。该方法旨在扩展用户问题的普遍性和需要索引的源文本数量。

相关工作

RAG相关工作

朴素RAG:这是最基本的RAG形式,涉及将文档转换为文本块,将这些块嵌入到向量空间中,然后根据查询的相似性检索最近的文本块。这种方法的主要问题是处理大数据集时的效率和效果有限。

Advanced RAG:

预检索、检索、后检索策略:这些策略旨在克服Naïve RAG的局限性,通过更精细的数据处理和查询响应机制提高性能。

Modular RAG Systems:这些系统采用迭代和动态的检索与生成周期,通过不断的检索和响应生成来逐步优化答案。

自我记忆(Self-memory):用于增强检索的文本生成,有助于未来的生成周期。

并行生成(Parallel Generation):从社区摘要中并行生成回答,是一种迭代或联邦式的检索生成策略。

Graphs 和 LLMs

本节强调了图技术在增强LLM功能方面的潜力。图不仅能作为知识的结构化表示,还能通过各种形式与LLM交互,以提高信息检索和生成的准确性和相关性。

知识图构建和补全:使用LLM来创建和完善知识图谱。这包括从文本中提取实体和关系,并使用模型来预测和验证这些关系的准确性。

因果图的提取:利用LLM从文本中提取因果关系,并构建反映这些关系的图。这种方法尤其适用于需要理解复杂事件和动态的领域,如政策分析和科学研究。

知识图索引(KAPING):在这种模式中,图结构被用作索引来支持检索增强的文本生成。

图检索(G-Retriever):在图结构中检索信息以响应查询,特别是涉及复杂关系和多步骤推理的查询。

方法论

数据处理

本研究首先从源文档中提取文本块,然后使用LLM的提示来识别和提取图索引的各种元素,包括实体和它们的关系。这些文本块被进一步处理以识别图节点和边缘的实例。

比如源代码中抽取实体和关系的prompt如下:

text 复制代码
-目标-
给定一个可能与此活动相关的文本文档和实体类型列表,从文本中识别出这些类型的所有实体以及已识别实体之间的所有关系。

-步骤-
1. 识别所有实体。对于每个已识别的实体,提取以下信息:
- 实体名称:实体名称,大写
- 实体类型:以下类型之一:[{entity_types}]
- 实体描述:实体属性和活动的全面描述
格式化每个实体,在开头和结尾处添加括号,例如 ("entity"{{tuple_delimiter}}{{tuple_delimiter}}{{tuple_delimiter}}{{tuple_delimiter}}{entity_description>)
例如:("entity"{{tuple_delimiter}}"Microsoft"{{tuple_delimiter}}"organization"{{tuple_delimiter}}"Microsoft is a technology company")

2. 从在步骤 1 中确定的实体,确定所有 *明显相关* 的 (source_entity, target_entity) 对。
对于每对相关实体,提取以下信息:
- source_entity:步骤 1 中确定的源实体的名称
- target_entity:步骤 1 中确定的目标实体的名称
- relationship_description:解释您认为源实体和目标实体相互关联的原因
- relationship_strength:1 到 10 之间的整数分数,表示源实体和目标实体之间关系的强度
格式化每个关系,在开头和结尾处添加括号,例如 ("relationship"{{tuple_delimiter}}{{tuple_delimiter}}{{target_entity>{{tuple_delimiter}}{{tuple_delimiter}}{{relationship_description>}{{tuple_delimiter}}{{relationship_strength>)
例如: ("关系"{{tuple_delimiter}}"公司 A"{{tuple_delimiter}}"人员 A"{{tuple_delimiter}}"公司 A 目前归人员 A 所有"{{tuple_delimiter}}8)

3. 以 {language} 形式返回输出,作为步骤 1 和 2 中确定的所有实体和关系的单个列表。使用 **{{record_delimiter}}** 作为列表分隔符。如果您必须翻译,只需翻译描述,无需其他内容!

4. 完成后,输出 {{completion_delimiter}}。

-真实数据-
######################
entity_types:{entity_types}
text:{input_text}
######################
output:

解决方案

Graph RAG 的全局方法,结合了知识图谱生成,检索增强生成 (RAG) 和以查询为中心的摘要 (QFS),以支持人类在整个文本语料库上进行语义建构。

其工作的pipline如下:

(1)源文档到文本块:文档被分割成更小的文本块,这一步骤关键在于确定分割的粒度。这些文本块将被用作后续步骤中图节点和边缘的基础。

(2)文本块到元素实例:使用多部分LLM提示从每个文本块中识别和提取图节点和边缘的实例。这些实例将作为图索引的基础元素,包括实体及其关系。

(3)元素实例到元素摘要:将元素实例转换为描述性文本块,这一步骤依赖于LLM的摘要能力,将文本块转化为可以独立表达的概念。

(4)元素摘要到图社区:构建的图索引被模型化为一个由节点和边缘构成的加权无向图。使用社区检测算法如Leiden算法,将图分割成模块化的社区,每个社区包含密切相关的节点。

(5)图社区到社区摘要:每个社区都生成一份摘要报告,这些摘要在解答全局查询时极为关键,它们提供了数据集的全局结构和语义理解。

(6)社区摘要到社区回答再到全局回答:根据用户的查询,使用社区摘要生成最终答案。这一多阶段过程涉及将社区摘要随机化分块,并对每个块生成中间回答,最后将所有相关的部分回答汇总成一个全局回答。

实验

实验设计

数据集:从两个真实世界数据集(播客记录和新闻文章)描述中使用LLM生成了多样化的活动中心感知问题集。数据集信息如下:

数据 描述
Podcast transcripts 来自微软首席技术官Kevin Scott与其他技术领导者之间的播客对话。
News articles 从2013年9月到2023年12月发布的新闻文章,涵盖娱乐、商业、体育、科技、健康和科学等多个类别。

查询生成:使用一个以活动为中心的方法来自动生成这样的问题:给定一个简短的数据集的描述,我们要求LLM识别N个潜在用户和N个不同的任务,然后对于每个(用户、任务)组合,我们要求LLM生成N个问题,需要理解整个语料库。对于我们的评估,N = 5的值导致每个数据集有125个测试问题。

评估指标:

  • 综合性(Comprehensiveness):这个指标衡量回答是否全面覆盖了查询的所有方面。综合性高的回答能够详细解释问题的各个组成部分,提供完整的信息和背景。
  • 多样性(Diversity):多样性指标评估回答中观点和信息的丰富程度。一个多样化的回答将展示多种观点,涵盖广泛的相关话题和不同的解释方式。
  • 赋能性(Empowerment):赋能性衡量回答在多大程度上帮助用户理解问题背景,并对相关话题做出明智的判断。高赋能性的回答提供深入分析,使用户能够根据所提供的信息采取行动或做出决策。
  • 直接性(Directness):直接性指标评估回答是否直接且精确地针对用户的查询。高直接性的回答避免了不必要的绕弯子,直接解决用户的疑问。

实验结论

结果显示,Graph RAG在综合性和多样性方面均优于朴素RAG基线,并且在这些度量上也优于全局文本总结方法。Graph RAG在处理大规模文本集时展现了其高效性和优越性。

局限性:当前评估只涉及特定类型的问题和两个100万字节的数据集。此外,尚有一些细化方法和扩展场景在未来可以进一步探索。

参考资料

相关推荐
Yawesh_best22 分钟前
思源笔记轻松连接本地Ollama大语言模型,开启AI写作新体验!
笔记·语言模型·ai写作
大拨鼠1 小时前
【多模态读论文系列】MINIGPT-4论文笔记
论文阅读
计算机-秋大田1 小时前
基于Spring Boot的船舶监造系统的设计与实现,LW+源码+讲解
java·论文阅读·spring boot·后端·vue
CXDNW2 小时前
【网络面试篇】HTTP(2)(笔记)——http、https、http1.1、http2.0
网络·笔记·http·面试·https·http2.0
使者大牙2 小时前
【大语言模型学习笔记】第一篇:LLM大规模语言模型介绍
笔记·学习·语言模型
ssf-yasuo2 小时前
SPIRE: Semantic Prompt-Driven Image Restoration 论文阅读笔记
论文阅读·笔记·prompt
ajsbxi2 小时前
苍穹外卖学习记录
java·笔记·后端·学习·nginx·spring·servlet
TeYiToKu3 小时前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
dsywws3 小时前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习
YMWM_3 小时前
论文阅读《Structure-from-Motion Revisited》
论文阅读