【RAG综述】北京大学检索增强技术综述

RAG for AIGC

image-20240817134314114

​ 图 1 描述了一个典型的 RAG 过程。给定一个输入查询,检索器识别相关的数据源,检索到的信息与生成器交互以改进生成过程。根据检索结果如何增强生成,有几种基础范式(简称基础):它们可以作为生成器的增强输入 ;它们可以作为潜在表示加入生成的中间阶段 ;它们可以以 logits 的形式为最终的生成结果做出贡献;它们甚至可以影响或省略某些生成步骤 。此外,研究人员还提出了各种增强方法来改进基础 RAG 过程。RAG 过程如下:(i)检索器首先接收输入查询并搜索相关信息;(ii)然后,原始查询和检索结果通过特定的增强方法输入到生成器中;(iii)最后,生成器产生所需的结果。

思维导图

image-20240817212654519

初步研究

​ 整个RAG系统由两个核心模块组成:检索器和生成器,其中检索器从数据存储中搜索相关信息,生成器生成所需的内容。

生成器

​ 生成模块在 RAG 系统中起着至关重要的作用。不同的生成模型适用于不同的场景,例如用于文本到文本任务的 Transformer 模型、用于图像到文本任务的 VisualGPT 、用于文本到图像任务的 Stable Diffusion 、用于文本到代码任务的 Codex 等。这里作者介绍了 RAG 中经常使用的 4 种典型生成器:Transformer 模型、LSTM、扩散模型和 GAN。

image-20240817140705498

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

2)LSTM:如图2所示,长短期记忆(LSTM)是一种特殊形式的循环神经网络(RNN)模型。它通过结合细胞状态和门控机制来解决长期依赖处理中的梯度爆炸/消失问题。该模型包括三个过滤信息的门(输入、遗忘和输出)和一个保留和管理信息的中央细胞状态模块。它使用与Transformer模型相同的词汇分类方法来自回归生成输出。

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

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

检索器

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

  • 稀疏检索

​ 稀疏检索方法通常用于文档检索,其中键/值表示要搜索的文档。这些方法利用术语匹配指标,例如 TF-IDF 、查询可能性 和 BM25 ,它们分析文本中的单词统计数据并构建倒排索引以实现高效搜索。 本质上,BM25 是大规模网络搜索的强大基线,集成了逆文档频率权重、查询标记出现次数和其他相关指标。 为了实现高效搜索,稀疏检索通常利用倒排索引来组织文档。具体来说,查询中的每个术语都会执行查找以获取候选文档列表,然后根据其统计分数对其进行排名

  • 密集检索

​ 与稀疏检索不同,密集检索方法使用密集嵌入向量表示查询和键,并构建近似最近邻 (ANN) 索引以加快搜索速度。这可以应用于所有模态。对于文本数据,预训练模型(如 BERT )的最新进展已被用于分别编码查询和键 。这种方法通常称为密集段落检索 (DPR)。与文本类似,已经提出了模型来编码代码数据 、音频数据 、图像数据 、视频数据 等。密集表示之间的相似度得分通常使用余弦、内积、L2 距离等指标来计算。 在训练期间,密集检索使用对比学习来增加正样本的相似度并降低负样本的相似度。已经提出了几种硬负技术来进一步提高模型质量。为了在推理过程中进行有效搜索,采用了 ANN 方法。 已经开发了各种索引来服务 ANN 搜索,包括树、局部敏感散列、邻居图索引(例如,HNSW 、DiskANN )以及组合图和倒排索引(例如,SPANN )。

  • 其他

​ 除了稀疏检索和密集检索之外,还有其他方法可以检索相关对象 。一些研究工作不计算表示,而是直接使用自然语言文本或代码片段的抽象语法树 (AST) 之间的编辑距离。在知识图谱中,实体通过关系连接,作为检索的预建索引。因此,利用知识图谱的 RAG 方法可以采用 k 跳邻居搜索进行检索。另一种检索方法是命名实体识别 (NER) ,其中查询是输入,实体充当键。

