面向AI内容生成的检索增强生成(RAG)技术全面综述:背景、基础、进阶、应用、展望(上)

发布于: Android转发:1回复:0喜欢:1

作者:Penghao Zhao, Hailin Zhang, Qinhan Yu, Zhengren Wang, Yunteng Geng, Fangcheng Fu, Ling Yang, Wentao Zhang, Jie Jiang, Bin Cui

人工智能生成内容(AIGC)的进步,得益于模型算法的进步、基础模型的增长以及高质量数据集的获取。尽管取得了显著的成功,AIGC仍然面临着更新知识、处理长尾数据、减少数据泄露以及管理高昂的训练和推理成本等挑战。

检索增强生成(RAG)最近作为一种范式出现,以解决这些挑战。特别是,RAG引入了信息检索过程,通过从可用数据存储中检索相关对象来增强生成过程,从而提高准确性和更好的鲁棒性。

本文全面回顾了将RAG技术整合到AIGC场景中的现有努力。本文首先根据检索器如何增强生成器对RAG基础进行分类,提炼了各种检索器和生成器的增强方法论的基本抽象。这种统一的视角涵盖了所有RAG场景,阐明了促进潜在未来进展的进展和关键技术。文章还总结了RAG的额外增强方法,促进了RAG系统的有效工程和实现。

然后,从另一个角度,文章调查了RAG在不同模态和任务中的实践应用,为研究人员和从业者提供了宝贵的参考。此外,本文介绍了RAG的基准测试,讨论了当前RAG系统的局限性,并为未来的研究提出了潜在的方向。

关键词:检索增强生成,人工智能生成内容,生成模型,信息检索

I 引言

I-A 背景

近年来,围绕人工智能生成内容(AIGC)的兴趣激增。各种内容生成工具被精心制作,以在各种模态下产生多样化的输出,例如大型语言模型(LLMs),包括GPT系列和LLAMA系列用于文本和代码,DALL-E和Stable Diffusion用于图像,以及Sora用于视频。

“人工智能生成内容”一词强调,内容是由先进的生成模型而不是人类或基于规则的方法产生的。这些生成模型由于采用了新的模型算法、基础模型的爆炸性规模增长以及大量高质量的数据集而取得了显著的性能。

具体来说,序列到序列任务已经从使用长短期记忆(LSTM)网络过渡到基于Transformer的模型,图像生成任务也从生成对抗网络(GANs)转移到潜在扩散模型(LDMs)。

值得注意的是,基础模型的架构,最初由数百万个参数构成,现在已经增长到数十亿甚至数万亿个参数。这些进步进一步得到了丰富、高质量的数据集的支撑,这些数据集提供了充足的训练样本,以完全优化模型参数。

信息检索是计算机科学领域内的另一个关键应用。与生成不同,检索的目标是从大量资源中定位相关存在的对象。检索的最普遍应用在于网络搜索引擎,主要关注文档检索任务。

在当前时代,高效的信息检索系统可以处理数十亿级别的文档集合。除了文档,检索也被应用于许多其他模态。

尽管先进的生成模型取得了显著进展,但人工智能生成内容仍然面临着一些众所周知的挑战,包括努力保持最新知识、无法纳入长尾知识以及泄露私人训练数据的风险。

检索增强生成(RAG)被提出来缓解,如果不是完全解决上述挑战,通过其适应性数据存储库。用于检索的知识可以被概念化为非参数记忆,它易于修改,能够容纳广泛的长尾知识,也能够编码机密数据。

此外,检索还可以用于减少生成成本。例如,RAG可以减少大型生成模型的大小,为长文本提供支持,并消除某些生成步骤。

一个典型的RAG过程如图1所示。给定一个输入查询,检索器定位并查找相关数据源,然后检索到的结果与生成器交互以增强整体生成过程。根据检索到的结果如何增强生成,存在几种基础范式:它们可以作为增强输入服务于生成器;它们可以作为潜在表示加入到生成的中间阶段;它们可以以对数几率的形式贡献于最终生成结果;它们甚至可以影响或省略某些生成步骤。

