【检索增强】Retrieval-Augmented Generation for Large Language Models:A Survey

本文全面回顾了RAG框架,介绍了朴素RAG、高级RAG和模块化RAG的演变。深入探讨了检索、生成和增强等核心技术及其协同作用,构建了评估框架。还指出RAG面临长文处理、鲁棒性等挑战,其应用已扩展到多模态领域,生态系统也在不断发展。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文简介

1、对最先进水平RAG进行了全面和系统的回顾,通过包括朴素RAG高级RAG模块化RAG在内的范式描述了它的演变。这篇综述的背景下,更广泛的范围内的法学硕士研究RAG的景观。

2、确定并讨论了RAG过程中不可或缺的核心技术,特别关注“检索”、“生成”和“增强”方面,并深入研究了它们的协同作用,阐明了这些组件如何复杂地协作以形成一个有凝聚力和有效的RAG框架。

3、构建了一个全面的RAG评估框架,概述了评估目标指标。对比分析从不同的角度阐明了RAG与微调相比的优缺点。此外,预测了RAG的未来方向,强调潜在的增强以应对当前的挑战,扩展到多模式设置,以及其生态系统的发展。
在这里插入图片描述
R A G 核心组件的分类 RAG核心组件的分类 RAG核心组件的分类

1、RAG框架

(1)简述

本文将RAG搜索范式分成了三类:朴素RAG、高级RAG和模块化RAG

在这里插入图片描述
从模块化RAG来看,朴素RAG是只有读取和检索模块,高级RAG除了朴素RAG中的读取和检索模块外,还具有重写和重排模块。

从某种程度上来说,朴素RAG是高级RAG的一个特例,而高级RAG又是模块化RAG的一个特例。三种范式之间是一种继承与发展的关系。

(2)朴素RAG

朴素RAG是传统的RAG过程,包括:索引、检索和生成。

索引:索引过程是离线数据准备的关键,涉及三个阶段。
(1)数据预处理:数据清洗、提取、格式转换为标准纯文本、切割分块等。
(2)嵌入表示:将分块后的数据用嵌入模型将其用向量表示。
(3)创建索引:创建索引以键值对的形式存储这些文本块及其向量嵌入,从而实现高效且可扩展的搜索功能。

检索:受到用户查询后,将会去索引库中匹配向量。
(1)用户查询向量化:系统使用索引阶段使用的相同编码模型将输入转码为向量表示。
(2)计算相似度分数:计算查询向量和索引语料库中向量的相似度分数。
(3)优先级排序并检索:系统对与查询最相关的前K个块进行优先级排序,检索出来对应的文本块,这些文本块将作为结果会返回给用户。

生成:查询与选择出的文档将会被拼接在一起,作为一个连贯的prompt输入给LLM。

传统RAG的缺陷
低精度、检索快不对齐、幻觉、低回忆率
在这里插入图片描述

(3)高级RAG

高级RAG有针对性地解决朴素RAG的潜在问题,实现了检索前策略和检索后策略。还是用了滑动窗口技术、细粒度分割和元数据等技术改进索引方法,引入了各种方法来优化检索过程。

检索前过程:优化数据索引。优化数据索引的目标是提高被检索内容的质量。这涉及五种主要策略:增强数据粒度、优化索引结构、添加元数据、对齐优化和混合检索。
(1)增强数据粒度:旨在提高文本的标准化、一致性、事实准确性和丰富的上下文,从而提高RAG系统的性能。这包括删除不相关的信息,消除实体和术语中的歧义,确认事实的准确性,维护上下文和更新过时的文件。
(2)优化索引结构:调整块的大小以捕获相关上下文、跨多个索引路径进行查询,以及通过利用图数据索引中的节点之间的关系来合并图结构中的信息以捕获相关上下文。
(3)添加元数据:将引用的元数据(日期和用途等)集成到块中进行过滤,以及将引用的章节和小节等元数据集成到块中以提高检索效率。
(4)对齐优化:通过在文档中引入“假设问题”来纠正对齐问题和差异,从而解决文档之间的对齐问题和差异。

检索:通过计算查询和块之间的相似性识别合适的上下文,Embedding模型是这个过程的核心。
(1)微调Embedding模型:微调Embedding模型会显著影响RAG系统中检索内容的相关性。该过程包括:自定义Embedding模型、增强特定领域上下文中的检索相关性。可以适应ChatGPT等语言模型来生成用于微调的预训练数据,以制定基于文档块的数据。
(2)动态Embedding:适应单词使用的上下文,不像静态嵌入,它为每个单词使用单个向量。例如,在向BERT这样的Transformer模型中,相同的单词可以根据周围的单词具有不同的嵌入。OpenAI的embeddings-ada-02模型建立在LLM的原理之上,是一个复杂的动态嵌入模型,可以捕获上下文理解。然而,它可能不会像最新的大规模语言模型(如GPT-4)那样对上席文同样表现出敏感性。

检索后过程:在从数据库中检索有价值的上下文之后,必须将其与查询合并,作为llm的输入,同时解决上下文窗口限制带来的挑战。简单地将所有相关文件一次性呈现给法学硕士可能会超出上下文窗口限制引入噪音,并阻碍对关键信息的关注。为了解决这些问题,需要对检索到的内容进行额外处理。
(1)重排:对检索到的信息重新排序,将最相关的内容重新定位到提示的边缘(开头或结尾)是一个关键策略。
(2)prompt压缩:检索文档中的噪声会对RAG性能产生不利影响。在后处理中,重点在于压缩不相关的上下文,突出关键段落,减少整体上下文长度。包括:利用小语言模型来计算提示互信息或困惑,估计元素的重要性;在不同粒度上训练压缩器来解决这个问题;计了总结技术来增强LLM的关键信息感知,特别是在处理广泛的上下文时。

(4)模块化RAG

模块化RAG提供了一个更为灵活和通用的框架,集成了多种增强功能模块的方法,例如在检索器中加入相似检索的搜索模块和应用微调方法。模块化RAG允许序列化的管道和跨多个模块端到端的方法。

1)模块化RAG的结构

1、搜索模块·:从多源异构数据来源中获取数据。

针对特定场景进行了定制,并结合了对其他语料库的直接搜索。这种集成是使用LLM生成的代码查询语言(如SQL或Cypher)以及其他自定义工具来实现的。这些搜索的数据源可以包括搜索引擎文本数据表格数据知识图谱

2、记忆模块:通过利用LLM的记忆信息来指导检索。

包括:识别与当前输入最相似的记忆;利用检索增强生成器迭代创建无界内存池,将“原始问题”和“双重问题”结合起来。通过使用检索增强的生成模型,使用自己的输出来改进自己,文本在推理过程中与数据分布更加一致。利用模型本身的输出来代替训练数据。

3、融合模块:使用LLM将查询扩展到多个不同的角度,多个不同的方法来查询。

这种方法不仅捕获了用户所寻求的明确信息,而且还揭示了更深层次的、具有变革性的知识。融合过程包括对原始查询和扩展查询进行并行向量搜索智能重新排序以优化结果,并将最佳结果与新查询配对。这种复杂的方法确保搜索结果与用户的显性和隐性意图紧密结合,从而导致更有洞察力和相关的信息发现。

4、路由模块:查询路由决定用户查询的后续操作。

