面向AI内容生成的检索增强生成(RAG)技术全面综述:背景、基础、进阶、应用、展望
我们翻译解读最新论文:面向人工智能生成的检索增强生成技术综述,文末有论文链接。
人工智能生成内容(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提示生成内容,然后通过从外部知识库检索知识来修订每个思维步骤。
IV 应用
表I:RAG应用在各种模态的分类。
在本节中,我们专注于RAG在各种模态的应用。为了与RAG基础和增强的分类相呼应,我们在表I中也展示了它们在不同任务中的使用。
IV-A 文字RAG
首先,文本生成是RAG应用中最重要和最广泛部署的应用之一。这里我们分别介绍了七个任务的流行工作。
IV-A1 Question Answering
问答涉及通过利用大量和全面的文字来源提供对提出问题的响应的过程。
FiD和REALM根据查询识别最重要的k篇文章片段,并将每个片段连同问题一起发送给LLMs以生成k个响应。这些响应随后被合成为最终答案。Toutanova等人用知识图谱中的子图替换了REALM中的文本语料库,取得了令人印象深刻的结果。RETRO采用注意力机制将问题与相关检索文档在模型内整合,以产生最终答案。SKR观察到使用RAG并不总是有益于问答,因此探索引导模型评估其对相关知识的理解,随后调整其使用外部资源进行检索增强。TOG引入了一个创新的知识图谱增强LLM框架,通过促进LLM与知识图谱之间的交互,并通过束搜索扩展推理路径空间,表现出色。NPM开创了使用非参数数据分布代替softmax层的方法,使参数更少的模型能够有效地执行。Self-RAG通过学习判断何时检索、评估检索内容的相关性以及评估最终生成结果来提高答案质量,使用四种反思标记。CL-ReLKT使用语言通用编码器弥合跨语言问题-文档对之间的差距,从而更好地利用多语言数据。CORE通过引入一种新的密集段落检索算法和多语言自回归生成模型,减少了语言资源的不平衡。最后,EAE通过检索查询实体的实体嵌入并将这些与隐藏状态整合,以提高答案质量。
UR-QA提出了同时检索QA对和文本块,通过比较它们的校准置信度来选择最终答案。DISC-LawLLM通过法律三段论提示策略构建了一个监督微调数据集,使模型能够从最新的法律信息中获得支持。RAG-end2end进行了检索器(DPR)和生成器(BART)的同时训练,以优化端到端问答任务的性能,并促进领域适应。MultiHop-RAG通过从不同文档中提取和聚合信息,为生成器提供生成明确查询答案所需的上下文。
IV-A2 事实验证
事实验证通常指的是确定给定的自然语言文本和一个相关的声明或断言是否与文本中的事实相匹配。
CONCRETE利用跨语言检索机制,利用多语言证据的丰富性,有效地弥合了事实检查数据集中资源不足的语言之间的差距。Hagström等人证明了在LLaMA和Atlas上,搜索增强比增加模型大小更有助于解决不一致问题。Atlas显示,使用RAG支持LLMs在知识密集型任务中显著提高了它们的少次学习能力。
IV-A3 常识推理
常识推理是指机器能够像人类一样推断或对问题或任务做出决策,利用它们获得的外部知识及其应用。
KG-BART通过将知识图中不同概念之间复杂的相互关系纳入其中,扩展了概念领域。它使用图注意力机制帮助LLMs构建更细致入微、逻辑上更连贯的句子。Wan等人构建了CONFLICTINGQA数据集,该数据集包含有争议的问题和相互矛盾的答案,以研究文本特征如何影响LLMs处理有争议问题。
IV-A4 人机对话
人机对话包括机器理解自然语言并熟练运用这种技能与人类进行交流的能力。
ConceptFlow利用常识知识图谱来构建对话,根据注意力分数引导对话的流程,并推动对话向前发展。Cai等人将文本生成任务重新构想为填空测试,通过检索和提炼过去对话历史的精华,取得了显著的成果。Komeili等人通过利用先进的搜索引擎技术从互联网上获取相关内容,提高了对话生成的质量。BlenderBot3扩大了其搜索范围,不仅挖掘相关的互联网内容,还利用本地对话历史,并采用实体提取等技术来提高生成对话的质量。Kim等人、PARC和CREA-ICLU通过整合跨语言知识,提高了非英语对话的质量,有效解决了非英语数据集的稀缺性问题,并提高了生成对话的质量。CEG通过后处理机制解决幻觉问题,通过检索验证LLM生成的答案。
IV-A5 神经机器翻译
神经机器翻译(NMT)是将文本从源语言自动翻译成目标语言的过程。它是NLP领域中的一个关键任务,代表着人工智能追求中的一个重大目标,具有重要的科学和实际意义。
Cai等人提出了一种创新方法,该方法使用单语料库以及多语言学习技术,挑战了传统上对双语语料库的依赖。KNN-MT在词汇空间距离的基础上执行翻译任务。TRIME通过联合训练检索系统和生成模型,有效地最小化了训练和推理阶段之间的差异,从而提高了翻译的准确性。
IV-A6 事件抽取
事件抽取是NLP中的一个过程,涉及识别和分类文本中的特定事件,并将它们与相关实体关联起来。这些事件通常由动词表示,实体是参与事件的参与者。
R-GQA通过识别和利用问题库中最紧密对齐的问答对,增强了给定问题上下文,从而丰富了处理当前查询时可用的信息。
IV-A7 摘要
摘要是一项旨在从长篇文本中提取关键信息并生成简洁、连贯的摘要的任务,该摘要概括了主要主题。摘要有两种主要方法:抽取式和抽象式。
抽取式摘要涉及自动选择和编译源文本中的关键短语。这种技术避免创建新句子,而是重新利用原始文本的片段。抽象摘要则涉及理解原始文本的含义,并将其改写为新句子。这种方法可以更流畅地传达来源的意图,但由于其复杂性,在实现方面面临更大的挑战。
RAMKG有效地利用了一个全面的英文语料库,以增强非英语环境中关键短语生成的性能。Unlimiformer通过检索和利用最相关的前k个隐藏状态,解决了基于Transformer的模型的输入长度限制问题,从而扩展了模型处理更长输入的能力。RPRR采用了一种检索-计划-再检索-阅读的方法,克服了LLMs面临的有限上下文窗口限制,利用检索到的信息为新兴事件生成高质量的Wikipedia文档。RIGHT选择在不同数据集上使用不同类型的检索器来增强生成器。
IV-B 代码RAG
在代码相关任务中,检索和生成方法历来是分开使用的。对于检索,可以使用抽象语法树(AST)或文本编辑距离来识别相似的代码片段。对于生成,使用序列到序列模型生成代码或自然语言。最近的RAG研究结合了检索和生成技术,以提高整体性能。
IV-B1 代码生成
代码生成的目标是将自然语言(NL)描述转换成代码实现。基于查询的RAG是代码生成的常用方法。它为基于Transformer的生成模型构建提示,包括检索信息,如相似的示例、相关的API细节、文档、导入和全局函数。
SKCODER检索相关代码片段,以产生最终代码生成的草图模板。RRGCode使用交叉编码器对检索结果进行排名。CODEAGENT为网络搜索、文档检索、程序生成和正确性测试设计代理。ARKS将迭代RAG纳入其中,重新制定查询并更新检索来源。
IV-B2 代码摘要
代码摘要任务将代码转换为自然语言描述。许多研究工作使用额外的编码器处理检索结果,然后结合它们进行后续解码器,这类似于Fusion-in-Decoder。
Re2Com和EditSum使用BM25检索相似代码,并使用LSTM生成摘要。它们分别对输入、检索到的代码和相应的摘要进行编码,然后在解码器中组合隐藏状态或对数几率。HGNN使用代码编辑距离进行检索,并用其Code Property Graphs上的混合GNN替换代码编码器。RACE使用不同的编码器对输入代码差异、通过密集检索检索到的代码差异和相应的提交消息进行编码,以生成最终的提交消息。BASHEXPLAINER应用密集检索,并融合嵌入以用于后续的基于Transformer的解码器。READSUM使用Levenshtein距离进行检索,并采用融合网络来组合检索到的代码和摘要的表示。
基于查询的RAG在代码摘要生成中很普遍。REDCODER、ASAP和SCCLLM都使用检索内容形成提示进行摘要。它们分别采用密集检索、稀疏检索和混合检索(包括语义、句法和词汇基础检索)。该范式还被用于伪代码生成和日志语句生成。
基于对数几率的RAG在代码摘要中也很流行。Rencos和CoRec通过AST或密集表示检索相似的代码片段或代码差异。它们都采用多个LSTMs对输入和检索结果进行处理,并将概率组合以进行最终生成。kNN-Transformer使用基于Transformer的生成器获取输入代码的上下文向量,然后将来自向量搜索、生成器和输入中的稀有标记的复制机制的三部分对数几率结合起来。Tram也结合了原始生成器、用于句子级检索结果的生成器和代表源代码及其AST的标记级向量(搜索对数几率)的三组对数几率。CMR-Sum将检索到的摘要和生成摘要之间的交叉注意力概率纳入原始生成对数几率中。
IV-B3 代码补全
代码补全类似于代码版本的“下一句预测”任务。基于查询的RAG是代码补全的主流范式。
Drain等人检索模板函数以完成函数补全。ReACC使用稀疏和密集检索。RepoCoder通过在检索输入中增加先前生成的代码来执行迭代RAG。De-Hallucinator使用首次生成的内容检索API引用,然后进行基于查询的RAG以改进代码补全。REPOFUSE包括理由上下文和检索到的代码以形成提示,并排名上下文以适应长度限制。
许多工作利用基于潜在表示的RAG。Retrieve-and-edit、RepoFusion和EDITAS为检索内容或编辑序列使用多个编码器,然后将信息融合以供后续解码器使用。CoCoMic在项目上下文图上检索代码,在整个代码项目的生成器中共同处理源代码和检索上下文的表示。
KNM-LM执行基于对数几率的RAG,使用贝叶斯推断结合检索和生成的对数几率。
IV-B4 自动程序修复
基于查询的RAG通常用于自动程序修复,以帮助生成模型修复错误代码。
RING、CEDAR和RAP-Gen都使用混合检索(包括稀疏和密集检索)来构建提示,以获取相似的错误消息、错误代码或修复。InferFix在提示中包括错误类型、位置、相关语法层次结构和类似修复。
SARGAM使用提示生成与错误代码相似的补丁;然后另一个模型被用来提炼最终结果。RTLFixer利用ReAct实现一个代理,修复Verilog代码中的错误。它迭代地检索错误和配对解决方案,并将推理和动作规划结合起来,为LLMs形成提示。
IV-B5 文本到SQL和基于代码的语义解析
语义解析将自然语言转换为清晰、结构化的表示,如SQL或其他特定领域的语言,通常需要代码的协助。
所有相关作品都特别使用RAG的基于查询的变体。XRICL使用非英语话语搜索并重新排名英语话语,然后构建提示以生成SQL查询。SYNCHROMESH检索相似的自然语言和SQL以构建提示,然后在SQL生成过程中进行受限的语义解码,以强化丰富的句法和语义约束。
CodeICL使用Python进行语义解析,利用BM25将相似的训练示例纳入提示中。RESDSQL包括排名模式在内的提示,以生成SQL骨架和SQL查询。ReFSQL使用具有模式链接和马氏对比学习的增强结构检索器,有助于改进文本到SQL的生成。
为了构建SQL生成的提示,ODIS检索了领域内和领域外的示范,而Nan等人检索了相似和多样化的示范。MURRE对表格进行多跳检索-重写,生成表格化问题,然后对结果进行排名以构建提示。CodeS以粗到细的方式从表格数据库中检索相关信息,以生成SQL。
IV-B6 其他
还有几个其他代码相关任务采用基于查询的RAG范式,将相似示例纳入提示。
Jie等人使用程序作为数值推理的中间步骤。De-fine使用程序解决复杂任务。它通过基于查询的RAG改进由查询生成的答案,然后将改进后的程序重新添加到检索源中。
对于程序静态分析,E&V利用LLM代理,以AST为基础的源代码检索、伪代码执行、执行规范验证和其他工具形成中间结果。Code4UIE通过代码表示进行信息提取。StackSpotAI构建了一个带有RAG组件的AI编码助手。InputBlaster生成可能导致移动应用崩溃的不寻常文本输入。
IV-C 知识RAG
结构化知识,包括知识图谱(KGs)和表格,广泛用于语言相关任务。它通常作为检索源,以增强生成。
除了常规的稀疏和密集检索,NER(命名实体识别)技术和图感知邻居检索被应用于识别和提取相关实体和关系。
IV-C1 知识库问答
KBQA(知识库问答)通常使用知识库来确定问题的正确答案。已经提出许多语义解析方法,基于问题生成逻辑形式(例如SPARQL)。
基于查询的RAG是主流方法。Unseen Entity Handling使用FreeBase检索主题实体,这些实体与查询结合生成SPARQL输出。
CBR-KBQA结合查询和检索到的(查询,逻辑形式)对进行生成。它还修订最终结果以与知识图中的关系对齐。GMT-KBQA重新排名检索到的实体和关系,并在生成之前进行关系分类和实体消歧。
RNG-KBQA、TIARA、BLLM增强和Shu等人重新排名知识图中的候选逻辑形式或实体以构建提示。Uni-Parser包括来自提及检测、2跳路径提取和数据库表中的实体到生成器输入。ECBRF遵循案例推理范式,检索相似的三元组以构建提示输入。FC-KBQA从BM25或提及检测中提取相关类、关系和实体,StructGPT提取相关三元组和最近实体,KAPING通过实体匹配提取相关事实。
Sen等人用关系分布生成模型替换检索,以加权三元组。Retrieve-Rewrite-Answer使用跳预测、关系路径预测和三元组采样将子图检索到提示中。Keqing通过LLM将复杂问题分解为简单子问题,然后检索子问题模板,从知识图中提取候选实体,最后通过ChatGPT生成答案。Liu等人利用检索对探索形式语言理解和生成的能力。Interactive-KBQA使用LLM作为代理,对KG进行实体链接,并生成当前思想和行动,直到获得最终答案。
IV-C2 知识增强的开放域问答
结构化知识经常用于增强ODQA(开放域问答)。基于潜在表示的RAG,特别是融合解码器技术,是知识增强ODQA的流行方法。
UniK-QA、KG-FiD、GRAPE都应用了融合解码器技术。它们分别整合了基于三元组的文档、通过KG重新排名的文档和问题与段落的二分图。OREOLM赋予LLM知识推理路径,将从知识图谱上的上下文化随机游走路径派生出的实体值记忆整合到LLM的隐藏状态中。SKURG执行迭代检索和生成,使用交叉注意力将数据源整合到输入嵌入中。它使用门控分数决定是否重新启动检索或生成真实答案。
随着LLMs的快速发展,基于查询的RAG正在成为新的标准。DIVKNOWQA从多个来源检索,使用不同的技术。它迭代地检索和重新排名数据,然后生成最终答案。KnowledGPT使用生成的代码从公共和个人知识库中检索。EFSUM优化了事实增强生成后的证据聚焦摘要,以使QA特定偏好的有用性和忠实性对齐。GenTKGQA使用GNN(图神经网络)整合子图检索中的结构和时间信息到虚拟标记表示中。KnowledgeNavigator通过迭代过滤与核心实体相关的关系到知识图谱上进行检索,以获得相关的三元组。
IV-C3 表格问答
表格,作为另一种形式的结构化知识,也促进了问答。
融合解码器风格的RAG通常用于表格QA。EfficientQA,2020年NeurIPS举行的比赛,见证了依赖文本和表格数据的众多检索-阅读器系统的提出。Dual Reader-Parser和CORE都重新排名检索到的文本和表格数据以进行生成。Convinse在理解问题后从知识库、表格和文本中检索信息。
RINK设计了一组级阅读器继承的重新排名器,以获得表格段的相关性分数。TAG-QA通过GNN(表格到图转换后)和BM25分别检索表格和文本。表格可以集成到基于查询的RAG的提示中。
T-RAG和OmniTab将检索到的表格与查询连接起来以生成答案。CARP提取检索到的表格和段落的混合链以构建提示。StructGPT从多个来源检索,包括KGs、表格和数据库。cTBLS在检索后形成提示,与排名表格一起。Min等人通过表格到文本技术整合表格数据,然后在微调和RAG上进行实验。
IV-C4 其他
Prototype-KRG将检索到的知识事实和对话原型通过隐藏状态和对数几率集成到GRU模型中。SURGE将相关子图组合成输入,用于对话生成。RHO在对话生成期间将知识图谱嵌入相关实体和关系融合到文本嵌入中。K-LaMP在历史查询中检索实体以构建提示,用于查询建议。ReSKGC检索相关三元组以完成三元组使用Fid。G-Retriever从文本图中检索节点和边以构建子图并执行图提示调整以进行QA。
IV-D 图像RAG
IV-D1 图像生成
图像生成是指使用人工智能和机器学习领域的算法创建新图像的过程。检索过程不仅可以帮助即使对于罕见或未见过的主体也产生高质量的图像,而且还可以减少参数计数和计算开销。
对于基于GAN的模型,RetrieveGAN使用可微分的检索器进行图像块选择,促进端到端训练。IC-GAN将数据建模为围绕每个训练实例的条件分布,将生成器和鉴别器都条件化在这些实例上。最近,扩散模型在图像生成方面超越了GAN。KNN-Diffusion和RDM在CLIP嵌入和图像邻居的条件下训练扩散模型,实现事后条件化标签、提示和零样本风格化。
超越仅图像,Re-imagen扩展检索到图像-文本对以进行文本到图像生成,带有交替指导以平衡提示和检索条件之间的对齐。Retrieve&Fuse通过在每个U-Net注意力块之前将检索到的和噪声图像连接起来,防止CLIP嵌入的信息丢失,允许通过自注意力完全交互。RPG检索代表性图像以构建上下文示例,并使用链式思考推理规划补充子区域以进行组合文本到图像扩散。
IV-D2 图像字幕
图像字幕是生成图像的文本描述的过程。增强检索图像字幕通常与检索到的字幕集合成描述。
MA通过记忆库增强,该记忆库使用图像-文本训练集的历史上下文和目标词构建,并在推理上下文中进行查询。基于检索到的条目计算词汇分布,并与原始预测进行插值。在对抗性训练中,RAMP将检索到的字幕作为鉴别器参考,并采用记忆增强注意力和复制机制以更好地利用检索到的字幕。RA-Transformer和EXTRA,都是基于检索增强的基于Transformer的字幕模型,使用编码检索字幕的交叉注意力。
除了字幕检索,REVEAL统一编码和检索多模态世界知识,与检索分数感知注意力集成。直接地,SMALLCAP使用CLIP视觉编码器和LLM解码器,检索到的字幕作为输入特定的上下文示例。对于遥感图像,CRSR通过过滤误导细节并强调视觉上显著的内容来提炼检索到的字幕。
IV-D3 其他
还有许多其他增强检索的工作用于其他图像相关任务。对于视觉问答(VQA),PICa将图像转换为文本描述,提示GPT-3并集成多查询结果。RA-VQA实现了端到端训练,具有不同检索的答案生成。对于视觉引导的对话,KIF和Maria增强了对话生成,辅以外部知识,如视觉体验。在多模态机器翻译中,将视觉信息整合到短语级别,以改善具有多模态信息的NMT。
IV-E 视频RAG
IV-E1 视频字幕生成(Video Captioning)
视频字幕是将视觉内容转换为描述性语句的过程。
KaVD使用相关文档中的背景知识,如命名实体和事件,生成新闻视频字幕。R-ConvED通过双编码检索相关句子和视频,并使用卷积编码器-解码器网络预测目标词。CARE结合了三种模态数据,即帧、音频和检索到的文本,以提供全局和局部语义指导作为增强。EgoInstructor专注于第一人称视频,检索相关的外中心视频和文本,并通过编码视频的LLM生成字幕。
IV-E2 视频问答(Video QA&Dialogue)
Video QA&Dialogue根据视频内容生成单个或多轮响应。
对于VideoQA,MA-DRNN在查询和视频中存储和检索有用信息,因此模拟了长期视觉-文本依赖性。R2A通过CLIP检索语义相似的文本,并使用查询和检索到的文本提示LLM。对于Video Dialogue,提出了TVQA+数据集,以实现相关时刻和视觉概念的检索,并设计了相应的时空感知生成器。VGNMN从视频中提取视觉线索,而检索过程由先前对话中的实体和动作参数化。
IV-E3 其他
VidIL将视频内容转换为时间感知的LLM提示,用于视频字幕、问题回答和未来事件预测等任务。
对于可信的自动驾驶,RAG-Driver将MLLM基于检索的专家演示,以产生驾驶行动解释。Animate-A-Story通过将其划分为基于情节的视频增强和基于文本和视频输入的视频扩散生成,简化了文本到视频的生成。
IV-F 音频RAG
IV-F1 音频生成
音频生成通常使用自然语言提示合成音频。
给定输入提示,Re-AudioLDM检索相关标题-音频对,使用密集检索CLAP进行生成。Make-An-Audio根据文本提示检索音频,然后构建伪提示,用于文本到音频扩散模型训练。
IV-F2 音频字幕生成(Audio Captioning)
音频字幕基本上是一个序列到序列的任务,为音频数据生成自然语言数据。
RECAP和利用密集检索器CLAP和VGGish分别检索给定音频数据的相关标题。对于RECAP,标题被包含在LLM提示中,而则使用音频和检索到的标题在注意力模块中。其他研究研究将音频模态与文本对齐,利用LLMs在各种下游文本生成中的进展。
IV-G 3DRAG
IV-G1 文本生成3D(Text-to-3D)
检索可以应用于增强3D资产生成。
ReMoDiffuse检索相关运动实体,并使用扩散模型生成运动,具有语义调节的注意力和条件混合指导。AMD设计并融合了两个运动扩散模型。一个分支基于原始提示条件化,而另一个分支将提示分解为解剖脚本,并检索相似的运动。RetDream检索3D资产以增强2D扩散模型的变分得分蒸馏。这些资产提供几何和适应的2D先验,不仅为粒子初始化施加了额外的速度,还通过LoRA帮助优化了2D扩散模型。
IV-H 科研研究RAG
RAG也成为许多跨学科应用的有希望的研究方向,如分子生成、医疗任务和计算研究。
IV-H1 药物发现(Drug Discovery)
药物发现的目标是生成同时满足多种属性的分子。
RetMol集成了一个轻量级检索机制和分子字符串到预训练的编码器-解码器生成模型中,以检索和融合示例分子与输入。
PromptDiff引入了一个基于交互的、增强检索的3D分子扩散模型,检索一组精选的配体参考,以指导合成满足特定设计标准的配体。
IV-H2 生物信息学增强(Biomedical Informatics Enhancement)
最近几项研究通过从生物医学领域特定数据库中检索信息,提高了LLM的表达能力,从而增强了模型在医疗领域任务中提供有价值指导的能力。
PoET是基于Transformer变体的自回归生成模型,它集成了检索机制以实现提示增强,从而加快了蛋白质变体的健身属性预测。Chat-Orthopedist通过专注于青少年特发性脊柱侧凸(AIS)的检索增强机制增强了ChatGPT,使用外部知识库进行精确响应。BIOREADER是第一个用于生物医学自然语言处理的基于文本到文本的增强转换器模型,使用分块交叉注意力机制将检索到的文献证据整合到模型中。MedWriter采用层次化的检索增强生成方法,结合报告级和句子级模板,从图像中产生连贯且临床准确的医疗报告。QA-RAG采用双轨RAG策略,通过有效检索和整合基于语言模型响应和用户查询的监管指南,增强了制药合规性。
IV-H3 数学应用(Math Applications)
数学中的增强检索生成技术简化了问题解决,促进了研究创新,并完善了教育策略。
LeanDojo通过使用增强检索方法从广泛的数学库中选择相关前提来提高定理证明,改善了自动化和定理概括。RAG-for-math-QA通过将高质量的数学教科书与增强检索生成集成,提高了中学代数和几何问题回答的LLM生成响应。
V 评估基准
鉴于RAG的研究兴趣和应用不断增加,也已经出现了几个从某些方面评估RAG的基准。
Chen等人提出了一个RAG基准,从四个维度进行评估:
噪声鲁棒性,测试LLMs能否从嘈杂文档中提取必要信息;
负拒绝,评估LLMs能否在检索内容不足时拒绝响应;
信息整合,检查LLMs能否获取知识并通过整合多个检索内容进行响应;
反事实鲁棒性,确定LLMs能否识别检索内容中的反事实错误。
另外三个基准,RAGAS、ARES和TruLens,借助一个单独的评估LLM考虑另外三个方面:
忠实度,检查当可以从检索内容中推断出正确答案时结果中的事实错误;
答案相关性,衡量生成结果是否真正解决了查询;
上下文相关性,判断检索内容是否提供了相关知识,同时最小化无关信息。
CRUD-RAG将RAG任务分为四种类型:创建、读取、更新和删除。它使用文本续写、问答(包括单文档和多文档问题)、幻觉修改和开放域多文档摘要对每个类别进行评估。
MIRAGE在医疗领域评估RAG,重点关注医疗问答系统的性能。
KILT对齐Wikipedia快照以验证信息准确性,使用BLEU分数来确定相关文本,并进行过滤以保持质量,从而为基于证据的预测或引用提供多样化的检索系统。
VI 讨论
VI-A 局限性
尽管RAG得到了广泛采用,但它天生存在几个局限性。
VI-A1 检索结果中的噪声
信息检索本质上存在缺陷,因为项目表示中的信息丢失和ANN搜索。
不可避免的噪声,表现为不相关内容或误导性信息,可以在RAG系统中造成故障点。然而,尽管直观上提高检索准确性似乎对RAG有效性至关重要,但最近的研究发现,嘈杂的检索结果可能增强生成质量。可能的解释是,多样化的检索结果可能有助于提示构建。因此,检索噪声的影响仍然不明确,导致实际使用中度量选择和检索器-生成器交互的困惑。
VI-A2 额外开销
虽然在某些情况下检索可以减少生成成本,但在大多数情况下,它会产生不可忽视的开销。换句话说,检索和交互过程不可避免地增加了延迟。当RAG与复杂的增强方法结合时,这种开销会被放大,例如递归检索和迭代RAG。此外,随着检索源的规模扩大,存储和访问复杂性也会增加。这种开销妨碍了RAG在对延迟敏感的实时服务中的实用性。
VI-A3 检索器与生成器之间的差距
由于检索器和生成器的目标可能不一致,它们的潜在空间可能不同,设计它们的交互需要精心设计和优化。当前的方法要么分离检索和生成,要么在中间阶段进行集成。前者更模块化,后者可能从联合训练中受益,但妨碍了通用性。选择一种成本效益的交互方法来弥合差距是一个挑战,需要在实践中深思熟虑。
VI-A4 系统复杂性增加
引入检索不可避免地增加了系统的复杂性和需要调整的超参数数量。例如,最近的一项研究发现,在基于查询的RAG中使用top-k而不是单个检索可以改善归因,但损害了流畅性,而其他方面,如度量选择仍未充分探索。因此,当涉及RAG时,调整生成服务需要更多的专业知识。
VI-A5 冗长上下文
RAG的一个主要缺点,特别是基于查询的RAG,是它极大地延长了上下文,使得对于有限制上下文长度的生成器来说变得不可行。此外,加长的上下文也通常会减慢生成过程。尽管在提示压缩和长上下文支持方面的研究进展已经部分缓解了这些挑战,但准确性或成本上仍有轻微的权衡。
VI-B 潜在的未来方向
最后,我们希望概述几个未来RAG研究和应用的潜在方向。
VI-B1 增强方法论的新设计
现有研究已经探索了检索器和生成器之间各种交互模式。然而,由于这两个组件的目标不同,实际的增强过程对最终生成结果有显著影响。探索更先进的增强基础,有望充分释放RAG的潜力。
VI-B2 灵活的RAG管道
RAG系统正在逐步采用灵活的管道,如递归、自适应和迭代RAG。除了适当调整和精心设计每个组件外,检索源、检索器、生成器和RAG子系统的独特的组合,有望处理复杂任务并提高整体性能。我们热切期待开创性的探索,将推动更加创新的RAG系统的演变。
VI-B3 更广泛的应用
RAG是一种通用技术,应用于各种应用。然而,一些生成任务尚未探索RAG,而且在许多领域,RAG的应用是简单直接的,没有考虑领域的独特特性。我们认为,设计特定于领域的RAG技术将显著有利于更广泛的应用。
VI-B4 高效部署和处理
对于基于LLM的查询RAG,已经存在几种部署解决方案,如LangChain、LLAMA-Index和PipeRAG。然而,对于其他RAG基础和/或生成任务,缺乏即插即用的解决方案。此外,由于检索开销和检索器及生成器中不断增加的复杂性,实现高效的RAG仍然具有挑战性,需要进一步的系统级优化。
VI-B5 结合长尾和实时知识
RAG的一个主要动机是利用实时和长尾知识,但很少有研究探索知识更新和扩展的管道。许多现有工作仅使用生成器的训练数据作为检索源,忽略了检索可能提供动态和灵活的信息。因此,越来越多的研究正在设计具有持续更新知识和灵活来源的RAG系统。我们还期望RAG能够更进一步,适应当今网络服务中的个性化信息。
VI-B6 与其他技术的结合
RAG与其他旨在提高人工智能生成内容(AIGC)有效性的技术是正交的,如微调、强化学习、链式思考和基于代理的生成。这些方法的结合仍处于初期阶段,需要进一步的研究,通过新颖的算法设计,充分利用它们的潜力。值得注意的是,最近出现了一个观点:“像Gemini 1.5这样的长上下文模型将取代RAG”。然而,这种断言忽视了RAG在管理动态信息方面的灵活性,包括最新的和长尾知识。我们期望RAG能够从长上下文生成中受益,而不是被其取代。
VII 结论
在本文中,我们对AIGC背景下的RAG进行了全面和系统的调查,特别关注增强基础、增强和应用。我们首先系统地组织和总结了RAG中的基础范式,提供了检索器和生成器之间交互的见解。然后,我们回顾了进一步提高RAG有效性的增强,包括对每个组件或整个管道的增强。为了促进不同领域研究人员的工作,我们展示了RAG在一系列模态和任务中的实践应用。最后,我们还介绍了RAG的现有基准,讨论了RAG的当前局限性,并展望了未来的有前景的方向。
参考资料
标题:Retrieval-Augmented Generation for AI-Generated Content: A Survey
作者:Penghao Zhao, Hailin Zhang, Qinhan Yu, Zhengren Wang, Yunteng Geng, Fangcheng Fu, Ling Yang, Wentao Zhang, Jie Jiang, Bin Cui
单位:Peking University, Tencent Inc.
链接:https://arxiv.org/abs/2402.19473v4