此外,除了基础的RAG过程之外,研究人员还提出了许多增强方法来提高整体质量。这些方法包括针对各个组件的特定优化以及针对整个流程的全面增强。

在图1中,用户查询,跨越不同的模态,作为输入服务于检索器和生成器。检索器从数据源提取相关信息。生成器与检索结果交互,并最终产生各种模态的结果。

此外,虽然RAG的概念最初出现在文本到文本的生成中,但这项技术也已经在各个领域找到了应用,包括代码、音频、图像、视频、3D、知识以及科学领域的人工智能。特别是,RAG的基本思想和过程在模态之间大体一致。然而,它需要在增强技术上进行微小的调整,并且根据具体的模态和应用选择检索器和生成器会有所不同。

尽管最近对RAG的研究迅速增长,应用也在激增,但明显缺乏一个系统性的回顾,涵盖了所有基础、增强和应用,这阻碍了该领域的发展。一方面,缺乏对RAG基础的讨论显著削弱了该领域研究的实践价值,使RAG的潜力未能得到充分利用。虽然大多数研究兴趣,特别是大型语言模型(LLM)研究人员的兴趣集中在基于查询的文本生成任务上的RAG,但必须承认其他RAG基础也是有效的,并且具有重要的使用和进一步开发的潜力。

另一方面,缺乏对RAG应用的概述使研究人员和从业者忽视了RAG在多个模态中的进展,并不知道如何有效地应用RAG。尽管文本生成通常被认为是RAG的主要应用,但我们强调RAG在其他模态中的发展也开始受到关注,并取得了有希望的进展。某些模态与检索技术有着丰富的历史联系,为RAG注入了独特的特点。

受到此启发,本文的目标是提供一个全面的调查,以系统概述RAG。

I-B 贡献

本调查提供了一个全面的RAG概述,涵盖了基础、增强、应用、基准、局限性和潜在的未来方向。虽然检索器和生成器在模态和任务中表现出变化,我们提炼了RAG基础的基本抽象,将应用视为这些抽象的适应性派生。

我们旨在为研究人员和从业者提供参考和指导,为推进RAG方法论和相关应用提供宝贵的见解。总结来说,我们的贡献如下:

我们全面回顾了RAG,并提炼了各种检索器和生成器的RAG基础的抽象。

我们调查了RAG文献中的增强方法,详细阐述了实现更有效的RAG系统所利用的技术。

对于各种模态和任务,我们调查了现有的结合RAG技术的人工智能生成内容方法,展示了RAG如何为当前的生成模型做出贡献。

我们讨论了RAG的局限性和有希望的研究方向,为RAG的潜在未来发展指明了方向。

I-C 相关工作

随着RAG领域的发展,出现了几项调查;然而,它们只涉及该领域的特定方面。特别是,它们要么专门关注单一的RAG基础,要么仅为有限的场景提供RAG增强方法论的简要概述。

大多数现有工作集中在由大型语言模型(LLM)促进的与文本相关的RAG任务上,没有深入调查其他模态。Li等人的调查提供了RAG的基本概述,并讨论了文本生成任务范围内的特定应用。同样,Asai等人制作的教程侧重于基于检索的语言模型,详细说明了它们的结构和训练策略。同时,Gao等人最近的调查探索了LLMs背景下的RAG,特别强调了查询基础RAG的增强方法。

认识到RAG已经超越了文本领域,我们的工作扩大了其范围,涵盖了整个人工智能生成内容(AIGC)领域,促进了对RAG研究的更全面覆盖。此外,Zhao等人提出的另一项调查介绍了RAG在多个模态中的应用,但忽略了对RAG基础的讨论。

虽然现有的研究已经探索了RAG的各个方面,但仍然需要一个全面的概述,涵盖RAG的基础、增强及其在不同领域的适用性。在本文中,我们的目标是通过提供一个系统的RAG调查来解决这一差距。