方法论

RAG Foundations

根据检索器如何增强生成器,作者将 RAG 基础分为 4 类,如图 3 所示。

image-20240817145529581

Query-based RAG

​ **基于查询的 RAG 源于即时增强的思想,将用户的查询与从检索到的信息中获得的见解无缝集成,将其直接输入到生成器输入的初始阶段。**这种方法在 RAG 应用中很普遍。检索后,将获得的内容与用户的原始查询合并以形成复合输入,然后由生成器处理以创建响应。基于查询的 RAG 广泛应用于各种模态。

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

​ 在代码领域,一些研究利用基于查询的范式将文本或代码中的上下文信息合并到提示中,从而提高了下游任务的有效性。

​ 知识库问答 (KBQA) 的最新研究也表明,检索和语言模型的结合具有显著的效果。例如,Uni-Parser 、RNG-KBQA 和 ECBRF 通过将查询和检索到的信息合并到提示中,有效地提高了 QA 系统的性能和准确性。

​ 在 AI-for-Science 领域,Chat-Orthopedist 帮助患有特发性脊柱侧弯的青少年进行共同决策,通过将检索到的数据合并到模型提示中,提高了 LLM 的有效性和信息精度。

​ 在图像生成任务中,RetrieveGAN通过将检索到的数据(例如选定的图像块及其边界框)合并到生成器的输入阶段来提高生成图像的相关性和精度。IC-GAN 通过将噪声向量与实例特征连接起来来调节生成图像的特定条件和细节。

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

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

Latent Representation-based RAG

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

​ 在文本领域,FiD 和 RETRO 是基于潜在表示的 RAG 的两种经典结构,许多后续工作都基于它们进行修改。 FiD 通过不同的编码器处理每个检索到的段落及其标题以及查询,然后将得到的潜在表示合并,由单个解码器解码以产生最终输出。 RETRO 检索每个分段子查询的相关信息,然后应用一种称为 Chunked Cross-Attention (CCA) 的新模块将检索到的内容与每个子查询标记集成在一起。此外,在基于潜在表示的 RAG 范围内还有其他值得注意的新结构。多项研究 已将 k 最近邻 (kNN) 搜索集成到 Transformer 块中,从而允许输入分块,并在理论上解决 Transformer 模型长期受到批评的上下文长度限制。Kuratov 等人 将 Transformer 与 RNN 集成,利用模型的中间输出作为检索的内容。

​ 在代码和科学领域,FiD 已得到广泛采用,其应用涵盖各种代码相关领域 和 AI-for-Science 。

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

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

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

​ 在音频领域,Koizumi 等人利用 LLM,在注意模块中加入编码的密集特征来指导音频字幕的生成。 ReAudioLDM 利用不同的编码器从文本和音频中提取深度特征,然后将其集成到其潜在扩散模型 (LDM) 的注意机制中。 对于视频字幕,R-ConvED 使用卷积编码器-解码器网络通过注意机制处理检索到的视频句子对,生成隐藏状态以生成字幕。CARE引入概念检测器来生成概念概率,并将概念表示合并到混合注意机制中。 EgoInstructor 使用门控交叉注意来合并文本和视频特征,提高了自我中心视频字幕的相关性和连贯性。

基于潜在表示的 RAG 可跨模态和任务进行适应,融合了检索器和生成器隐藏状态,但需要额外的训练来对齐潜在空间。它使开发无缝整合检索信息的复杂算法成为可能

Logit-based RAG

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

​ 在文本领域,kNN-LM 及其变体在每个解码步骤中将语言模型概率与相似前缀的检索距离概率相混合。TRIME 和 NPM是传统 kNNLM 方法的根本性演变,使用来自本地数据库的紧密对齐的标记作为输出,尤其是在长尾分布场景中提高了性能。

