RAG技术学习-6
6 RAG中的增强过程(Augmentation)
6.1 RAG的增强阶段
作为一项知识密集型任务,RAG在语言模型训练的预训练、微调和推理阶段采用了不同的技术方法。
6.1.1 预训练阶段
该部分讨论了在预训练阶段使用检索方法来增强预训练语言模型(PTMs)在开放域问答(QA)中的性能。这里主要介绍了几种不同的方法和模型,包括REALM、RETRO、Atla和COG,以及RETRO++。下面对每个模型的核心思想和特点进行概述和分析。
方法名称 | 目标 | 方法 |
---|---|---|
REALM | 提出一种更模块化、可解释的知识嵌入方法 。 | 遵循掩码语言模型(MLM)范式,将预训练和微调视为一个检索-然后-预测的过程。 |
RETRO | 利用检索增强来预训练一个自回归语言模型。 | 在GPT模型的基础上增加了一个额外的RETRO编码器,用于编码从外部知识库检索到的邻近实体的特征,并在解码器结构中加入块状交叉注意层。 |
Atla | 使用T5架构,在预训练和微调阶段引入检索机制 。 | 预训练前,使用预训练的T5初始化编码器-解码器LM骨架,使用预训练的Contriever初始化密集检索器。 |
COG | 通过逐渐从现有文本集合中复制文本片段(如单词或短语)来形式化其生成过程 。 | 使用高效的向量搜索工具来计算文本片段的有意义的上下文表示,并对其进行索引 。 |
RETRO++ | 增加模型的参数规模,探索大型模型是否可以使用RAG方法进行预训练。 | 在文本生成质量、事实准确性、低毒性和下游任务准确性方面取得了一致的改进,特别是在知识密集型任务中表现突出 。 |
6.1.2 微调阶段
在微调阶段,研究者们采用了多种方法来微调检索器和生成器,以提高信息检索的效果,主要应用于开放域问答任务。下面是对这些方法的概述和分析:
方法名称 | 目标 | 方法 |
---|---|---|
REPLUG | 将语言模型(LM)视为黑盒,通过可调整的检索模型来增强它 | 通过从黑盒语言模型获得的监督信号,REPLUG改进了初始检索模型 |
UPRISE | 通过在多样化的任务集上微调来创建轻量级和多功能的检索器 | 这种检索器能自动为零样本任务提供检索提示,显示其普遍性和在任务和模型间的改进性能 |
SURGE | 引入对比学习的概念,对检索器和生成器进行端到端微调 | 使用基于图神经网络(GNN)的上下文感知子图检索器,从与正在进行的对话相关的知识图中提取相关知识 |
微调阶段的增强方法具有以下几个特点:
- 同时微调LLM和检索器可以更好地适应特定任务,提供了灵活性,可以单独或同时微调两者。
- 微调的优越性还扩展到适应多样化的下游任务,使模型更加多功能。
- 微调还使模型能更好地适应不同语料库中的不同数据结构,特别是对于图结构语料库,如SURGE方法所示。
- 微调也存在局限性,如需要为RAG微调专门准备的数据集,以及与推理阶段的RAG相比需要大量的计算资源。
总的来说,在微调过程中,研究者可以根据特定的需求和数据格式定制模型,与预训练阶段相比,这降低了资源消耗,同时保留了调整模型输出风格的能力。
6.1.3 推理阶段
在推理阶段,将检索-生成增强(RAG)方法与大型语言模型(LLM)结合成为了一个流行的研究方向。具体来说,这个方向主要依赖于在推理阶段整合检索内容。以下是对这方向中几种方法的概述和分析:
方法名称 | 方法 | 优点 |
---|---|---|
Naive RAG | 在推理阶段整合检索内容 | - |
DSP | 在RAG中引入更丰富的上下文 | 依赖于一个复杂的流程,涉及在固定的语言模型(LM)和检索模型(RM)之间传递自然语言文本 |
PKG | 为LLMs配备一个知识引导模块,允许访问相关知识而不改变LLMs的参数 | 使模型能执行更复杂的任务 |
CREA-ICL | 利用同步检索跨语言知识来帮助获取额外信息 | - |
RECITE | 通过从LLMs中抽取一个或多个段落来形成上下文 | - |
ITRG | 增强对需要多步推理的任务的适应性 | 通过迭代检索和搜索正确的推理路径来实现 |
ITERRETGEN | 采用迭代方法来整合检索和生成 | 实现“检索增强生成”和“生成增强检索”的交替过程 |
IRCOT | 融合RAG和CoT的概念,使用交替的CoT引导检索并使用检索结果来改善CoT | 显著提高了GPT-3在各种QA任务上的性能 |
6.2 数据源增强
数据源是RAG(检索-生成增强)方法有效性的关键因素。不同的数据源提供了不同的知识粒度和维度,需要不同的处理方法。它们主要分为三类:
- 非结构化数据
- 结构化数据
- LLM生成的内容
6.2.1 非结构化数据的增强
非结构化数据主要包括文本数据,通常来自纯文本语料库。此外,其他文本数据也可以作为检索源,例如用于大型模型微调的提示数据和跨语言数据。
- 文本粒度方面,除了常见的块(包括句子),检索单元可以是词汇、短语, COG和文档段落。更细粒度的检索单元通常能更好地处理罕见模式和域外场景,但增加了检索成本。
- 在词汇层面,FLARE采用主动检索策略,仅在LM生成低概率词汇时进行检索。该方法涉及生成临时的下一句话以检索相关文档,然后在检索文档的条件下重新生成下一句话,以预测后续句子。
- 在块层面,RETRO使用前一个块来检索最近邻的块,并将此信息与前一个块的上下文信息整合,以指导下一个块的生成。RETRO通过交叉注意力将前面的块(C1, . . . , Ci−1)的上下文信息和最近邻块N(Ci−1)的检索信息融合,以指导下一个块Ci的生成。
6.2.2 结构化数据的增强
结构化数据源,如知识图谱(KG),正逐渐融入RAG的范式。经过验证的KG可以提供更高质量的上下文,降低模型幻觉的可能性。
- RET-LLM:通过从过去的对话中提取关系三元组来构建个性化的知识图谱记忆,供将来使用。
- SUGRE:使用图神经网络(GNN)嵌入从知识图谱中检索的相关子图,防止模型生成上下文不相关的回复。SUGRE采用了一种图编码方法,将图结构反映到PTMs的表示空间中,并使用图文模式间的多模态对比学习目标,以确保检索到的事实与生成的文本之间的一致性。
- KnowledgeGPT:以代码格式生成知识库(KB)的搜索查询,并包含预定义的KB操作函数。除了检索外,KnowledgeGPT还提供了在个性化知识库中存储知识的能力,以满足个别用户的需求。
6.2.3 LLM生成内容的RAG
有些研究发现,RAG回忆的辅助信息并不总是有效的,甚至可能有负面效果,因此拓展了RAG的范式,更深入地挖掘LLM的内部知识。这种方法利用LLM自身生成的内容进行检索,旨在提高下游任务中的性能。
- SKR:使用标记的训练集,将模型可以直接回答的问题分类为已知,需要检索增强的分类为未知。模型被训练以辨别问题是否已知,仅将检索增强应用于识别为未知的输入,而直接回答其他问题。
- GenRead:将LLM生成器替换为检索器。实验结果表明,生成的上下文文档包含正确答案的情况比Naive RAG检索到的情况更普遍,生成的答案也展示出更高的质量。该模型将这归因于生成文档级上下文的任务与因果语言建模的预训练目标之间的一致性,允许更好地利用模型参数中存储的世界知识。
- Selfmem:迭代使用检索增强生成器来创建一个无界的内存池。使用内存选择器选择输出作为后续生成的内存。这个输出作为原始问题的对偶问题。通过结合原始问题和对偶问题,检索增强的生成模型可以利用自己的输出来增强自己。
6.3 过程增强
RAG(检索-生成增强)研究中,大多数情况下仅执行一次检索和生成过程。然而,单次检索可能包含冗余信息,导致“中间迷失”现象。这种冗余信息可能会掩盖关键信息或包含与真实答案相反的信息,从而对生成效果产生负面影响。此外,单次检索获得的信息在需要多步推理的问题上是有限的。
为优化检索过程,当前方法主要包括迭代检索和自适应检索。这些方法允许模型在检索过程中多次迭代或自适应地调整检索过程,以更好地适应不同任务和场景。
6.3.1 迭代检索
- 根据原始查询和生成的文本定期收集文档可以为LLM提供额外的材料。多次迭代检索中提供额外参考资料已提高了后续答案生成的鲁棒性。然而,这种方法可能在语义上不连贯,并可能导致收集噪声和无用信息,因为它主要依赖于一系列n个令牌来分离生成和检索的文档。
- 递归检索和多跳检索用于特定的数据场景。递归检索可以首先通过结构化索引处理数据,然后逐级检索。在检索层次丰富的文档时,可以为整个文档或长PDF的每个部分制作摘要,然后根据摘要进行检索。确定文档后,对内部块进行第二次检索,从而实现递归检索。多跳检索通常用于进一步挖掘图结构数据源中的信息。
6.3.2 自适应检索
在RAG方法中,检索过程的优化是一个关键的挑战。传统的RAG方法,如Naive RAG和DSP,遵循一种被动方法,即优先考虑检索。这种方法涉及根据上下文查询相关文档并输入到LLM中,可能导致效率问题。然而,随着技术的发展,Flare和Self-RAG等自适应检索方法,已经被提出并优化了RAG检索过程,使LLM能够主动判断检索的时机和内容,帮助提高检索信息的效率和相关性。
实际上,LLM主动使用工具和做出判断的方式并非起源于RAG,而是已在大型模型的代理中广泛使用。例如,Zhang等人提出的Graph-Toolformer中已经提及LLMs主动使用检索器,而Self-Ask和DSP尝试使用小样本提示触发LLM搜索查询。当LLM认为有必要时,可以决定搜索相关查询以收集必要材料,类似于代理的工具调用。
这些不同的方法展示了在RAG检索增强中的创新策略,旨在提升模型性能和有效性。通过迭代检索和自适应检索的应用,LLM可以更有效地处理复杂和多维度的问题,同时避免无效或不相关信息的干扰,从而提高生成内容的准确性和相关性。
方法名称 | 检索方法 |
---|---|
Naive RAG | 被动检索 |
DSP | 被动检索 |
Flare | 自适应检索 |
Self-RAG | 自适应检索 |
Graph-Toolformer | LLM主动使用检索器 |
Self-Ask | LLM主动使用检索器 |
DSP | LLM主动使用检索器 |
相关文章
链接:
LLM与RAG的初识-1
LLM与RAG的初识-2
LLM与RAG的初识-3
LLM与RAG的初识-4
LLM与RAG的初识-5
参考文献
[1] Yunfan G, Yun X, Xinyu G, Kangxiang J, Jinliu P, Yuxi B, Yi D, Jiawei S, Haofen W, et al. Retrieval-Augmented Generation for Large Language Models: A Survey[J], CoRR, 2023, abs/2312.10997
[2] Deng C, Yan W, Lemao L, Shuming S, et al. Recent Advances in Retrieval-Augmented Text Generation[C], Annual International ACM SIGIR Conference on Research and Development in Information Retrieval, 2022: 3417–3419.
[3] Ruochen Z, Hailin C, Weishi W, Fangkai J, Do X L, Chengwei Q, Bosheng D, Xiaobao G, Minzhi L, Xingxuan L, Shafiq J, et al. Retrieving Multimodal Information for Augmented Generation: A Survey.[J], CoRR, 2023, abs/2303.10868: 4736-4756.
[4] Xin C, Di L, Xiuying C, Lemao L, Dongyan Z, Rui Y, et al. Lift Yourself Up: Retrieval-augmented Text Generation with Self Memory[J], CoRR, 2023, abs/2305.02437
[5] Zhihong S, Yeyun G, Yelong S, Minlie H, Nan D, Weizhu C, et al. Enhancing Retrieval-Augmented Large Language Models with Iterative Retrieval-Generation Synergy.[J], CoRR, 2023, abs/2305.15294: 9248-9274.
[6] Menglin X, Xuchao Z, Camille C, Guoqing Z, Saravan R, Victor R, et al. Hybrid Retrieval-Augmented Generation for Real-time Composition
Assistance[J], CoRR, 2023, abs/2308.04215
[7] Zachary L, Chenglu L, Wangda Z, Anoushka G, Owen H, Millie-Ellen P, Wanli X, et al. Retrieval-augmented Generation to Improve Math Question-Answering: Trade-offs Between Groundedness and Human Preference[J], CoRR, 2023, abs/2310.03184