I-D 路线图

本文的其余部分组织如下:

第二节详细介绍了RAG的初步知识,介绍了检索器和生成器。

第三节介绍了RAG的基础,并进一步增强了RAG。

第四节回顾了不同应用中RAG的现有研究。

第五节调查了RAG的基准框架。

第六节讨论了RAG的当前局限性和潜在的未来方向。

最后,第七节总结了本文。

II 初步知识

在本节中,我们提供了RAG通用架构的概述,并探讨了当今基于RAG的人工智能生成内容中的生成器和检索器。

II-A 概述

如图1所示,整个RAG系统由两个核心模块组成:检索器和生成器,其中检索器从数据存储中搜索相关信息,生成器产生所需的内容。RAG过程如下展开:(i)检索器最初接收输入查询并搜索相关信息;(ii)然后,原始查询和检索结果通过特定的增强方法输入到生成器中;(iii)最后,生成器产生所需的结果。

生成人工智能在多样化任务中的卓越表现开启了AIGC(人工智能生成内容)时代。在RAG(Retrieval-Augmented Generation,检索增强生成)系统中,生成模块扮演着至关重要的角色。不同的生成模型被应用于不同的场景,例如,变换器模型用于文本到文本的任务,VisualGPT用于图像到文本的任务,Stable Diffusion用于文本到图像的任务,Codex用于文本到代码的任务等。这里我们介绍了4种在RAG中经常使用的典型生成器:变换器模型、LSTM(长短期记忆网络)、扩散模型和GAN(生成对抗网络)。

II-A1 Transformer Model

Transformer模型是在自然语言处理(NLP)领域表现最好的模型之一,由自注意力机制、前馈网络、层归一化模块和残差网络组成。如图2所示,最终的输出序列是通过在来自标记化和嵌入的潜在表示序列上执行词汇分类来生成的。

II-A2 LSTM

如图2所示,长短期记忆(LSTM)是一种特殊形式的循环神经网络(RNN)模型。它通过引入细胞状态和门机制来解决处理长期依赖信息时的梯度爆炸/消失问题。该模型由三个门(输入门、遗忘门和输出门)组成,这些门作为信息的过滤器,以及一个核心模块——细胞状态,它可以记忆和维持信息。它使用与Transformer模型相同的词汇分类方法来自回归地生成输出。

II-A3 Diffusion Model

扩散模型是一类深度生成模型,可以创建数据(包括图像、文本、视频、分子等)的真实和多样化样本。如图2所示,扩散模型通过逐渐向数据中添加噪声直到其变得随机,然后逆转过程从噪声中生成新数据。这个过程基于概率建模和神经网络。

II-A4 GAN

生成对抗网络(GANs)是备受期待的深度学习模型,可以模拟和生成真实的图像、音频和其他数据。如图2所示,典型的GAN由两个主要组成部分构成:生成器和鉴别器。这两个部分通过对抗学习相互竞争,允许生成器不断提高生成真实样本的能力,而鉴别器不断提高其区分真假样本的能力。

II-B 检索器(Retriever)

检索是指在给定信息需求的情况下识别和获取相关信息。具体来说,让我们考虑可以被概念化为键值存储的信息资源,其中每个键对应一个值(键和值可以相同)。给定一个查询,目标是使用相似性函数搜索最相似的前k个键,并获取配对的值。根据不同的相似性函数,现有的检索方法可以分为稀疏检索、密集检索和其他方法。在广泛使用的稀疏和密集检索中,整个过程可以被划分为两个不同的阶段:(i)首先将每个对象编码成特定的表示;然后(ii)构建索引以组织数据源,以便进行高效的搜索。

II-B1 稀疏检索器(Sparse Retriever)

稀疏检索方法通常用于文档检索,其中的键/值代表要搜索的文档。这些方法利用术语匹配度量,如TF-IDF、查询可能性和BM25,这些度量分析文本中的词统计信息,并构建倒排索引以实现高效搜索。本质上,BM25是大规模网络搜索中的一个强大基线,它整合了文档频率的逆权重、查询标记出现次数和其他相关指标。