RAG系统的检索过程利用了多种来源,这些来源在领域、语言和格式上都有所不同,可以根据情况进行交替或合并。查询路由决定用户查询的后续操作,包括:汇总搜索特定数据库将不同的路径合并到单个响应中。查询路由器还为查询选择适当的数据存储,其中可能包括各种来源,如矢量存储、图形数据库或关系数据库,或者索引层次结构——例如,用于多文档存储的摘要索引和文档块向量索引。查询路由器的决策是预定义的,并通过llm调用执行,llm调用将查询定向到所选的索引。

5、预测模块:解决检索内容中冗余和噪声等常见问题,该模块不是直接从数据源中检索,而是利用LLM生成必要的上下文。

与通过直接检索获得的内容相比,LLM产生的内容更有可能包含相关信息

6、任务适配:侧重于使RAG适配各种下游任务。

包括:自动从预构建的数据池中检索零shot任务输入的提示,从而增强了任务和模型之间的通用性;利用LLM作为少量查询生成器,并基于生成的数据创建特定于任务的检索器。通过利用LLM的泛化能力,它可以用最少的示例开发特定于任务的端到端检索器。

2)模块化RAG的模式

模块化RAG的组织结构具有高度的适应性,允许在RAG过程中替换或重新排列模块以适应特定的问题上下文。目前研究主要探讨两种组织范式。一种是涉及添加模块替换模块,一种是侧重于调整模块之间的组织流程。这种灵活性使RAG过程能够有效地处理各种任务。

1、添加或替换模块:引入或替换模块的策略包括维护检索-读取过程的核心结构,同时集成其他模块以增强特定功能。

  1. RRR模型[Ma et al., 2023a]引入了 rewrite-retrieve-read 过程,利用LLM性能作为重写模块的强化学习激励。这使重写器能够微调检索查询,从而提高读取器的下游任务性能。
  2. 在 Generate-Read [Yu et al., 2022] 等方法中,模块可以选择性地交换,其中LLM的生成模块取代了检索模块。The Recite-Read方法[Sun et al., 2022]将外部检索转换为从模型权重中检索,要求LLM首先记住特定于任务的信息,然后产生能够处理知识密集型自然语言处理任务的输出。

2、调整模块间的流程:在模块流调整领域,重点是加强语言模型和检索模型之间的交互。

  1. DSP [Khattab et al., 2022]引入了 Demonstratre-Search-Predict 框架,将上下文学习系统视为一个明确的程序,而不是最终的任务提示,从而更有效地处理知识密集型任务。
  2. ITER-RETGEN [Shao等人,2023]方法利用生成的内容来指导检索,在检索-读取-检索-读取流程中迭代地实现“检索增强生成”和“生成增强检索”。这种方法展示了一种使用一个模块的输出来改进另一个模块的功能的创新方法

3)优化RAG管道

优化检索过程的目的是提高检索效率和检索质量。目前的研究主要集中在整合多种搜索技术精炼检索步骤结合认知回溯实现通用查询策略以及利用嵌入相似度等方面。这些努力共同努力实现检索效率和上下文信息深度在RAG系统之间的平衡。

1、混合搜索探索:RAG系统通过智能集成各种技术来优化其性能。

包括:基于关键字的搜索语义搜索向量搜索。这种方法利用每种方法的独特优势来适应不同的查询类型和信息需求,确保对高度相关和上下文丰富的信息进行一致的检索。使用混合搜索作为检索策略的强大补充,从而提高了RAG管道的整体效率。

2、递归检索和查询引擎:采用两步检索方式,在效率和提供上下文丰富的响应之间取得平衡。

第一步,在初始检索阶段获取较小的块以捕获关键语义。第二步,在流程的后期阶段,将向LLM提供包含更多上下文信息的大块。

3、回退提示:鼓励LLM从具体实例中转移出来,围绕更广泛的概念和原则进行推理。

相当于是把你的问题抽象一下再给大模型。实验结果表明,当使用回退提示时,在各种具有挑战性的、基于推理的任务中,性能显著提高,突出了它们对RAG过程的自然适应性。这些增强检索的步骤既可以应用于生成对回退提示的响应,也可以应用于最终的问答过程。
比如:一个物体从 100 米的高处落下到地上的速度是多少,SBP(step backward prompt) 就是在提示词里加上这样一句话“这个问题遵循什么物理规则”。

4、子查询方法:根据场景的不同,可以采用各种查询策略。

例如使用LlamaIndex等框架提供的查询引擎、利用树查询、利用向量查询或执行简单的块顺序查询。

5、假设的文档嵌入:假设文档嵌入基于生成的答案在嵌入空间中可能比直接查询更接近这一假设,通过LLM为响应查询创建一个假设文档(答案),将该文档嵌入化,并使用生成的嵌入来检索与假设文档相似的真实文档。该方法不是基于查询寻找嵌入相似度,而是关注从一个答案到另一个答案的嵌入相似度。然而,它可能不会始终产生理想的结果,特别是当语言模型不熟悉主题时,可能会导致更多带有错误的实例。

2、检索

从数据源中有效地检索相关文档是至关重要的。然而,如何精确的找到我们需要的文档面临着巨大的挑战。这部分分为三个基本问题:
1、我们如何实现准确的语义表示?
2、什么方法可以对齐查询和文档的语义空间?
3、如何使检索器的输出与大语言模型的偏好保持一致?

(1)增强语义表示

在RAG中,语义空间是必不可少的,因为它涉及查询和文档的多维映射。语义空间的检索精度显著影响RAG结果。本节将介绍构建准确语义空间的两种方法。

1)块优化

在管理外部文档时,最初的步骤包括将它们分解为更小的块,以提取细粒度的特征,然后嵌入这些特征以表示它们的语义。然而,嵌入过大或过小的文本块可能会导致次优结果。因此,确定语料库中文档的最佳块大小对于确保检索结果的准确性和相关性至关重要。

选择适当的分块策略需要仔细考虑几个重要因素,例如索引内容的性质嵌入模型及其最佳块大小用户查询的预期长度和复杂性,以及特定应用程序对检索结果的利用。不同的嵌入模型,在不同块大小下表现出不同的性能特征。例如,在处理单个句子时,sentence-transformer模型表现更好。而text-embedding-ada-002在处理包含256或512个token时表现更出色。

用户输入问题的长度和复杂性以及应用程序的特定需求(例如,语义搜索或问题回答)等因素也会影响分块策略的选择。这种选择可能直接受到所选LLM的令牌限制的影响需要调整块大小。在现实中,获得精确的查询结果需要灵活地应用不同的分块策略。没有放之四海而皆准的“最佳”策略,只有最适合特定环境的策略。

目前RAG的研究探索了各种旨在提高检索效率和准确性的块优化技术

包括:使用滑动窗口技术,通过跨多个检索过程合并全局相关信息来实现分层检索;
“small2big”方法,在初始搜索阶段利用小文本块,随后向语言模型提供更大的相关文本块进行处理。

2)微调嵌入模型

一旦确定了适当的块大小,下一个关键步骤是使用嵌入模型将这些块和查询嵌入到语义空间中。嵌入的有效性至关重要,因为它影响模型表示语料库的能力。当将通用嵌入模型应用于特定领域时,它们准确捕获特定领域信息的能力可能会受到限制。

嵌入模型在特定任务下微调,对于确保模型从内容相关性方面理解用户查询至关重要。没有调优的模型可能无法充分满足特定任务的需求。因此,对嵌入模型进行微调对于下游应用程序至关重要。在嵌入微调方法中有两种主要的范式。