​ 除了文本之外,其他模态(例如代码和图像)也利用了基于 logit 的 RAG。

​ 在代码领域,一些研究 也采用了 kNN 的概念来增强最终输出控制,从而实现了卓越的性能。此外,EDITSUM 通过在 logit 级别集成原型摘要来提高代码摘要的质量。对于图像字幕,MA 直接应用 kNN-LM 框架来解决图像字幕问题,取得了良好的效果。

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

Speculative RAG

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

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

RAG Enhancements

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

image-20240817160424070

Input Enhancement

最初输入到检索器的输入对检索阶段的最终结果有显著影响。在本节中,作者介绍两种输入增强方法:

query transformation and data augmentation.

  • query transformation

查询转换可以通过修改输入查询来增强检索结果。 Query2doc和 HyDE使用原始查询生成伪文档,然后将其用作检索查询。伪文档包含更丰富的相关信息,有助于检索更准确的结果。 TOC 利用检索到的内容将模糊查询分解为多个清晰的子查询,这些子查询被发送到生成器并聚合以产生最终结果。 对于复杂或模糊的查询,RQ-RAG 将它们分解为清晰的子查询以进行细粒度检索,并合成响应以提供对原始查询的连贯答案。Tayal 等人使用动态少量样本示例和上下文检索细化初始查询,增强了生成器对用户意图的掌握。

  • data augmentation

数据增强是在检索之前对数据进行改进,包括删除不相关信息、消除歧义、更新过时文档、合成新数据等技术。 Make-An-Audio使用字幕和音频文本检索为无语言音频生成字幕以缓解数据稀疏性,并添加随机概念音频以改进原始音频。LESS 通过分析梯度信息优化下游任务的数据集选择,旨在提高模型对指令提示的响应性能。ReACC使用数据增强(包括重命名和死代码插入)来预训练代码检索模型。Telco-RAG 通过应用“3GPP 规范词汇表”来提高检索准确率,并使用路由器模块将它们与用户查询进行匹配。

Retriever Enhancement

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

  • Recursive Retrieval

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

  • Chunk Optimization

​ 块优化是指调整块大小以改善检索结果。 LlamaIndex结合了一系列块优化方法,其中一种方法遵循“从小到大”的原则。这里的核心概念是精确定位更细粒度的内容但返回更丰富的信息。例如,句子窗口检索会获取小文本块并返回围绕检索到的片段的相关句子窗口。在自动合并检索中,文档按树结构排列。 该过程通过首先获取子节点来检索封装其子节点内容的父节点。为了解决缺乏上下文信息的问题,RAPTOR 采用递归嵌入、聚类和文本块汇总,直到进一步聚类变得不可行,从而构建一个多级树结构。 PromptRAG 通过预先生成目录来提高检索准确率,使模型能够根据查询自主选择相关章节。Raina 等人将文本块分解为更细的原子语句,以实现更高的召回率和更好的结果。

Retriever Finetuning

​ 检索器是 RAG 系统的核心,它依赖于熟练的嵌入模型来表示相关内容并为生成器提供数据,从而提高系统性能。 此外,具有强大表达能力的嵌入模型可以使用特定领域或与任务相关的数据进行微调,以提高目标领域的性能。REPLUG 将 LM 视为黑匣子,并根据最终结果更新检索器模型。APICoder 使用 python 文件和 api 名称、签名、描述对检索器进行微调。EDITSUM ]对检索器进行微调以减小检索后摘要之间的 jaccard 距离。SYNCHROMESH 在损失中添加了树距离 AST,并使用目标相似性调整 (TST) 来微调检索器。 R-ConvED使用与生成器相同的数据对检索器进行微调。 Kulkarni 等人 应用 infoNCE 损失来微调检索器。

Hybrid Retrieval