为了实现高效搜索,稀疏检索通常利用倒排索引来组织文档。具体来说,查询中的每个术语执行查找以获取候选文档列表,然后根据它们的统计分数对这些文档进行排名。

II-B2 稠密检索器(Dense Retriever)

与稀疏检索不同,密集检索方法使用密集的嵌入向量表示查询和键,并构建近似最近邻(ANN)索引以加速搜索。这可以应用于所有模态。对于文本数据,最近的预训练模型(如BERT)被用来单独编码查询和键。这种方法通常被称为密集段落检索(DPR)。类似于文本,已经提出了模型来编码代码数据、音频数据、图像数据和视频数据等。密集表示之间的相似性分数通常使用余弦、内积、L2距离等度量计算。

在训练期间,密集检索通常遵循对比学习范式,使正样本更相似,负样本更不相似。提出了几种困难负技术来进一步提高模型质量。在推理过程中,应用近似最近邻(ANN)方法进行高效搜索。开发了各种索引来服务于ANN搜索,如树、局部敏感哈希、邻接图索引(例如HNSW、DiskANN)和图索引与倒排索引的组合(例如SPANN)。

II-B3 其他(Others)

除了稀疏检索和密集检索之外,还有检索相关对象的其他方法。一些研究工作直接使用自然语言文本之间的编辑距离或代码片段的抽象语法树(AST)来进行计算。

对于知识图谱,实体通过关系链接,可以被视为预建的索引,用于检索搜索。因此,涉及知识图谱的RAG方法可以使用k跳邻居搜索作为检索过程。命名实体识别(NER)是另一种检索方式,其中输入是查询,实体是键。

III 方法

在本节中,我们介绍了RAG的基础,并概述了进一步提高有效性的增强方法。

III-A RAG基础

基于检索器如何增强生成器,我们将RAG基础分类为4类,如图3所示。

III-A1 基于查询(Query-based)的RAG

源自于提示增强的思想,基于查询的RAG将用户的查询与检索到的信息无缝整合,直接输入到语言模型输入的初始阶段。这种方法在RAG应用中非常普遍。检索后,获得的内容与用户的原始查询合并,形成一个复合输入序列,然后由生成器处理以创建响应。基于查询的RAG广泛应用于各种模态。

对于文本生成,REALM使用双BERT框架来简化知识检索和整合,将预训练模型与知识提取器结合起来。Lewis等人利用DPR进行信息检索,并使用BART作为生成器,以有效增强生成。SELF-RAG使用一个批评模块来决定是否需要检索。除了与本地生成器兼容外,基于查询的RAG还适用于使用LLM通过API调用的场景。REPLUG遵循这种方法,将语言模型视为一个“黑盒”,并有效地将相关外部文档整合到查询中。In-Context RALM使用BM25进行文档检索,并训练一个预测性重新排名器来重新排序和整合排名靠前的文档。

在代码领域,几项工作利用基于查询的范式将文本或代码的上下文信息融入提示中,从而提高了下游任务的有效性。最近在知识库问答(KBQA)中的研究也显示出结合检索和语言模型的显著效果。例如,Uni-Parser、RNG-KBQA和ECBRF通过将查询和检索信息合并到提示中,有效提高了问答系统的性能和准确性。

在科学领域的人工智能中,Chat-Orthopedist帮助青少年特发性脊柱侧凸的共享决策,通过将检索到的数据融入模型提示中,提高了LLMs的效率和信息精度。

在图像生成任务中,RetrieveGAN通过将检索到的信息(包括选定的图像块和它们的对应边界框)整合到生成器的输入阶段,增强了生成图像的相关性和准确性。IC-GAN通过将噪声向量与实例特征连接,调节生成图像的具体条件和细节。