1、领域知识微调:为了确保嵌入模型准确地捕获特定于领域的信息,必须利用特定于领域的数据集进行调优。这个过程与标准语言模型微调不同,主要在于所涉及的数据集的性质。
通常,用于嵌入模型微调的数据集包含三个主要元素查询语料库相关文档。该模型使用这些查询来识别语料库中的相关文档。然后,根据响应查询检索这些相关文档的能力来衡量模型的有效性。数据集构建、模型微调和评估阶段各有不同的挑战。

2、针对下游任务微调:在利用RAG完成这些任务的领域中,通过利用llm的功能来微调嵌入模型的创新方法已经出现。

  1. PROMPTAGATOR [Dai等人,2022]利用LLM作为少量查询生成器来创建特定于任务的检索器,解决了监督微调中的挑战,特别是在数据稀缺领域。
  2. LLM-Embedder [Zhang等,2023a],利用llm为跨多个下游任务的数据生成奖励信号。检索器使用两种类型的监督信号进行微调:数据集的硬标签和来自llm的软奖励。这种双信号方法促进了更有效的微调过程,使嵌入模型适应不同的下游应用。

(2)查询与文档对齐

在RAG应用程序的上下文中,检索器可以使用单个嵌入模型对查询和文档进行编码,或者为每个模型使用单独的模型。此外,用户的原始查询可能会受到措辞不精确和缺乏语义信息的影响。因此,将用户查询的语义空间与文档的语义空间保持一致是至关重要的。本节将介绍两种旨在实现这种对齐的基本技术。

1)查询重写

查询重写是对齐查询和文档语义的基本方法。

  1. Query2Doc和ITER-RETGEN等方法利用llm通过将原始查询与附加指导相结合来创建伪文档[Wang et al., 2023c, Shao et al., 2023]。
  2. HyDE使用文本线索构建查询向量,生成捕获基本模式的“假设”文档[Gao等,2022]。
  3. RRR引入了一个框架,该框架颠倒了传统的检索和读取顺序,重点是查询重写[Ma et al., 2023a]。
  4. step - backprompts使llm能够基于高级概念执行抽象推理和检索[Zheng等,2023]。
  5. 此外,多查询检索方法利用llm同时生成和执行多个搜索查询,有利于解决包含多个子问题的复杂问题

2)嵌入转换

除了诸如查询重写之类的广泛策略之外,还有专门为嵌入转换设计的更细粒度的技术。

  1. LlamaIndex [Liu, 2023]通过引入一个可以集成在查询编码器之后的适配器模块来举例说明这一点。这个适配器有助于调优,从而优化查询嵌入的表示,将它们映射到与预期任务更紧密结合的潜在空间。
  2. 将查询与结构化外部文档对齐的挑战,特别是在处理结构化和非结构化数据之间的不一致性时,SANTA解决了这个问题[Li等人,2023]。它通过两种预训练策略来提高检索器对结构化信息的敏感性:第一,利用结构化和非结构化数据之间的内在一致性,在结构感知预训练方案中通知对比学习;第二,通过实现掩码实体预测。后者利用以实体为中心的掩码策略,鼓励语言模型预测和填充被掩码的实体,从而促进对结构化数据的更深入理解

(3)检索器和LLM对齐

在RAG管道中,通过各种技术提高检索命中率不一定会改善最终结果,因为检索的文档可能与llm的特定需求不一致。因此,本节将介绍两种方法,旨在使检索器输出与llm的首选项保持一致。

1)微调检索器

一些研究利用llm的反馈信号来完善检索模型。

  1. AAR [Yu等人,2023b] 使用编码器-解码器架构为预训练的检索器引入了监视信号。这是通过FiD交叉注意分数来识别LM的首选文档来实现的。随后,通过硬负采样和标准交叉熵损失对检索器进行微调。最终,改进后的检索器可以直接用于增强未见目标LMs,从而提高目标任务的性能。此外,有人认为LLM可能更倾向于关注可读性而不是信息丰富的文档。
  2. REPLUG [Shi et al., 2023] 利用检索器和LLM计算检索文档的概率分布,然后通过计算KL散度进行监督训练。这种简单有效的训练方法通过使用LM作为监督信号来提高检索模型的性能,从而消除了对特定交叉注意机制的需要。
  3. UPRISE [Cheng et al., 2023a]也使用冻结llm对提示检索器进行微调。LLM和检索器都将提示输入对作为输入,并利用LLM提供的分数来监督检索器的训练,有效地将LLM视为数据集标注器
  4. Atlas [Izacard et al., 2022]提出了四种监督微调嵌入模型的方法
    (1)注意力蒸馏。该方法利用LLM在输出过程中生成的交叉注意分数来提取模型的知识。
    (2)EMDR2。该方法采用期望最大化算法,以检索到的文档作为潜在变量对模型进行训练。
    (3)困惑度蒸馏。直接使用生成的token的Perplexity作为指标来训练模型。
    (4)循环。该方法提出了一种新的基于文档删除对LLM预测影响的损失函数,提供了一种有效的训练策略,使模型更好地适应特定的任务

这些方法旨在提高检索器和LLM之间的协同作用,从而提高检索性能并更准确地响应用户查询。

(4)适配器

微调模型可能会带来挑战,例如通过API集成功能或解决本地计算资源有限问题。因此,一些方法选择合并一个外部适配器来帮助校准

  1. PRCA通过上下文提取阶段奖励驱动阶段训练适配器。然后,使用基于token的自回归策略**对检索器的输出进行优化[**Yang等人,2023b]。
  2. token过滤方法采用交叉注意分数来有效地过滤token,只选择得分最高的输入token[Berchansky等人,2023]。
  3. RECOMP引入了提取压缩器生成压缩器来生成摘要。这些压缩器要么选择相关句子,要么合成文档信息,创建适合多文档查询的摘要[Xu等,2023a]。
  4. PKG引入了一种通过指令微调将知识集成到白盒模型中的创新方法[Luo等人,2023]。在这种方法中,直接替换检索模块,根据查询生成相关文档。该方法有助于解决在微调过程中遇到的困难,并增强模型性能。

3、生成

RAG的一个关键组件是它的生成器,它负责将检索到的信息转换成连贯流畅的文本。与传统的语言模型不同,RAG的生成器通过整合检索数据来提高准确性和相关性,从而使自己与众不同。在RAG中,生成器的输入不仅包含典型的上下文信息,还包含通过检索器获得的相关文本片段。这种全面的输入使生成器能够深入了解问题的上下文,从而产生更多信息和上下文相关的响应。

此外,检索的文本来指导生成器,以确保生成的内容与获得的信息之间的一致性。不同的输入数据导致在生成阶段进行有针对性的工作,所有这些工作都旨在改进大型模型对来自查询和文档的输入数据的适应。在接下来的小节中,我们将通过深入研究检索后处理微调的各个方面来探讨生成器的介绍。

(1)冻结LLM进行后处理

在不可微调的LLM领域中,许多研究依赖于GPT-4 等成熟的模型来利用其全面的内部知识,系统地综合从各种文档中检索到的信息。然而,这些大型模型仍然存在挑战,包括上下文长度的限制对冗余信息的敏感性。为了解决这些问题,一些研究努力将重点转向检索后处理。

检索后处理包括处理过滤优化检索器从大型文档数据库检索到的相关信息。它的主要目标是提高检索结果的质量,使它们更贴近用户需求或后续任务。 它可以看作是对检索阶段获得的文档的再处理。检索后处理中的常见操作通常包括信息压缩结果重新排序

1)信息压缩