​ 混合检索表示同时使用多种检索方法或从多个不同来源提取信息。 RAP-Gen 、BlendedRAG 和 ReACC 同时使用密集检索器和稀疏检索器来提高检索质量。Rencos 使用稀疏检索器在句法级别检索相似的代码片段,使用密集检索器在语义级别检索相似的代码片段。BASHEXPLAINER 首先使用密集检索器捕获语义信息,然后使用稀疏检索器获取词汇信息。RetDream 首先使用文本检索,然后使用图像嵌入检索。 CRAG 具有一个检索评估器,它可以衡量文档与查询的相关性,并根据置信度提示三种检索响应:如果准确,则直接使用结果进行知识细化,如果不正确,则进行网络搜索,对于模棱两可的情况,则采用混合方法。Huang 等人 通过在检索阶段引入 DKS(密集知识相似性)和 RAC(检索器作为答案分类器)来改进问答系统,评估答案的相关性和知识的适用性。UniMSRAG 引入了一种称为“代理标记”的新型标记,它决定了从中检索信息的来源。Koley 等人 通过整合草图和文本进行细粒度检索来增强图像检索,从而获得更好的结果。

Re-ranking

​ Rerank 技术是指对检索到的内容进行重新排序,以实现更大的多样性和更好的结果。 Re2G 在传统检索器之后应用了重排序器模型,以减少将文本压缩为向量所造成的信息丢失的影响。AceCoder 使用选择器对检索到的节目进行重排序,以减少冗余节目并获得多样化的检索节目。XRICL 在检索后使用基于蒸馏的样本重排序器。 Rangan 使用量化影响力测量,评估查询和参考之间的统计偏差,以评估数据子集的相似性并重新排序检索结果。UDAPDR 使用 LLM 以经济高效的方式生成合成查询,以训练特定领域的重排序器,然后应用多教师知识蒸馏来开发一个有凝聚力的检索器。 LLM-R 通过使用静态 LLM 进行文档排名和奖励模型训练,并辅以知识提炼,迭代地改进其检索器。每个训练周期都会逐步改进检索器,从而实现渐进式优化。Finardi 等人 将互惠排名集成到检索过 程中以增强文本块相关性,并使用 monoT5 作为重新排序器来优化结果质量。Li 等人 将重新排序模块集成到他们的端到端 RAG 系统中,提高了 LLM 的检索质量和事实准确性。

Retrieval Transformation

​ 检索转换涉及重新措辞检索到的内容以更好地激活生成器的潜力,从而提高输出。 FILCO 有效地从检索到的文本中清除无关材料,仅隔离相关的支持内容,以简化生成器的任务并促进准确的答案预测。FiD-Light 最初使用编码器将检索到的内容转换为向量,然后对其进行压缩,从而大大减少了延迟时间。RRR 通过模板将当前查询与每轮中的前 k 个文档集成,然后通过预先训练的 LLM(GPT-3.5-Turbo 等)对其进行重构。

Others

​ 除了上述优化方法外,还有一些其他的检索过程优化方法。 例如,元数据过滤 是一种帮助处理检索到的文档的方法,它使用元数据(如时间、目的等)来过滤检索到的文档以获得更好的结果。GENREAD 和 GRG 引入了一种新方法,通过提示 LLM 针对给定问题生成文档来取代或改进检索过程。Multi-Head-RAG 采用多个嵌入模型将相同的文本块投影到不同的向量空间中,并利用多头注意层来捕获不同的信息方面,从而提高检索过程的准确性

Generator Enhancement

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

Prompt Engineering

​ 提示工程中的技术着重于提高 LLM 输出的质量,例如提示压缩、Stepback Prompt 、Active Prompt、Chain of Thought Prompt 等,均可应用于 RAG 系统中的 LLM 生成器。