对于3D生成,RetDream最初使用CLIP检索相关的3D资产,然后在输入阶段将检索到的内容与用户输入合并。

基于查询的RAG,通常与LLM生成器配对,提供了模块化的灵活性,允许快速整合预训练组件以快速部署。在此设置中,提示设计对于利用检索到的数据至关重要。

III-A2 基于潜在表示(Latent Representation-based)的RAG

在基于潜在表示的RAG框架中,检索到的对象作为潜在表示被纳入生成模型中。这增强了模型的理解能力,并提高了生成内容的质量。

在文本领域,FiD和RETRO是基于潜在表示的RAG的两个经典结构,许多后续工作都是基于它们的修改。FiD处理每个检索到的段落及其标题,以及查询,通过不同的编码器,然后将生成的潜在表示合并,由单个解码器进行解码以产生最终输出。RETRO检索与每个分段子查询相关的信息,然后应用一个称为块状交叉注意力(CCA)的新模块,将检索到的内容与每个子查询令牌整合。

此外,在基于潜在表示的RAG范围内,还有一些其他值得注意的新结构。几项研究将kNN搜索集成到Transformer块中,允许输入块化,并理论上解决了Transformer模型长期受到批评的上下文长度限制。Kuratov等人将Transformer与RNN集成,使用模型的中间输出作为检索的内容。

在代码和科学领域,FiD已经得到了广泛的采用,应用范围涵盖了代码相关领域和科学领域的人工智能。

在图像领域,几项研究采用交叉注意力机制,通过整合它们的潜在表示来融合检索结果。相反,Li等人实现了一个文本-图像仿射组合模块(ACM),直接连接隐藏特征。

在知识领域,几项研究采用了FiD及其衍生物进行下游任务。EaE通过实体特定的参数化增强了生成器的理解,而TOME则转向了对提及的微妙编码,优先考虑提及的粒度而不是单独的实体表示。

在3D生成领域,ReMoDiffuse引入了语义调节的注意力机制,提高了基于文本描述生成相应3D动作的准确性。AMD通过将原始扩散过程与参考扩散过程融合,实现了从文本到3D动作的高效转换。

在音频领域,Koizumi等人使用了一个LLM,在注意力模块中整合了编码的密集特征,以指导音频标题的生成。Re-AudioLDM使用不同的编码器从文本和音频中提取深度特征,然后将这些特征整合到其潜在扩散模型(LDM)的注意力机制中。

对于视频字幕,R-ConvED使用卷积编码器-解码器网络处理检索到的视频-句子对,并使用注意力机制生成隐藏状态以产生字幕。CARE引入一个概念检测器来产生概念概率,并将概念表示融入一个混合注意力机制中。EgoInstructor使用门控交叉注意力将文本和视频特征合并,提高了以自我为中心的视频字幕的相关性和连贯性。

基于潜在表示的RAG在模态和任务中具有通用性,通过合并检索器和生成器的隐藏状态,尽管它需要额外的训练来对齐潜在空间。这种方法允许创建复杂、创新的算法,有效地整合检索到的信息。

III-A3 基于对数几率(Logit-based)的RAG

在基于对数几率的RAG中,生成模型在解码过程中通过对数几率整合检索信息。通常,对数几率通过简单的求和或模型组合来计算逐步生成的概率。

在文本领域,kNN-LM及其变体结合了语言模型生成的概率和检索相似前缀的距离得出的概率,在每个解码步骤中进行合并。TRIME和NPM是传统kNN-LM方法的激进演变,使用来自本地数据库的紧密对齐的标记作为输出,特别是在长尾分布场景中显著提高了性能。

在文本之外,其他模态,如代码和图像,也利用了基于对数几率的RAG。在代码领域,几项研究也采用了kNN的概念,以增强最终输出控制,从而取得了更好的性能。此外,EDITSUM通过在对数级别整合原型摘要来提高代码摘要的质量。

对于图像字幕,MA直接应用kNN-LM框架来解决图像字幕问题,取得了有利的结果。