检索器擅长从庞大的知识库中检索相关信息,但是管理检索文档中的大量信息是一个挑战。正在进行的研究旨在扩展大型语言模型的上下文长度来解决这个问题。然而,当前的大型模型仍然与上下文限制作斗争。因此,在某些情况下,压缩信息是必要的。信息压缩对于降低噪声、解决上下文长度限制和增强生成效果具有重要意义。

  1. PRCA通过训练一个信息提取器来解决这个问题[Yang等,2023b]。训练过程的目的是尽量减少提取和实际上下文之间的差异。
  2. RECOMP采用了一种类似的方法,使用对比学习训练一个信息收集器[Xu et al., 2023a]。每个训练数据点由一个正样本和五个负样本组成,编码器在整个过程中使用对比损失进行训练[Karpukhin et al., 2020]。
  3. 在[Ma et al., 2023b]的研究中采取了不同的方法,旨在减少文件的数量,以提高模型答案的准确性。他们提出了**“Filter-Reranker”范式**,该范式结合了LLM和小语言模型(Small Language Models, slm)的优势。在这个范例中,SLM充当过滤器,而LLM充当重新排序代理。研究表明,指导LLM重新排列由SLM识别的具有挑战性的样本可以显著改善各种信息提取(IE)任务

2)重排

重新排序模型是优化从检索器检索到的文档集的关键。当引入额外的上下文时,语言模型经常面临性能下降的问题,重新排序可以有效地解决这个问题。核心概念包括重新排列文档记录,将最相关的项放在最上面,从而限制文档的总数。 这既解决了检索过程中上下文窗口展开的难题,又提高了检索效率和响应速度。

重新排序模型在整个信息检索过程中扮演双重角色既充当优化器,又充当精炼器。它为后续的语言模型处理提供了更有效和准确的输入[Zhuang等,2023]。

上下文压缩被整合到重新排序过程中,以提供更精确的检索信息。这种方法需要减少单个文档的内容并过滤整个文档,其最终目标是在搜索结果中显示最相关的信息,以便更集中、更准确地显示相关内容。

(2)微调LLM进行RAG

在RAG模型中优化生成器是其体系结构的一个关键方面。生成器的作用是获取检索到的信息并生成相关文本,形成模型的最终输出。生成器的优化旨在确保生成的文本既自然又有效地利用检索到的文档来更好地满足用户的查询需求

在标准llm生成任务中,输入通常由查询组成。RAG的突出之处在于,它不仅将查询,还将检索器检索到的各种文档(结构化/非结构化)合并到输入中。这些附加信息可以显著地影响模型的理解,特别是对于较小的模型的影响。在这种情况下,对模型进行微调以适应查询和检索文档的输入变得至关重要。在将输入呈现给微调模型之前,通常会对检索器检索到的文档进行检索后处理。必须注意的是,RAG中生成器的微调方法与llm的一般微调方法是一致的。下面,我们将简要介绍一些涉及数据(格式化/未格式化)优化函数的代表性工作。

1)通用优化过程

作为一般优化过程的一部分,训练数据通常由输入-输出对组成,目的是训练模型在给定输入x的情况下产生输出y。

  1. Self-Mem [Cheng et al., 2023b]的工作中,采用传统的训练过程,其中给定输入x,检索相关文献z(在文中选择Top-1),对(x, z)进行整合后,模型生成输出y。本文采用了两种常用的微调范式,即Joint-Encoder和two - encoder [Arora等,2023,Wang等,2022b, Lewis等,2020,Xia等,2019,Cai等,2021,Cheng等,2022]。
  2. 在Joint-Encoder中,使用了基于编码器-解码器的标准模型。在这里,编码器最初对输入进行编码,而解码器通过注意机制将编码结果结合起来,以自回归的方式生成令牌。
  3. 在DualEncoder中,系统设置两个独立的编码器,每个编码器分别对输入(查询、上下文)和文档进行编码。由此产生的输出由解码器按顺序进行双向交叉注意力处理

这两种架构都使用Transformer [Vaswani等人,2017]作为基础块,并使用负对数似然损失进行优化

2)运用对比学习

在为语言模型准备训练数据的阶段,通常会创建输入和输出的交互对。这种传统方法可能导致“暴露偏差”,即模型只在单个正确的输出示例上进行训练,从而限制了其暴露于一系列可能的输出序列。这种限制可能会导致模型过度拟合训练集中的特定示例,从而降低其在各种上下文中泛化的能力,从而阻碍模型的实际性能。

  1. 为了减轻暴露偏差,SURGE [Kang等人,2023]提出使用图文对比学习。这种方法包括一个对比学习目标,促使模型产生一系列合理和连贯的反应,扩展到训练数据中遇到的实例之外。这种方法对于减少过拟合和增强模型的泛化能力至关重要。
  2. 对于涉及结构化数据的检索任务,SANTA框架[Li et al., 2023]实现了一个三方训练方案,以有效地封装结构和语义的细微差别。
    (1)初始阶段使用检索器,利用对比学习来细化查询和文档嵌入。
    (2)随后,生成器的初步训练阶段采用对比学习将结构化数据与其非结构化文档描述对齐。在生成器训练的进一步阶段,该模型承认实体语义在文本数据的表示学习中起着关键作用,如[Sciavolino等人,2021,Zhang等人,2019]所强调的那样。这个过程从识别结构化数据中的实体开始,然后在生成器的输入数据中对这些实体应用掩码,从而为模型预测和预测这些掩码元素奠定基础。
    (3)训练方案随着模型学习的进展,利用上下文信息重构被掩盖的实体这个过程培养了模型对文本数据的结构语义的理解,并促进了结构化数据中相关实体的对齐。 总体优化目标是训练语言模型准确地恢复模糊的跨度,从而丰富其对实体语义的理解[Ye et al., 2020]。

4、RAG增强方法

本节围绕三个关键方面展开:增强阶段增强数据的来源增强过程。这些方面阐明了对RAG的发展至关重要的关键技术。

(1)增强阶段

RAG是一项知识密集型的工作,在语言模型训练的预训练微调推理阶段整合了各种技术方法。

1)预训练阶段

在预训练阶段,研究人员研究了通过基于检索的策略来支持开放域QA的ptm的方法。

  1. REALM模型采用结构化、可解释的方法进行知识嵌入、框架预训练和微调,作为掩模语言模型(MLM)框架内的检索-预测工作流[Arora等人,2023]。
  2. RETRO [Borgeaud等人,2022]利用检索增强技术从头开始进行大规模预训练,实现了模型参数的减少,同时在困惑度方面超过了标准的GPT模型。RETRO的独特之处在于,它有一个建立在GPT模型的基础结构之上额外的编码器,用于处理从外部知识库检索到的实体的特征
  3. Atlas[Izacard等人,2022]还在预训练和微调阶段将检索机制纳入T5架构[rafael等人,2020]。它使用预训练的T5来初始化编码器-解码器语言模型,使用预训练的Contriever来初始化密集检索器,提高了复杂语言建模任务的效率。
  4. COG [Lan等人,2022]引入了一种新的文本生成方法,该方法模拟从预先存在的集合中复制文本片段。利用高效的向量搜索工具,COG计算和索引文本片段的上下文有意义的表示,与RETRO相比,在问答和领域适应等领域表现出优越的性能。
  5. 标度定律的出现促进了模型参数的增长,推动自回归模型成为主流。研究人员正在将RAG方法扩展到预训练更大的模型,RETRO++通过在保持或增强性能的同时扩大模型参数来体现这一趋势[Wang等人,2023b]。

经验证据强调了文本生成质量事实准确性降低毒性下游任务熟练程度的显著改进,特别是在像开放领域QA这样的知识密集型应用中。这些结果表明,将检索机制集成到自回归语言模型的预训练中是一条有前途的途径,将复杂的检索技术与广泛的语言模型相结合,以产生更精确和有效的语言生成。