​ LLMLingua 应用小模型压缩查询的整体长度以加速模型推理,减轻不相关信息对模型的负面影响,并缓解“Lost in the Middle”现象 。ReMoDiffuse 利用 ChatGPT 将复杂描述分解为解剖文本脚本。ASAP 将由输入代码、函数定义、分析结果和相应注释组成的示例元组合并到提示中以获得更好的结果。CEDAR 使用设计的提示模板将代码演示、查询和自然语言指令组织成提示。 XRICL 利用 COT 技术添加翻译对作为跨语言语义解析和推理的中间步骤。 ACTIVERAG 采用认知联系机制校准 LLM 的内在认知,并在答案生成中应用 COT 提示。Make-An-Audio能够使用其他模态作为输入,从而为后续过程提供更丰富的信息。

Decoding Tuning

​ 解码调整包括通过微调超参数来增强生成器控制,以增加多样性,并限制输出词汇量,以及其他调整。 InferFix 通过调整解码器中的温度来平衡结果的多样性和质量。SYNCHROMESH 通过实现完成引擎来限制解码器的输出词汇量,以消除实现错误

Generator Finetuning

​ 生成器的微调可以增强模型拥有更精确的领域知识或与检索器更好地契合的能力。RETRO 固定了检索器的参数,并在生成器中使用分块交叉注意机制来结合查询和检索器的内容。APICoder 使用打乱的新文件结合 API 信息和代码块对生成器 CODEGEN-MONO 350M 进行微调。CARE 使用图像、音频和视频-文本对训练编码器,然后微调解码器(生成器)以同时减少字幕和概念检测损失,同时保持编码器和检索器固定。Animate-AStory 使用图像数据优化视频生成器,然后微调 LoRA 适配器以捕捉给定角色的外观细节。RetDream使用渲染的图像微调 LoRA 适配器 。

Result Enhancement

​ 在许多场景中,RAG 的结果可能达不到预期的效果,而一些结果增强技术可以帮助缓解这一问题。 输出重写:输出重写是指在某些场景下重写生成器生成的内容以满足下游任务的需要。SARGAM 通过使用特殊的 Transformer 以及删除、占位符和插入分类器来细化代码相关任务中的输出,以更好地与现实世界的代码上下文保持一致。Ring 通过根据生成器生成的每个 token 对数概率的平均值对候选集进行重新排序来获得多样性结果。CBRKBQA通过将生成的关系与知识图谱中查询实体的局部邻域中呈现的关系对齐来修改结果。

RAG Pipeline Enhancement

RAG流水线增强是指对RAG整体流程进行优化,以达到更好的性能效果。

Adaptive Retrieval:

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

  • 基于规则:FLARE 主动决定是否以及何时在生成过程中搜索概率。Efficient-KNNLM 将 KNN-LM 和 NPM的生成概率与超参数 λ 相结合,以确定生成和检索的比例。 Mallen 等人 对问题进行统计分析,以便对高频问题进行直接回答,并对低频问题应用 RAG。Jiang 等人 根据模型不确定性、输入不确定性和输入统计数据评估模型置信度,以指导检索决策。 Kandpal 等 研究了相关文档数量与模型知识掌握程度的相关性,以此评估是否需要进行检索。
  • 基于模型:Self-RAG 使用训练好的生成器,根据不同用户查询下的检索 token 判断是否需要进行检索。Ren 等 使用“判断提示”判断 LLM 是否能回答相关问题以及答案是否正确,从而辅助判断是否需要进行检索。 SKR 利用 LLM 自身提前判断是否能回答问题的能力,如果能回答,就不进行检索。Rowen 将问题翻译成多种语言,并检查这些语言之间的答案一致性,并根据结果判断是否需要进行信息检索。AdaptiveRAG 通过分类器(一个较小的 LM)根据查询复杂度动态决定是否进行检索。
Iterative RAG

​ 迭代 RAG 通过反复循环检索和生成阶段(而不是单轮)来逐步细化结果。 RepoCoder 使用迭代检索生成方法进行代码补全,使用先前的生成的代码可以更好地利用分散的信息并改善结果。ITER-RETGEN 通过使用生成器的输出来精确定位知识空白、检索必要信息并为未来的生成周期提供信息,从而以迭代方式提高内容质量。SelfMemory 迭代地利用检索增强生成器来形成一个扩展的记忆池,记忆选择器从中挑选一个输出来通知下一个生成周期。RAT 最初通过具有零样本 CoT 提示的 LLM 生成内容,然后通过从外部知识库检索知识来修改每个思考步骤。