总之,基于对数几率的RAG利用历史数据推断当前状态,并在对数几率层面合并信息,非常适合序列生成。它专注于生成器训练,并允许利用概率分布的新方法为未来的任务。

III-A4 推测(Speculative)性RAG

推测性RAG寻求使用检索代替纯生成的机会,旨在节省资源并加快响应速度。REST用检索替换了小型模型在推测性解码中的使用,使草案的生成成为可能。GPTCache通过构建语义缓存来存储LLM响应,解决了使用LLM API时高延迟的问题。COG将文本生成过程分解为一系列复制和粘贴操作,从文档中检索单词或短语而不是生成。Cao等人提出了一种新范式,通过直接检索的短语级内容来消除最终结果对第一阶段检索内容质量的依赖,用检索代替生成。

总之,推测性RAG目前主要适用于序列数据。它将生成器和检索器解耦,使预训练模型能够作为组件直接使用。在这个范式中,我们可以探索更广泛的策略来有效地利用检索到的内容。

III-B RAG增强

在本节中,我们介绍构建的RAG系统的性能增强方法。我们根据它们的增强目标将现有的方法分类为5组:输入、检索器、生成器、结果和整个管道。

III-B1 输入增强

最初输入到检索器的输入显著影响检索阶段的最终结果。在本节中,我们介绍了两种输入增强方法:查询转换和数据增强。

查询转换

查询转换可以通过修改输入查询来增强检索结果。Query2doc和HyDE使用原始查询生成一个伪文档,该文档后来用作检索的查询。伪文档包含更丰富的相关信息,有助于检索到更准确的结果。TOC利用检索到的内容将模糊的查询分解为多个明确的子查询,这些子查询被发送到生成器并聚合以产生最终结果。

数据增强

数据增强通过包括去除无关信息、消除歧义、更新过时的文档、合成新数据等技术来改进检索前的数据处理。

Make-An-Audio使用字幕和音频-文本检索为无语言的音频生成字幕以缓解数据稀疏性,并添加随机概念音频以改善原始音频。LESS通过分析梯度信息战略性地选择下游任务的最佳数据集,旨在最大化数据集对模型微调性能的影响,以响应指令性提示。ReACC通过包括重命名和死代码插入在内的数据增强来预训练代码检索模型。

III-B2 检索器增强

在RAG系统中,检索内容的质量决定了输入到生成器的信息。较低的内容质量增加了模型幻觉或其他退化的风险。在本节中,我们介绍了提高检索有效性的高效方法。

递归检索

递归检索是指执行多次搜索以检索更丰富、更高质量的内容。ReACT使用链式思考(CoT)来分解查询以进行递归检索,并提供更丰富的信息。RATP使用蒙特卡洛树搜索进行模拟以选择最优检索内容,然后将其模板化并转发给生成器以输出。

块优化

块优化是指调整块大小以改善检索结果。LlamaIndex采用了一系列的块优化方法,其中之一是基于“小到大”的原则。其核心概念是精确定位更细粒度的内容,但返回更丰富的信息。例如,句子窗口检索获取小的文本块,并返回围绕检索段落的窗口的相关句子。在自动合并检索中,文档以树结构排列。该过程首先检索父节点,该节点包含了其子节点的内容,通过首先获取子节点来实现。为了解决上下文信息不足的问题,RAPTOR采用递归嵌入、聚类和文本块的摘要,直到进一步聚类变得不可行,从而构建了一个多级树状结构。

检索器微调

检索器是RAG系统的核心,依赖于一个高效的嵌入模型来聚类相关内容并为生成器提供信息,从而提高系统性能。此外,具有强大表达能力的嵌入模型可以通过领域特定或任务相关数据进行微调,以提高在目标领域的性能。