增强预训练的好处包括一个健壮的基础模型,该模型在困惑度文本生成质量特定任务性能方面优于标准GPT模型,同时使用更少的参数。这种方法特别擅长处理知识密集型任务,并通过对专门语料库的训练促进特定领域模型的开发。

尽管如此,这种方法面临着挑战,例如需要广泛的预训练数据集和资源,以及随着模型大小的增加而减少的更新频率。尽管存在这些障碍,但该方法在模型弹性方面提供了显著的优势。经过训练后,检索增强模型可以独立于外部库进行操作,从而提高生成速度和操作效率。所确定的潜在收益使该方法成为人工智能和机器学习领域正在进行的研究和创新的引人注目的主题。

2)微调阶段

RAG和Fine-tuning是增强llm的强大工具,将两者结合起来可以满足更具体场景的需求。一方面,微调允许检索具有独特样式的文档,实现更好的语义表达,并调整查询和文档之间的差异。这确保了检索器的输出更适合手头的场景。另一方面,微调可以满足进行风格化和针对性调整的生成需求。此外,微调还可以用于对齐检索器和生成器,以改进模型协同

微调检索器的主要目标是通过使用语料库直接微调嵌入模型来提高语义表示的质量[Liu, 2023]。通过反馈信号将检索器的能力与llm的偏好对齐,可以更好地协调两者[Yu et al., 2023b, Izacard et al., 2022, Yang et al., 2023b, Shi et al., 2023]。为特定的下游任务微调检索器可以提高适应性。引入任务不可知微调旨在增强检索器在多任务场景中的多功能性[Cheng et al., 2023a]。

微调生成器可以产生更加风格化和定制的输出。一方面,它允许专门适应不同的输入数据格式。例如,微调llm以适应知识图谱的结构[Kang等人,2023]、文本对的结构[Kang等人,2023,Cheng等人,2023b]和其他特定结构[Li等人,2023d]。另一方面,通过构建指令数据集,可以要求llm生成特定格式的内容。例如,在自适应迭代检索场景中,llm被微调以生成有助于确定下一步行动时间的内容 [Jiang等人,2023b, Asai等人,2023]。

通过协同微调检索器和生成器,我们可以增强模型的泛化能力,并避免单独训练它们可能产生的过拟合。然而,联合微调也会导致资源消耗增加。RA-DIT [Lin等,2023]提出了一种轻量级的双指令调优框架,可以有效地为任何llm添加检索功能。检索增强指令微调更新LLM,指导它更有效地利用检索到的信息,并忽略分散注意力的内容。

尽管有其优点,但微调也有局限性,包括需要专门的数据集进行RAG微调以及需要大量的计算资源。然而,这个阶段允许根据特定的需求和数据格式定制模型,与预训练阶段相比,潜在地减少了资源使用,同时仍然能够微调模型的输出样式

总而言之,微调阶段对于使RAG模型适应特定的任务至关重要,从而能够对检索器和生成器进行细化。这一阶段增强了模型的通用性和对各种任务的适应性,尽管资源和数据集需求带来了挑战。因此,RAG模型的战略性微调是开发高效和有效的检索增强系统的关键组成部分。

2)推理阶段

RAG模型中的推理阶段是至关重要的,因为它涉及到与llm的广泛集成。传统的RAG方法,也称为朴素RAG,涉及在此阶段合并检索内容以指导生成过程。

为了克服朴素RAG的局限性,先进的技术在推理过程中引入了更多上下文丰富的信息。

  1. DSP框架[Khattab et al., 2022]利用前沿LMs和检索模型(RM)之间复杂的自然语言文本交换,丰富了上下文,从而提高了生成结果。
  2. PKG [Luo等人,2023]方法为llm配备了一个知识引导模块,该模块允许在不修改LMs参数的情况下检索相关信息,从而能够执行更复杂的任务。
  3. CREAICL [Li et al., 2023b]采用跨语言知识的同步检索来增强上下文
  4. 而RECITE[Sun et al., 2022]通过直接从LLM中抽取段落来生成上下文

在推理过程中,RAG过程的进一步细化可以在满足需要多步骤推理的任务的方法中看到。

  1. ITRG [Feng等,2023]迭代检索信息以识别正确的推理路径,从而提高任务适应性。
  2. ITERRETGEN [Shao et al., 2023]采用迭代策略,在“检索增强生成”和“生成增强检索”之间交替的循环过程中合并检索和生成
  3. 对于非知识密集型(NKI)任务,PGRA [Guo等人,2023]提出了一个两阶段框架,首先是任务不可知的检索器,然后是提示引导的重新排序器,以选择和优先考虑证据。
    相比之下,IRCOT [Trivedi等人,2022]将RAG与思维链(CoT)方法结合起来交替使用CoT引导的检索与检索通知的CoT过程,显著提高了GPT-3在各种问答任务中的表现。

从本质上讲,这些推理阶段的增强提供了轻量级的、经济有效的替代方案,可以利用预训练模型的功能,而不需要进一步的训练。其主要优点是在提供上下文相关信息以满足特定任务需求的同时维护静态LLM参数。然而,这种方法并非没有局限性,因为它需要细致的数据处理和优化,并且受到基础模型固有能力的约束。为了有效地解决不同的任务需求,该方法通常与过程优化技术相结合,如分步推理迭代检索自适应检索策略。

(2)增强来源

扩充数据源的选择严重影响RAG模型的有效性。不同的知识水平和维度需要不同的处理技术。它们分为非结构化数据结构化数据LLM生成的内容。具有代表性的不同增强方面的RAG研究技术树如下图所示。叶子以三种不同的深浅颜色表示使用不同类型数据的增强:非结构化数据、结构化数据和llm生成的内容。该图清楚地表明,最初,增强主要通过非结构化数据实现,例如纯文本。这种方法后来扩展到包括使用结构化数据(例如知识图)以进一步改进。最近,在研究中有一种日益增长的趋势,即利用llm本身生成的内容进行检索和增强

在这里插入图片描述

1)非结构化数据增强

非结构化文本从语料库中收集,例如用于微调大型模型的提示数据[Cheng等人,2023a]和跨语言数据[Li等人,2023b]。检索单元从token(例如kNN-LM [Khandelwal等人,2019])到短语(例如NPM, COG [Lee等人,2020,Lan等人,2022])和文档段落不等,更细的粒度以增加检索复杂性为代价提供精度。

  1. FLARE [Jiang等人,2023b]引入了一种主动检索方法,由LM生成的低概率词触发。它为文档检索创建一个临时句子,然后使用检索到的上下文重新生成该句子,以预测后续的句子
  2. RETRO使用前一个块来检索块级别上最近的邻居,结合前一个块的上下文,它指导下一个块的生成。为了保持因果关系,下一个块Ci的生成只利用前一个块的最近邻居N(Ci−1)而不是N(Ci)

2)结构化数据增强

结构化数据,如知识图(KGs),提供了高质量的上下文并减轻了模型幻觉。

  1. RET-LLMs [Modarressi et al., 2023]从过去的对话中构建知识图记忆,以供将来参考。
  2. SUGRE [Kang et al., 2023]使用图神经网络(Graph Neural Networks, gnn)对相关KG子图进行编码,通过多模态对比学习确保检索事实与生成文本的一致性。
  3. Knowledge edGPT [Wang et al., 2023]生成知识库搜索查询,并将知识存储在个性化库中,增强了RAG模型的知识丰富性和上下文性。