应用

image-20240817194201854

BENCHMARK

​ 鉴于对 RAG 的研究兴趣和应用日益增加,目前也出现了一些从各个方面对 RAG 进行评估的基准。

​ Chen 等提出了一个 RAG 基准,从四个维度进行评估:(1)噪声鲁棒性,测试 LLM 是否可以从噪声文档中提取必要的信息;(2)负面拒绝,评估 LLM 是否可以在检索到的内容不足时拒绝响应;(3)信息集成,检查 LLM 是否可以通过整合多个检索到的内容来获取知识并做出响应;(4)反事实鲁棒性,确定 LLM 是否能够识别检索到的内容中的反事实错误。另外三个基准测试集 RAGAS 、ARES 和 TruLens 使用单独的评估器 LLM 评估三个方面:(1)忠实度,根据检索到的内容评估事实准确性;(2)答案相关性,确定结果是否解决了查询问题;(3)上下文相关性,评估检索到的内容的相关性及其简洁性。 CRUD-RAG 将 RAG 任务分为四种类型:创建、读取、更新和删除,通过文本延续、问答、幻觉校正和开放域多文档摘要对其进行评估。MIRAGE 评估医学领域的 RAG,重点关注医学问答系统的性能。 KILT 对维基百科快照进行对齐以验证信息的准确性,使用 BLEU 分数来精确定位相关文本并进行过滤以保证质量,从而为有证据支持的预测或引用提供多样化的检索系统。

讨论

限制

尽管 RAG 被广泛采用,但它本质上存在一些局限性。

Noises in Retrieval Results:

​ 由于项目表示和 ANN 搜索中的信息丢失,信息检索本质上存在缺陷。不可避免的噪声(表现为不相关内容或误导性信息)可能会在 RAG 系统中造成故障点 。然而,尽管提高检索准确度对于 RAG 有效性来说似乎是直观的,但最近的研究令人惊讶地发现,嘈杂的检索结果可能会提高生成质量 。一种可能的解释是,不同的检索结果可能有助于快速构建 。因此,检索噪声的影响仍不清楚,导致在实际使用中对度量选择和检索器-生成器交互产生混淆。

Extra Overhead

​ 虽然检索在某些情况下可以降低生成成本,但在大多数情况下,它会产生不可忽略的开销。换句话说,检索和交互过程不可避免地会增加延迟。当 RAG 与复杂的增强方法(如递归检索 和迭代 RAG )结合使用时,这种情况会更加严重。此外,随着检索源规模的扩大,存储和访问复杂度也会增加 。这样的开销阻碍了 RAG 在对延迟敏感的实时服务中的实用性

The Gap between Retrievers and Generators

​ 由于检索器和生成器的目标可能不一致,并且它们的潜在空间可能不同,因此设计它们的交互需要精心设计和优化。当前的方法要么解开检索和生成,要么在中间阶段将它们集成在一起。虽然前者更加模块化,但后者可以从联合训练中受益,但会阻碍通用性。 选择一种经济有效的交互方法来弥补差距是一项挑战,需要在实践中深思熟虑。

Increased System Complexity:

​ 引入检索不可避免地会增加系统复杂性和需要调整的超参数数量。例如,最近的一项研究发现,使用 top-k 而不是单个检索可以改善归因,但会损害基于查询的 RAG 的流畅性,而指标选择等其他方面仍在探索中。因此,当涉及 RAG 时,需要更多专业知识来调整生成服务

Lengthy Context