REPLUG将LLM视为一个黑盒,并基于最终结果更新检索器模型。APICoder使用Python文件和API名称、签名、描述对检索器进行微调。EDITSUM对检索器进行微调,以减少检索后摘要之间的杰卡德距离。SYNCHROMESH在损失中增加了AST的树距离,并使用目标相似度调整来微调检索器。R-ConvED与生成器使用相同的数据对检索器进行微调。Kulkarni等人应用infoNCE损失来微调检索器。

混合检索

混合检索表示同时使用多种检索方法或从多个不同来源提取信息。

RAP-Gen和ReACC使用密集检索器和稀疏检索器来提高检索质量。Rencos使用稀疏检索器在句法级别检索相似的代码片段,并使用密集检索器在语义级别检索相似的代码片段。BASHEXPLAINER首先使用密集检索器捕获语义信息,然后使用稀疏检索器获取词汇信息。RetDream首先使用文本进行检索,然后使用图像嵌入进行检索。CRAG具有一个检索评估器,用于衡量文档与查询的相关性,根据置信度提供三种检索响应:如果准确,则直接使用结果进行知识提炼;如果不正确,则进行网络搜索;对于模糊情况,则采用混合方法。Huang等人通过引入DKS(Dense Knowledge Similarity)和RAC(Retriever as Answer Classifier)来改进问答,评估答案的相关性和知识的适用性。UniMS-RAG引入了一种新型标记,称为“行动标记”,它决定了从何处检索信息。

重新排名

重新排名技术是指对检索内容进行重新排序,以实现更大的多样性和更好的结果。

Re2G应用了一个重新排名模型来减少将文本压缩成向量时造成的信息丢失的影响。AceCoder使用选择器对检索到的程序进行重新排名,以减少冗余程序并获得多样化的检索程序。XRICL在检索后使用基于蒸馏的示例重新排名器。Rangan使用量化影响度量来评估查询和参考之间的统计偏差,以评估数据子集的相似性并重新排名检索结果。UDAPDR使用LLMs以成本效益的方式生成合成查询来训练领域特定的重新排名器,然后应用多教师知识蒸馏来发展一个协调的检索器。LLM-R通过使用静态LLM进行文档排名和奖励模型训练,并通过知识蒸馏进行迭代改进其检索器。每个训练周期逐步改进检索器,实现渐进式优化。

检索转换

检索转换涉及对检索到的内容进行改写,以更好地激活生成器的潜力,从而改善输出。

FILCO有效地从检索到的文本中清除多余的材料,只隔离相关的支持内容,简化了生成器的任务并促进了准确答案预测。FiD-Light最初使用编码器将检索到的内容转换为向量,然后将其压缩,从而显著减少了延迟时间。RRR通过模板将当前查询与每个回合中的前k个文档集成在一起,然后通过预训练的LLMs(如GPT-3.5-Turbo等)进行重构。

其他

除了上述优化方法外,还有一些其他的检索过程优化方法。例如,元数据过滤是一种使用元数据(如时间、目的等)来过滤检索到的文档以获得更好结果的方法。GENREAD和GRG引入了一种新方法,其中检索过程被LLM生成的文档所取代或改进,以响应给定问题。

III-B3 生成器增强

在RAG系统中,生成器的质量通常决定了最终输出结果的质量。因此,生成器的能力决定了整个RAG系统有效性的上限。

提示工程

专注于提高LLMs输出质量的提示工程技术,如提示压缩、回退提示、主动提示、链式思考提示等,都适用于RAG系统中的LLM生成器。LLMLingua使用一个小模型来压缩查询的整体长度以加速模型推理,减轻无关信息对模型的负面影响,并缓解了“中间丢失”现象。ReMoDiffuse通过使用ChatGPT将复杂描述分解为解剖文本来优化生成器。ASAP将输入代码、函数定义、分析结果和相应注释组成的示例元组纳入提示中以获得更好的结果。CEDAR使用设计好的提示模板将代码演示、查询和自然语言指令组织成提示。XRICL利用COT技术在跨语言语义解析和推理中添加翻译对作为中间步骤。ACTIVERAG采用Cognition Nexus机制来校准LLMs的内在认知,并应用COT提示在答案生成中。Make-An-Audio能够使用其他模态作为输入,这可以为后续过程提供更丰富的信息。