3)在RAG中LLM生成的内容

针对RAG中外部辅助信息的局限性,一些研究侧重于利用LLM的内部知识。

  1. SKR [Wang等,2023e]将问题分类为已知或未知,有选择地应用检索增强。
  2. GenRead [Yu et al., 2022]用LLM生成器替换了检索器,发现LLM生成的上下文通常包含更准确的答案,因为它更好地符合因果语言建模的预训练目标
  3. Selfmem [Cheng et al., 2023b]使用检索增强生成器迭代创建无界内存池,使用内存选择器选择作为原始问题对偶问题的输出,从而自增强生成模型。

这些方法强调了RAG中创新数据源利用的广度,努力提高模型性能和任务有效性。

(3)增强过程

在RAG领域中,标准过程通常涉及一个检索步骤,然后是生成,这可能导致效率低下。一个值得注意的问题被称为 “中间丢失”现象当单个检索产生冗余内容(可能会稀释或相矛盾的基本信息)时,从而降低生成质量[Liu et al., 2023a]。此外,这种单步检索通常不足以解决需要多步推理的复杂问题,因为它提供的信息范围有限[Yoran等人,2023]。

为了解决这些挑战,当代研究提出了改进检索过程的方法:迭代检索递归检索自适应检索

  1. 迭代检索允许模型进行多个检索周期,增强了所获得信息的深度和相关性。
  2. 递归检索过程,其中一次检索操作的结果用作后续检索的输入。它有助于深入研究相关信息,特别是在处理复杂或多步骤查询时。递归检索通常用于需要逐步得到最终答案的场景,例如在学术研究法律案例分析某些类型的数据挖掘任务中。
  3. 自适应检索提供了一种动态调整机制,使检索过程适应不同任务和上下文的具体要求。

1)迭代检索

RAG模型中的迭代检索是基于初始查询和迄今为止生成的文本重复收集文档的过程,为LLM提供了更全面的知识库[Borgeaud等人,2022,Arora等人,2023]。这种方法已被证明可以通过多次检索迭代提供额外的上下文引用来增强后续答案生成的鲁棒性。然而,它可能会受到语义不连续和不相关信息积累的影响,因为它通常依赖于n个令牌序列来划定生成文本和检索文档之间的边界。

2)递归检索

递归检索常用于信息检索和自然语言处理,以提高搜索结果的深度和相关性。该过程涉及基于从以前的搜索中获得的结果迭代地改进搜索查询

为了解决特定的数据场景,使用了递归检索多跳检索技术。递归检索涉及到以分层方式处理和检索数据的结构化索引,其中可能包括在基于该摘要执行检索之前对文档或冗长PDF的各个部分进行总结。随后,文档中的二次检索细化了搜索,体现了该过程的递归性质。相比之下,多跳检索旨在更深入地挖掘图结构数据源,提取相互关联的信息[Li et al., 2023c]。

此外,一些方法集成了检索和生成的步骤。ITER-RETGEN [Shao等人,2023]采用协同方法,利用“检索增强生成”和“生成增强检索”来完成需要复制特定信息的任务。该模型利用处理输入任务所需的内容作为检索相关知识的上下文基础,这反过来又有助于在随后的迭代中生成改进的响应。

递归检索旨在通过反馈循环逐渐收敛到最相关的信息,从而增强搜索体验

  1. IRCoT [Trivedi et al., 2022] 使用思维链(chain ofthought)来指导检索过程,并利用获得的检索结果对CoT进行细化。
  2. ToC [Kim等人,2023]创建了一个澄清树,系统地优化查询中的模糊部分。在复杂的搜索场景中,如果用户的需求从一开始就不完全清楚,或者所寻求的信息非常专门化或微妙,那么它特别有用。该过程的递归性质允许不断学习和适应用户的需求,通常会提高对搜索结果的满意度。

3)自适应检索

自适应检索方法,如Flare和SelfRAG [Jiang等人,2023b, Asai等人,2023],通过使llm能够主动确定检索的最佳时刻和内容,从而提高了信息源的效率和相关性,从而完善了RAG框架。

这些方法是llm在其操作中采用主动判断的更广泛趋势的一部分,正如在AutoGPT, Toolformer和Graph-Toolformer等模型代理中所看到的那样[Yang等人,2023c, Schick等人,2023,Zhang, 2023]。

  1. Graph-Toolformer将其检索过程划分为不同的步骤,其中llm主动使用检索器,应用Self-Ask技术,并使用少量提示来启动搜索查询。这种主动的姿态允许llm决定何时搜索必要的信息,类似于代理如何利用工具。
  2. WebGPT [Nakano等人,2021]集成了一个强化学习框架,在文本生成过程中使用搜索引擎自主训练GPT-3模型。它使用特殊的令牌来导航这个过程,这些令牌促进了搜索引擎查询、浏览结果和引用引用等操作,从而通过使用外部搜索引擎扩展了GPT-3的功能。
  3. Flare通过监测生成过程的置信度来自动获取时序,如生成项的概率所示[Jiang等,2023b]。当概率低于某一阈值时,将激活检索系统收集相关信息,从而优化检索周期。
  4. Self-RAG [Asai等人,2023]引入了“反思token”,允许模型自省其输出。这些标记有两种:“检索”和“批评”。
    (1)模型自主地决定何时激活检索,或者通过预定义的阈值触发可能的流程。在检索过程中,生成器在多个段落之间进行片段级波束搜索,以获得最连贯的序列。
    (2)评论分数用于更新细分分数,在推理过程中可以灵活地调整这些权重,从而调整模型的行为。
    Self-RAG的设计不需要额外的分类器或依赖于自然语言推理(NLI)模型,从而简化了何时使用检索机制的决策过程,并提高了模型在生成准确响应方面的自主判断能力。

LLM优化由于其日益普及而受到了极大的关注。诸如提示工程、微调(FT)和RAG等技术各有不同的特征,如下图所示。在这里插入图片描述

虽然快速工程利用了模型的固有功能,但优化llm通常需要同时应用RAG和FT方法。RAG和FT之间的选择应该基于场景的特定需求和每种方法的固有属性。下表给出了RAG和FT的详细比较。
在这里插入图片描述

5、RAG评估

RAG在自然语言处理(NLP)领域的快速发展和越来越多的采用,将RAG模型的评估推向了法学硕士社区研究的前沿。此评估的主要目标是理解和优化RAG模型跨不同应用程序场景的性能。

从历史上看,RAG模型评估集中在它们在特定下游任务中的执行。这些评估采用适合手头任务的既定指标。

  1. 问答评估可能依赖于EM和F1分数[Wang等人,2023a, Shi等人,2023,Feng等人,2023,Ma等人,2023a],
  2. 事实核查任务通常依赖于准确性作为主要指标[Lewis等人,2020,Izacard等人,2022,Shao等人,2023]。
  3. 还有为RAG应用程序的自动评估而设计的工具,如RALLE,同样基于这些特定于任务的指标进行评估[Hoshi等人,2023]。尽管如此,致力于评估RAG模型独特特征的研究明显缺乏,只有少数相关研究。

以下部分将重点从特定于任务的评估方法和度量转移到基于其独特属性的现有文献的综合概述。这一探索涵盖了RAG评估的目标、评估这些模型的各个方面,以及可用于此类评估的基准和工具。目的是提供RAG模型评估的全面概述,概述了具体解决这些先进生成系统独特方面的方法。

(1)评估目标

