目录
2.2.1 Source Documents → Text Chunks
2.2.2 Text Chunks → Element Instances
2.2.3 Element Instances → Element Summaries
2.2.4 Element Summaries → Graph Communities
2.2.5 Graph Communities → Community Summaries
2.2.6 Community Summaries → Community Answers → Global Answer
1 摘要和介绍
1.1 简介
GraphRAG是由知识图谱加大模型一起加持的RAG检索增强技术
GraphRAG 是一种结构化的分层检索增强生成方法,而不是简单的使用纯文本片段的语义搜索。GraphRAG 流程包括从原始文本中提取知识图谱、构建社区层次结构、为这些社区生成摘要,然后在执行基于 RAG 的任务时利用这些结构。
1.2 RAG介绍
检索增强生成(RAG,Retrieval Augmented Generation)是一种将信息检索与生成模型(如 GPT 系列)相结合的技术,旨在提高生成式 AI 系统的准确性和信息丰富性。通过检索来增强模型生成的效果。
RAG 的中文名称是检索增强生成,从字面意思来理解,包含三个检索、增强和生成三个过程。
- 检索: 根据用户的查询内容,从外挂知识库获取相关信息。具体来说,就是将用户的查询通过嵌入模型转换成向量,以便与向量数据库中存储的知识相关的向量进行比对。通过相似性搜索,从向量数据库中找出最匹配的前 K 个数据。
- 增强: 将用户的查询内容和检索到的相关知识一起嵌入到一个预设的提示词模板中。
- 生成: 将经过检索增强的提示词内容输入到大语言模型(LLM)中,以此生成所需的输出。 流程图如下所示:
与普通RAG系统类似,GraphRAG整个Pipeline可划分为索引与查询两个阶段。索引过程利用LLM提取出节点(如实体)、边(如关系)和协变量(如 claim),然后利用簇检测技术对整个知识图谱进行划分,再利用LLM进一步总结。
1.3 当前RAG技术存在的问题
普通的RAG技术无法回答针对整个语料库的摘要性问题QFS。
对于QFS问题,使用RAG增强后的文本长度很容易超出已有的LLM模型的文本窗口大小。如果增大文本窗口,也容易导致信息迷失
相比之下,使用Graphrag技术可以综合QFS和RAG的优势:
1.使用预索引来支持RAG完成目标的全局总结,回答用户的总结性、概括性的问题,如“××文章的核心主题是什么?”
2.RAG 技术通过从外部知识库中检索相关信息,可以扩充要索引的源文本的数量
1.4 研究重点
论文探索了一种新的方法,利用图的模块性和簇检测算法,将图划分为由紧密相关节点组成的簇。这种方法有助于更有效地分析和理解图中的信息,从而提高信息处理的效率和准确性:
- 模块性(modularity):是指图中节点可以自然地分成不同的群组或“簇”,这些群组内部的节点之间连接紧密,而群组之间的节点连接相对较少
-
簇检测算法(community detection algorithms),这些算法可以将图划分为若干个模块化的簇。在这些簇中,节点之间的关系更加紧密,形成一种自然的群组
2 GraphRAG处理流程和方法
2.1 整体流程
- Source Documents
描述:原始输入数据,通常是大量的文本文件或文档。
操作:从源文档中提取文本并进行分块(chunking)。 - Text Chunks
描述:从源文档提取并分块后的文本。每个块可能代表文档中的一小部分内容。
操作:对这些文本块进行领域定制的摘要(domain-tailored summarization),生成更具体的内容。 - Element Instances
描述:经过第一次领域定制摘要后的元素实例,包含更具体的信息片段。
操作:再次进行领域定制的摘要,以进一步精炼和组织内容。 - Element Summaries
描述:经过多次领域定制摘要后形成的元素摘要,代表了信息的精简形式。
操作:使用社区检测算法(community detection)将元素摘要划分成具有模块化特性的图社区(Graph Communities)。 - Graph Communities
描述:通过社区检测算法得到的图社区,每个社区包含了密切相关的元素摘要。
操作:对每个图社区进行领域定制的摘要,生成社区级别的摘要(Community Summaries) - Community Summaries
描述:代表每个图社区的综合摘要,提供了社区内信息的整体视图。
操作:根据特定的查询需求,进行基于查询的摘要(query-focused summarization),得到社区答案(Community Answers)。 - Community Answers
描述:针对查询从每个社区生成的答案,包含了与查询最相关的信息。
操作:汇总所有社区答案,进行进一步的基于查询的摘要,得到全局答案(Global Answer)。 - Global Answer
描述:最终生成的答案,综合了所有社区的答案,提供了对查询的全面且简洁的回答。
-
Indexing Time 阶段:将大量文本数据进行预处理和组织,通过多次摘要和社区检测算法,将信息划分成结构化的模块,以便后续查询时高效检索和处理。
-
Query Time 阶段:在收到查询请求后,利用预处理阶段生成的图社区和摘要,快速生成与查询相关的答案。这个阶段的重点是针对特定查询需求。
2.2 具体流程
2.2.1 Source Documents → Text Chunks
在设计信息提取和处理系统时,文本块分割粒度的重要性:
- 文本块粒度选择:在分割源文档时,需要考虑文本块的长度(或粒度)。较短的文本块可能需要更多的 LLM 调用,但在信息提取方面可能更有效。
- 上下文窗口限制:LLM 有一个上下文窗口的限制,过长的文本块可能会导致部分信息无法被有效提取,影响回忆率。
在具体的实验中,较短的文本块(如 600 tokens)比较长的文本块(如 2400 tokens)能够提取出更多的实体引用。平衡回忆率和精确度:在设计信息提取系统时,需要找到回忆率和精确度之间的平衡,既能获取尽可能多的相关信息,又能确保提取的信息准确。
2.2.2 Text Chunks → Element Instances
文本块的信息提取流程,利用大型语言模型(LLM)从文本中提取图节点和边的信息,并根据不同领域的需求进行定制。
该流程的关键点包括:
- 多部分提示:分阶段提取实体和关系。首先是识别文本中所有的实体,获取它们的基本信息,然后再去识别这些实体之间的关系,这包括明确指出关系的来源和目标实体,以及这些关系的具体描述。</