​ RAG(尤其是基于查询的 RAG)的主要缺点之一是它极大地延长了上下文,这使得上下文长度有限的生成器无法使用它。此外,加长的上下文通常会减慢生成过程。即时压缩 和长上下文支持 方面的研究进展部分缓解了这些挑战,尽管在准确性或成本方面略有损失。

未来潜在的方向

Novel Design of Augmentation Methodologies

​ 现有研究探索了检索器和生成器之间的各种交互模式。然而,由于这两个组件的目标不同,实际的增强过程对最终的生成结果有显著的影响。研究更先进的增强基础有望充分释放 RAG 的潜力。

Flexible RAG Pipelines

​ RAG 系统正在逐步采用灵活的流水线,例如递归、自适应和迭代 RAG。通过精确的调整和细致的工程设计,检索源、检索器、生成器和 RAG 子系统的独特融合有望解决复杂任务并提高整体性能。作者热切期待开创性的探索,推动更具创新性的 RAG 系统的发展。

Broader Applications

​ RAG 是一种应用于各种应用的通用技术。然而,一些生成任务尚未探索 RAG,在许多领域,RAG 的应用很天真,没有考虑领域的独特特征。作者相信设计特定领域的 RAG 技术将极大地造福更广泛的应用。

Efficient Deployment and Processing

​ 存在几种基于查询的 RAG 与 LLM 的部署解决方案,例如 LangChain、LLAMA-Index 和 PipeRAG。然而,对于其他 RAG 基础和/或生成任务,缺乏即插即用的解决方案。此外,由于检索开销和检索器和生成器的复杂性不断增加,实现高效的 RAG 仍然具有挑战性,需要进一步的系统级优化。

Incorporating Long-tail and Real-time Knowledge:

​ 虽然 RAG 的一个关键动机是利用实时和长尾知识,但很少有研究探索知识更新和扩展的流水线。许多现有的工作仅仅使用生成器的训练数据作为检索源,忽略了检索可以提供的动态和灵活的信息。因此,越来越多的研究设计具有不断更新的知识和灵活来源的 RAG 系统。作者还期望 RAG 能更进一步,适应当今 Web 服务中的个性化信息。

Combined with Other Techniques

​ RAG 与其他旨在提高 AIGC 有效性的技术正交,例如微调、强化学习、思路链和基于代理的生成。这些方法的结合 仍处于早期阶段,需要进一步研究,通过新颖的算法设计充分发挥其潜力。值得注意的是,最近出现了一种观点,“像 Gemini 1.5 这样的长上下文模型将取代 RAG”。然而,这种说法忽视了 RAG 在管理动态信息方面的灵活性,包括最新知识和长尾知识 。作者预计 RAG 将从长上下文生成中受益,而不是被它取代。

结论

​ 在本文中,作者在 AIGC 的背景下对 RAG 进行了全面而深入的调查,特别关注增强的基础、增强和应用。作者首先系统地组织和总结了 RAG 中的基础范例,深入了解了检索器和生成器之间的交互。然后,作者回顾了进一步提高 RAG 有效性的增强,包括每个组件或整个流程的增强。为了方便不同领域的研究人员,作者展示了 RAG 在各种模式和任务中的实际应用。最后,作者还介绍了 RAG 的现有基准,讨论了 RAG 当前的局限性,并阐明了有希望的未来发展方向。

。作者预计 RAG 将从长上下文生成中受益,而不是被它取代。

结论

​ 在本文中,作者在 AIGC 的背景下对 RAG 进行了全面而深入的调查,特别关注增强的基础、增强和应用。作者首先系统地组织和总结了 RAG 中的基础范例,深入了解了检索器和生成器之间的交互。然后,作者回顾了进一步提高 RAG 有效性的增强,包括每个组件或整个流程的增强。为了方便不同领域的研究人员,作者展示了 RAG 在各种模式和任务中的实际应用。最后,作者还介绍了 RAG 的现有基准,讨论了 RAG 当前的局限性,并阐明了有希望的未来发展方向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸡不叫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值