RAG模型的评估主要围绕两个关键组件进行:检索生成模块。这种划分确保了对所提供的上下文质量所产生的内容质量的全面评估。

1)检索质量

评估检索质量对于确定检索组件来源的上下文的有效性至关重要。使用来自搜索引擎、推荐系统和信息检索系统领域的标准度量来度量RAG检索模块的性能命中率MRRNDCG等指标通常用于此目的[Liu, 2023, Nguyen, 2023]。

2)生成质量

对生成质量的评估集中于对生产器从检索上下文中综合连贯与相关答案的能力的评估。这种评估可以根据内容的目标进行分类:未标记标记的内容。

  1. 对于未标记的内容,评估包括生成答案的可靠性、相关性和非危害性
  2. 对于标记的内容,重点是模型产生的信息的准确性[Liu, 2023]。此外,检索和生成质量评估都可以通过手动或自动评估方法进行[Liu, 2023, Lan等,2022,Leng等,2023]。

(2)评估方面

当代RAG模型的评估实践强调三个主要质量分数四个基本能力,它们共同通知了RAG模型的两个主要目标的评估:检索和生成。

1)质量分数

质量分数包括上下文相关性答案忠实性答案相关性。这些质量分数从不同角度评价RAG模型在信息检索和生成过程中的效率[Es et al., 2023; Saad-Falcon et al., 2023; Jarvis and Allard, 2023]。质量分数——上下文相关性、答案忠实度和答案相关性——在整个信息检索和生成过程中从不同角度评估RAG模型的效率[Es等人,2023;Saad-Falcon等人,2023;Jarvis和Allard, 2023]。

  1. 上下文相关性(Context Relevance):评估检索上下文的准确性和特异性确保相关性并最大限度地减少与无关内容相关的处理成本
  2. 答案忠实度(Answer Faithfulness):确保生成的答案与检索的上下文保持一致保持一致性避免矛盾
  3. 答案相关性(Answer Relevance):答案相关性要求生成的答案与提出的问题直接相关,有效地解决核心问题。

2)请求能力

RAG评价还包括表明其适应性和效率的四种能力噪声鲁棒性否定拒绝信息整合反事实鲁棒性[Chen et al., 2023b, Liu et al., 2023b]。这些能力对于模型在各种挑战和复杂场景下的性能至关重要,影响质量分数。

  1. 噪声鲁棒性(Noise Robustness):评价模型处理与问题相关但缺乏实质性信息噪声文件的能力。
  2. 否定拒绝(Negative Rejection):当检索到的文档不包含回答问题所需的知识时,模型不进行响应的识别能力
  3. 信息集成(Information Integration):评估模型从多个文档中综合信息以解决复杂问题的熟练程度。
  4. 反事实鲁棒性(Counterfactual Robustness):测试模型识别和忽略文档中已知不准确的能力,即使在被告知潜在的错误信息时也是如此。

评估检索质量:
上下文相关性和噪声鲁棒性对于评估检索质量很重要

评估生成质量:
答案忠实度、答案相关性、负面拒绝、信息整合和反事实鲁棒性对于评估生成质量很重要。

下面总结了每个评估方面的具体指标。必须认识到,这些相关工作的度量标准是传统的度量标准,尚未代表量化RAG评价方面的成熟或标准化方法。针对RAG模型的细微差别量身定制的度量标准,虽然没有包括在这里,但也在一些评估研究中得到了开发。
在这里插入图片描述

(3)评估数据集和工具

本节描述RAG模型的评估框架,包括基准测试自动评估工具。这些工具提供了定量的度量标准,不仅衡量RAG模型的性能,而且还增强了对模型跨各种评估方面的能力的理解。突出的基准,

  1. RGB和RECALL [Chen et al., 2023b, Liu et al., 2023b]侧重于评估RAG模型的基本能力
  2. 同时,最先进水平自动化工具,如RAGAS [Es等人,2023],ARES [Saad-Falcon等人,2023]和TruLens8使用LLM来评判质量分数

这些工具和基准共同构成了一个健壮的框架,用于对RAG模型进行系统评估,如下表所示。
在这里插入图片描述

6、未来展望

本节探讨了RAG的三个未来前景:未来的挑战模式扩展RAG生态系统

(1)RAG的未来挑战

尽管RAG技术取得了长足的进步,但仍存在一些需要深入研究的挑战:

  1. 长文长度。RAG的有效性受到大型语言模型(llm)的上下文窗口大小的限制。在太短的窗口和太长的窗口之间权衡取舍是至关重要的,前者可能导致信息不足,后者可能导致信息稀释。 随着人们不断努力将LLM上下文窗口扩展到几乎无限的大小,RAG对这些变化的适应提出了一个重要的研究问题[Xu等人,2023c, Packer等人,2023,Xiao等人,2023]。
  2. 鲁棒性。在检索过程中,噪声或矛盾信息的存在会对检索结果的输出质量产生不利影响。这种情况被比喻为“错误信息可能比根本没有信息更糟糕”。提高RAG对这种对抗性或反事实输入的抵抗力正在获得研究势头,并已成为关键的绩效指标 [Yu等,2023a, Glass等,2021,Baek等,2023]。
  3. 混合方法(RAG+FT)。将RAG与微调相结合正在成为领先的策略。确定RAG的最佳集成和微调,无论是顺序的、交替的还是通过端到端联合训练,以及如何利用参数化和非参数化优势,都是成熟的探索领域[Lin等人,2023]。
  4. 扩展LLM的角色。除了生成最终答案之外,llm还用于在RAG框架内进行检索和评估。确定进一步释放RAG系统中llm潜力的方法是一个日益增长的研究方向。
  5. 缩放定律。虽然为法学硕士建立了缩放定律[Kaplan et al., 2020],但它们对RAG的适用性仍不确定。初步研究[Wang et al., 2023b]已经开始解决这个问题,但是RAG模型的参数数量仍然落后于llm。逆缩放定律的可能性,即较小的模型优于较大的模型,特别有趣,值得进一步研究。
  6. 生产就绪RAG。RAG的实用性和与工程需求的一致性促进了它的采用。然而,提高检索效率提高大型知识库中的文档召回率,并确保数据安全(如防止法学硕士无意中泄露文档源或元数据)是仍有待解决的关键工程挑战[Alon等人,2022]。
  7. RAG的形态扩展。RAG已经超越了最初基于文本的问题回答限制,包含了多种模式数据。这种扩展产生了创新的多模态模型,将RAG概念集成到各个领域:
    • 图像
      (1)RA-CM3 [Yasunaga等人,2022]是将检索和生成文本或生成图像结合的开创性多模态模型。
      (2)BLIP-2 [Li等,2023a]利用冻结图像编码器和llm进行有效的视觉语言预训练,实现零镜头图像到文本的转换
      (3)“在你写之前可视化”方法[Zhu等人,2022]使用图像生成来引导LM的文本生成,在开放式文本生成任务中显示出前景。
    • 音视频
      (1)GSS方法检索并拼接音频片段,将机器翻译数据转换为语音翻译数据[Zhao et al., 2022]。
      (2)UEOP通过结合外部离线策略进行语音到文本转换,标志着端到端自动语音识别的重大进步[Chan等人,2023]。
      (3)基于knn的注意力融合利用音频嵌入和语义相关的文本嵌入来改进ASR,从而加速领域适应。
      (4)Vid2Seq用专门的时间标记增强了语言模型,便于在统一的输出序列中预测事件边界和文本描述[Yang等,2023a]。
    • 代码
      (1)RBPS [Nashid等人,2023]通过编码和频率分析检索与开发人员目标一致的代码示例,在小规模学习任务中表现出色。这种方法在测试断言生成和程序修复等任务中已被证明是有效的。
      (2)对于结构化知识,CoK方法[Li et al., 2023c]首先从知识图中提取与输入查询相关的事实,然后将这些事实作为提示集成到输入中,从而提高知识图问答任务的性能。