解码调整

解码调整涉及通过微调超参数来增强生成器控制,增加多样性并限制输出词汇表等调整。

InferFix通过调整解码器中的温度来平衡结果的多样性和质量。SYNCHROMESH通过实施完成引擎来限制解码器的输出词汇表,以消除实现错误。

生成器微调

生成器的微调可以增强模型的精确领域知识或更好地适应检索器。

RETRO固定检索器的参数,并在生成器中使用分块交叉注意力机制来组合查询和检索器的内容。APICoder使用新的文件与API信息和代码块的组合对生成器CODEGEN-MONO 350M进行微调。CARE使用图像、音频和视频-文本对训练编码器,然后微调解码器(生成器),同时减少字幕和概念检测损失,同时保持编码器和检索器不变。Animate-A-Story使用图像数据优化视频生成器,然后对LoRA适配器进行微调以捕捉给定角色的外观细节。RetDream使用LoRA适配器对渲染图像进行微调。

III-B4 结果增强

在许多场景中,RAG的结果可能无法达到预期效果,而一些结果增强技术可以帮助缓解这个问题。

输出重写

输出重写是指在某些场景中重写生成器生成的内容,以满足下游任务的需求。

SARGAM在代码相关任务中通过使用特殊的Transformer以及删除、占位符和插入分类器来改进输出,以更好地与现实世界的代码上下文对齐。Ring通过基于生成器产生的每个标记的对数概率平均值来重新排名候选项,从而获得多样性结果。CBR-KBQA通过将生成的关系与查询实体在知识图中的局部邻域中呈现的关系对齐来修正结果。

III-B5 RAG管道增强

RAG管道增强指的是在系统级别优化RAG的过程,以实现更好的性能结果。

自适应检索

一些RAG研究表明,检索并不总是增强最终结果。过度检索可能导致资源浪费,并在模型的固有参数化知识足以回答相关问题时可能引起混淆。因此,本章将深入探讨两种确定检索必要性的方法:基于规则的方法和基于模型的方法。

基于规则的:FLARE主动决定是否以及何时通过生成过程中的概率进行搜索。Efficient-KNNLM结合了KNN-LM和NPM的生成概率与一个超参数λ来确定生成和检索的比例。Mallen等人使用统计分析对问题进行分析,以便对高频问题进行直接回答,并对低频问题应用RAG。Jiang等人基于模型不确定性、输入不确定性和输入统计数据评估模型置信度,以指导检索决策。Kandpal等人研究了相关文档数量与模型知识掌握之间的相关性,以评估检索的必要性。

基于模型的:Self-RAG使用训练有素的生成器来决定是否基于不同用户查询执行检索。Ren等人使用“判断提示”来确定LLMs是否能够回答问题以及他们的答案是否正确,从而帮助确定检索的必要性。SKR使用LLMs自身的能力来预先判断他们是否能够回答问题,如果能够回答,则不执行检索。Rowen将问题翻译成多种语言,并检查这些语言之间的答案一致性,使用结果来确定信息检索的需要。AdaptiveRAG通过一个分类器(一个较小的LLM)动态决定是否基于查询复杂性进行检索。

迭代RAG

迭代RAG通过重复循环检索和生成阶段,而不是单轮循环,逐步改进结果。

RepoCoder使用迭代检索-生成方法进行代码补全,通过用先前生成的代码改进查询,更好地利用分散的信息并改进结果。ITER-RETGEN通过使用生成器的输出来确定知识空白,检索必要信息,并通知未来的生成周期,逐步提高内容质量。SelfMemory使用迭代增强的生成器形成一个广泛的存储池,记忆选择器从存储池中选择一个输出来通知下一个生成周期。RAT最初使用LLM和零样本CoT提示生成内容,然后通过从外部知识库检索知识来修订每个思维步骤。