发布时间:2024 年 10 月 11 日
RAG
StructRAG: Boosting Knowledge Intensive Reasoning of LLMs via Inference-time Hybrid Information Structurization
RAG 是提升 LLM 在知识密集型任务中表现的关键技术。然而,现有方法在处理复杂推理任务时,由于信息分散,难以准确提取关键信息。本文借鉴人类将信息结构化的认知过程,提出了 StructRAG 框架,通过识别并重构任务所需的最佳结构,实现更精准的推理。实验证明,StructRAG 在多任务中表现卓越,尤其在挑战性场景中,展现了其在复杂应用中提升 LLM 能力的巨大潜力。
如遇无法添加,请+ vx: iamxxn886
- 为什么要提出StructRAG?
大语言模型在复杂真实场景中虽然有很大的进步了,但是仍然有以下几个问题:
- •1. 缺乏特定领域的知识
- •2. 缺乏实时更新的知识
为了解决以上问题,大家提出了检索增强生成(RAG)方法,用来提供必要的外部知识。RAG 方法将原始文档分割成较短的块,根据查询检索最相关的块,然后使用这些块使 LLMs 生成可靠的答案。
但是,由于这些任务所需的相关信息的分散性 ,当前的 RAG 方法无法有效地处理知识密集型推理任务。知识密集型推理任务通常需要大量有用的信息,这些信息分散在提供的文档的许多位置,同时模型在检索有用信息后需要进行综合推理。
以财务报告分析为例,大量的财务文件和比较多家公司发展趋势的问题时,LLMs 需要挖掘出分散在原始文件中的所有相关财务指标,然后通过仔细比较和综合分析这些指标来生成见解。
在这种情况下,标准的 RAG 方法在准确检索所有相关的文本块(可能包含大量噪声)以及整合多个关键信息进行推理时,效果往往不佳。
从人类的角度来看 ,人们不是通过简单地阅读原始文本解决知识密集型推理任务的。人类通常将文档中的分散信息总结为结构化知识 ,然后用于缩短推理路径并实现更准确的判断。
此外,认知适配理论表明,人类在不同任务中倾向于使用不同类型的结构化知识 ,例如:用于统计分析任务的表格和用于长链推理的图表。
因此,是否可以采用类似人类的思维过程 ,在推理过程中将分散的信息转换为各种结构格式,从而更好地服务知识密集型推理任务。
所以,本篇论文作者提出了 StructRAG,采用混合信息结构化机制,根据任务要求以最合适的格式构建和利用结构化知识。
- StructRAG架构
如上图所示,StructRAG包括三个模块,作用分别是:
- • 确定最合适的结构类型:鉴于不同的结构类型适用于不同的任务,提出了一种混合结构路由器 ,根据当前任务的问题和文档信息确定最合适的结构类型。
- • 以目标结构类型(格式)构建结构化知识:鉴于构建结构化知识复杂且需要强大的理解和生成能力,采用基于 LLM 的分散知识结构化器 将原始文档转换为最优类型的结构化知识。
- • 利用结构化知识推断最终答案:由于知识密集型推理任务中的问题通常是复杂的复合问题,难以直接解决,因此使用结构化知识利用器 进行问题分解和精确知识提取,以进行更准确的答案推断。
2.1 混合结构路由器(Hybrid Structure Router)
从人类的角度来看,在解决知识密集型 推理任务时,倾向于使用最符合所面临任务特定要求的结构化知识类型。为此,StructRAG 设计了混合结构路由器 来选择最优结构类型。
路由器利用问题 q 和文档 D 的核心内容 C 来做出决策并生成最合适的结构类型 t。
核心内容 C 是每个文档的标题或前几句话的浓缩。
对于五种知识密集型任务,有五种候选结构类型:
- • 用于统计任务的表格
- • 用于长链任务的图
- • 用于规划任务的算法
- • 用于总结任务的目录
- • 用于简单单跳任务的块
考虑到路由器在整个框架中的核心作用,设计了一种基于 DPO 的训练方法来开发在知识类型决策方面表现出色的路由器。
混合结构路由器的DPO训练
使用 DPO 算法训练路由器,在实现与强化学习类似的结果的同时,避免了对额外奖励模型的需求。
训练数据:由于对于最优结构类型选择任务没有现有的偏好数据,设计了一种合成-模拟-判断方法来有效地构建用于训练的偏好对。
上图为其中一个数据构建的提示词,更多提示词可以参考原文附录。
如上图,给定几个涵盖可能结构类型的手动收集的种子任务:
- • 首先使用大型语言模型(LLM)通过上下文学习方法合成一组新任务,其中每个任务都包含一个问题和文档的核心上下文。
- • 然后,对于每个合成任务,使用大型语言模型(LLM)模拟通过不同类型的结构化知识解决此任务的过程,从而获得不同的模拟解决方案。
- • 最后,基于大型语言模型(LLM)的判断器比较这些用于解决任务的模拟解决方案,生成关于结构类型的偏好对。每个构建的数据条目包括一个问题、文档的核心内容、所选结构类型和被拒绝的结构类型。
- • 合成的偏好对包括英语和中文数据,以提高通用性。
2.2 分散知识结构化器(Scattered Knowledge Structurizer)
在确定最合适的结构类型后,StructRAG 提取分散在原始文档中的文本知识并将其重构为结构化知识。
这个过程需要对所有原始文档有全面的理解,并对信息进行精确的格式化。
StructRAG 采用基于 LLM 的分散知识结构化器来促进结构化过程。结构化器 S 以问题 q、选定的类型 t 和每个原始文档作为输入,通过 LLMs 从文档中提取结构化知识和结构化知识的描述。
表格通过 markdown 表示,图形通过头-关系-尾三元组列表表示,块通过常规文本表示,算法通过伪代码表示,目录通过带有分层编号(例如,第一节,1.1,1.1.2)作为明确章节标识符的文本表示。
2.3 结构化知识利用器(Structured Knowledge Utilizer)
在获得最佳类型的结构化知识后,StructRAG 进行推理回答问题。考虑到问题可能具有高度组合性,可能会阻碍在结构化知识中识别和使用相关信息。
因此,StructRAG 采用基于 LLM 的结构化知识利用器来促进问题分解、精确知识提取和最终答案推理。
结构化知识利用器以原始问题 q 和结构化知识的整体描述作为输入,将问题分解为几个简单直观的子问题 q(j)。
接下来,从整个结构化知识中为每个子问题 q(j)找出精确知识。
最后,推理过程整合所有子问题及其提取的精确知识以生成最终答案 a。
- 效果评估
3.1 总体结果
基于上表结果(LLM打分),StructRAG 在大多数任务和文档长度设置中优于基线,并且在总体指标中,StructRAG 在 LLM 分数和 EM 率方面都超过了所有基线。
StructRAG 与长上下文基线的性能比较表明,StructRAG 在 Set 1、Set 2、Set 3 和 Set 4 上分别实现了约 9、15、22 和 23 的性能改进。
上表显示,StructRAG 在 Podcast Transcripts 中与所有基线相比实现了最佳平均性能。
3.2 消融实验
上表中的“w/o router”指随机路由,“w/o structurizer”意味着仅使用块,“w/o utilizer”指直接将结构化知识与原始问题连接以生成答案。
- • 1)所有三个模块都对整体框架有积极贡献。去除这三个模块中的任何一个都会导致性能显著下降。对于路由器、结构化器和利用器,整体性能将分别从 60.38 降至 45.33、53.92 和 55.94。证明了这三个模块都起着不可替代的作用,StructRAG 紧密有序地结合了这三个模块以实现出色的整体性能。
- • 2)选择合适的结构类型并将文档构建为结构化知识比设计复杂的利用方法更关键 。表中的比较显示不同模块具有不同的重要性。当去除路由器时,性能下降最为显著,从 60.38 降至 45.33。相比之下,去除利用器导致的性能下降较小,从 60.38 降至 55.94。这表明:像现有方法那样简单地进行问题精炼对于知识密集型推理任务提供的改进有限,更有前途的方向是构建和使用合适类型的结构化知识。
3.3 路由器的效果
为了探索构建数据和进行 DPO 训练的必要性,以及混合结构路由器的性能与整体 StructRAG 之间的关系,首先将路由器与原始 LLM 进行比较,然后绘制路由器和整体 StructRAG 分数的曲线。有以下结论:
- • 1)训练的模型优于Few Shot :对于未经特殊训练的原始 LLM,根据任务选择最优知识类型有一定难度。根据上表的实验结果,基于 Qwen2-7B-Instruct 模型训练的路由器明显优于具有少样本设置的 72B 模型 。
2)混合结构路由器的性能与 StructRAG 的最终性能有显著相关性。Qwen2-72B-Instruct(零样本)作为弱路由器,并设计了一个完全随机的路由器和一个完全错误的坏路由器。图中的曲线清楚地显示了路由器准确性与 StructRAG 框架的整体性能之间的正相关关系 。这进一步证明,在知识密集型推理任务中,选择与任务需求匹配的知识类型进行增强至关重要。
3.4 固定类型知识的缺陷
为了进一步验证包含混合类型结构而非固定类型的重要性,在所有评估任务中将框架中使用的结构类型冻结为块、图、表、算法或目录。
使用单一固定类型的知识无法在各种任务中取得良好的性能。无论是分数还是精确匹配率,使用单一固定类型的表现都不如根据需求选择最优结构类型。
3.5 关于 EM 指标的案例研究
StructRAG 在总体分数上超过了基线,但在精确匹配率的七个子情况下表现不佳。因此,分析了一些 StructRAG 方法得分高但精确匹配失败的案例。
原因主要是结构化过程可能会改变原始信息的文本格式。结构化知识和原始信息之间存在一些措辞差异(例如表中从原始的“1,308,463 美元”到“138463”)。
这与常识相符,其中结构化器是一个概率语言模型而不是基于规则的模型,因此一些可能的文本损失可能是不可避免的,GraphRAG 方法的输出也显示了类似的问题。
3.6 效率报告
与 RQ-RAG 和 GraphRAG 进行比较。延迟包括两个部分:
- • 第一部分是构建延迟,指的是 RQ-RAG 迭代检索块、GraphRAG 构建图以及 StructRAG 确定最优知识类型并构建相应结构的过程。
- • 第二部分是读取延迟,指的是使用增强知识生成最终答案的过程。
| 方法 | 构建 | 读取 | 总延迟 | | RQ-RAG | 7.8 | 1.2 | 9.0 | | GraphRAG | 215.3 | 1.8 | 217.1 | | StructRAG(我们的) | 8.2 | 1.5 | 9.7 |
StructRAG 的延迟略高于 RQ-RAG,但明显快于 GraphRAG。因此,StructRAG 是一种具有可用实现速度的高性能框架。
- • 论文原文: https://arxiv.org/abs/2410.08815
- • 获取更多最新 Arxiv 论文更新: https://github.com/HuggingAGI/HuggingArxiv!
- • 加入社群,+v: iamxxn886
- • 点击公众号菜单加入讨论