(2)RAG生态

1)下游任务和评估

通过利用广泛的知识库,RAG在丰富语言模型,使其具有处理复杂查询和生成详细响应的能力方面显示出了相当大的前景。经验证据表明,RAG在各种下游任务中表现出色,包括开放式问题回答和事实验证。RAG的整合不仅提高了响应的准确性和相关性,而且提高了响应的多样性和深度。

RAG跨多个领域的可伸缩性和多功能性值得进一步研究,特别是在医学、法律和教育等专业领域。在这些领域,与专业领域知识问答的传统微调方法相比,RAG可以潜在地降低培训成本并提高性能。

同时,细化RAG的评估框架对于最大限度地提高其跨不同任务的效率和效用是必不可少的。这需要开发细微的度量标准和评估工具,这些工具可以衡量诸如上下文相关性内容的创造性非恶意性等方面。

此外,改进rag驱动模型的可解释性仍然是一个关键目标。这样做将允许用户理解模型生成的响应背后的原因,从而促进RAG应用程序使用中的信任和透明度。

2)技术栈

RAG生态系统的发展很大程度上受到其技术堆栈进步的影响。随着ChatGPT的出现,LangChain和LLamaIndex等关键工具迅速流行起来,提供了大量与ragm相关的api,成为llm领域的必备工具。

新兴的技术栈虽然不像LangChain和LLamaIndex那样功能丰富,但它们以专门的产品脱颖而出。例如,Flowise AI 优先考虑低代码方法,使用户能够通过用户友好的拖放界面部署AI应用程序,包括RAG。HayStack、Meltano和Cohere Coral等其他技术也因其对该领域的独特贡献而受到关注。

除了专注于人工智能的提供商外,传统的软件和云服务提供商也在扩大他们的产品,包括以rag为中心的服务。Weaviate的Verba13是为个人助理应用而设计的,而亚马逊的Kendra14则提供了一种智能的企业搜索服务,允许用户使用内置连接器浏览各种内容存储库。在RAG技术领域的发展过程中,对于不同的专门化存在明显的分歧。
例如:(1)定制。裁剪RAG以满足特定要求。(2)简化。使RAG更容易使用,从而减少最初的学习曲线。(3)专业化。改进RAG以更有效地服务于生产环境。

RAG模型及其技术栈的相互增长是显而易见的;技术进步不断为现有的基础设施建立新的标准。反过来,对技术堆栈的增强推动了RAG功能的发展。RAG工具包正在聚合成一个基础技术堆栈,为高级企业应用程序奠定基础。然而,一个完全集成的综合平台的概念仍然在地平线上,等待进一步的创新和发展。

7、结论

在这里插入图片描述
本文的总结强调了RAG通过集成来自语言模型的参数化知识和来自外部知识库的大量非参数化数据,在增强llm能力方面的重大进步。我们的调查说明了RAG技术的演变及其对知识密集型任务的影响。我们的分析描述了RAG框架中的三种发展范式朴素的高级的模块化的RAG,每一种都标志着对其前身的逐步增强。高级RAG范例通过合并复杂的体系结构元素,包括查询重写、块重新排序和提示摘要,扩展了朴素方法。这些创新带来了更加细致和模块化的架构,增强了llm的性能和可解释性。RAG与其他人工智能方法(如微调和强化学习)的技术集成进一步扩展了其功能。在内容检索中,利用结构化和非结构化数据源的混合方法正在成为一种趋势,它提供了更丰富的检索过程。RAG框架内的前沿研究正在探索新的概念,如LLM的Self-retrieval和信息检索的动态时间。

尽管RAG技术取得了长足的进步,但在改进其健壮性和管理扩展上下文的能力方面,研究机会仍然很多。RAG的应用范围也扩展到多模式领域,调整其原理来解释和处理各种数据形式,如图像、视频和代码。这一扩展强调了RAG对人工智能部署的重要实际意义,吸引了学术界和工业界的兴趣。以RAG为中心的人工智能应用程序的增加和支持性工具的持续开发强调了RAG生态系统的不断发展。然而,随着RAG应用程序的扩展,有必要改进评估方法以跟上其发展的步伐。确保绩效评估保持准确和代表性对于充分了解RAG对人工智能研究和开发社区的贡献至关重要。

### Retrieval-Augmented Generation in Knowledge-Intensive NLP Tasks Implementation and Best Practices The method of retrieval-augmented generation (RAG) for knowledge-intensive natural language processing tasks aims to combine the strengths of dense vector representations with sparse exact match methods, thereby improving model performance on tasks that require access to external information not present during training[^1]. This approach ensures models can retrieve relevant documents or passages from a large corpus at inference time and generate responses conditioned on this retrieved context. #### Key Components of RAG Framework A typical implementation involves two main components: 1. **Retriever**: A component responsible for fetching potentially useful pieces of text based on input queries. 2. **Generator**: An encoder-decoder architecture like BART or T5 which generates outputs given both the query and retrieved contexts as inputs. This dual-stage process allows systems to leverage vast amounts of unstructured data without needing explicit retraining when new facts become available. #### Practical Steps for Implementing RAG Models To effectively implement such an architecture, one should consider several factors including but not limited to choosing appropriate pre-trained retrievers and generators fine-tuned specifically towards question answering or similar objectives where factual accuracy is paramount. Additionally, integrating these modules into existing pipelines requires careful consideration regarding latency constraints versus quality trade-offs especially under real-time applications scenarios. For instance, here's how you might set up a simple pipeline using Hugging Face Transformers library: ```python from transformers import RagTokenizer, RagTokenForGeneration tokenizer = RagTokenizer.from_pretrained("facebook/rag-token-nq") model = RagTokenForGeneration.from_pretrained("facebook/rag-token-nq") def rag_pipeline(question): inputs = tokenizer([question], return_tensors="pt", truncation=True) generated_ids = model.generate(input_ids=inputs["input_ids"]) output = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0] return output ``` In practice, tuning hyperparameters associated with each stage separately could lead to better overall results compared to treating them monolithically due to their distinct roles within the system design. #### Best Practices When Working With RAG Systems When deploying RAG-based solutions, adhering to certain guidelines helps maximize effectiveness while minimizing potential pitfalls: - Ensure high-quality indexing over document collections used by the retriever part since poor recall directly impacts downstream generations negatively. - Regularly update underlying corpora so they remain current; stale resources may propagate outdated information through synthetic texts produced thereafter. - Monitor closely any changes made either upstream (e.g., modifications affecting source material accessibility) or inside your own infrastructure because alterations elsewhere often necessitate corresponding adjustments locally too. By following these recommendations alongside leveraging state-of-the-art techniques provided via frameworks like those mentioned earlier, developers stand well positioned to build robust conversational agents capable of delivering accurate answers across diverse domains requiring specialized domain expertise beyond what general-purpose pretrained models alone offer today. --related questions-- 1. How does multi-task learning compare against single-task approaches concerning adaptability? 2. What are some challenges faced when implementing keyword-based point cloud completion algorithms? 3. Can prompt engineering significantly influence outcomes in few-shot learning settings? 4. Are there specific industries benefiting most prominently from advancements in knowledge-intensive NLP technologies?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

辰阳星宇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值