大模型从入门到应用——检索增强生成(RAG):基础知识

分类目录:《大模型从入门到应用》总目录


大型语言模型(LLMs)展示了强大的能力,但在实际应用中仍面临许多挑战,如幻觉现象、知识更新缓慢,以及在回答中缺乏透明度。检索增强生成(RAG)指的是在使用大型语言模型(LLMs)回答问题之前,从外部知识库中检索相关信息。检索增强生成(RAG)已被证明能显著提高答案的准确性减少模型的幻觉现象,特别是对于知识密集型任务。通过引用来源,用户可以验证答案的准确性,并增加对模型输出的信任。除此之外,检索增强生成(RAG)还提供了知识更新和特定领域知识的引入的能力。检索增强生成(RAG)有效地结合了大型语言模型(LLMs)的参数化知识和非参数化的外部知识库,使其成为重要的大型语言模型(LLMs)的应用之一。《大模型从入门到应用——检索增强生成(RAG)》系列内容概述了大型语言模型(LLMs)时代检索增强生成(RAG)的发展范式,共总结了三种范式:Naive RAGAdvanced RAGModular RAG,并对检索增强生成(RAG)的三个主要组成部分检索器、生成器和增强方法的关键技术进行了总结。此外,《大模型从入门到应用——检索增强生成(RAG)》系列内容还讨论了如何评估检索增强生成(RAG)模型的有效性,介绍了检索增强生成(RAG)的评估方法,强调了评估的关键指标和能力,并提出了最新的自动评估框架。此外,从垂直优化、横向可扩展性以及检索增强生成(RAG)的技术栈和生态系统三个方面介绍了潜在的未来研究方向。

RAG简介与发展

大型语言模型(LLMs)在自然语言处理(NLP)领域的表现超越了之前任何模型。GPT系列模型、LLama系列模型、Gemini以及其他大型语言模型在多个评估基准上展现了卓越的语言和知识掌握能力,超越了人类水平。然而,大型语言模型也显示出许多缺点。它们常常制造虚假事实,也就是“幻觉”问题,或在处理特定领域或高度专业化的查询时缺乏知识。例如,当所需信息超出模型训练数据的范围或需要最新数据时,大型语言模型(LLMs)可能无法提供准确的答案。

纯参数化的大型语言模型(LLMs)从大量语料库中获得的世界知识存储在模型的参数中。然而,这类模型存在局限性。首先,难以保留训练语料中的所有知识,尤其是较不常见和更具体的知识。其次,由于模型参数无法动态更新,参数化知识随时间容易过时。最后,参数的扩展导致训练和推理的计算开销增加。

为了解决纯参数化模型的限制,语言模型可以采用半参数化方法,通过将非参数化语料库数据库与参数化模型整合。克服大型语言模型(LLMs)缺点的一种方法是检索增强生成(RAG)。它将外部数据检索集成到生成过程中,从而增强模型提供准确和相关响应的能力。它结合了预训练的检索器和预训练的Seq2Seq模型),并进行端到端微调,以更可解释和模块化的方式捕获知识。在大型模型出现之前,检索增强生成(RAG)主要专注于端到端模型的直接优化。检索方面常见的做法是密集检索,如使用基于向量的密集通道检索(DPR),以及在生成方面训练较小的模型。由于整体参数规模较小,检索器和生成器通常会进行同步的端到端训练或微调。2020年中期,检索增强生成(RAG)成为大型语言模型(LLMs)领域的典范。

具体来说,将检索增强生成(RAG)引入大型语言模型(LLMs)的上下文学习(ICL)中可以缓解上述问题,检索增强生成(RAG)涉及一个初始检索步骤,其中大型语言模型(LLMs)查询外部数据源以获取相关信息,然后再继续回答问题或生成文本。这个过程不仅为后续生成阶段提供信息,而且确保响应基于检索到的证据,从而显著提高输出的准确性和相关性。在推理阶段从知识库动态检索信息使检索增强生成(RAG)工具能够解决诸如生成不正确的内容(通常称为“幻觉”)等问题。 检索增强生成(RAG)与大型语言模型(LLMs)的集成得到了迅速发展,并已成为完善聊天机器人功能和使大型语言模型(LLMs)更适合实际应用的关键技术。
检索增强生成(RAG)研究的技术树

(图片)检索增强生成(RAG)研究的技术树:涉及检索增强生成(RAG)的主要阶段包括预训练、微调和推理。随着大型语言模型(LLMs)的出现,检索增强生成(RAG)的研究最初集中在利用大型语言模型(LLMs)强大的上下文学习能力,主要集中在推理阶段。随后的研究更深入地探索,逐渐与大型语言模型(LLMs)的微调更加紧密地结合。研究人员还在探索通过检索增强技术来增强语言模型在预训练阶段的方法。

检索增强生成(RAG)的演化轨迹经历了四个不同的阶段,如上图所示。自 2017 年诞生以来,随着Transformer架构的出现,主要推动力是通过预训练模型吸收额外的知识增强语言模型。这个时代见证了检索增强生成(RAG)的基础工作主要针对优化预训练方法。

在这个初始阶段之后,在ChatGPT出现之前,出现了一段相对休眠期,在此期间,检索增强生成(RAG)的相关研究进展甚微。 随后,ChatGPT的出现标志着一个关键时刻,大型语言模型(LLMs)展示出了强大的上下文学习(ICL)能力。检索增强生成(RAG)的研究转向为大型语言模型(LLMs)提供更好的信息,以在推理阶段回答知识密集型的和更复杂的任务,也促成了检索增强生成(RAG)的研究的快速发展。随着研究的进展,特别是随着GPT-4的出现,检索增强生成(RAG)的增强不再局限于推理阶段,而是开始与大型语言模型(LLMs)的微调技术更紧密地结合起来。

检索增强生成(RAG)这个领域经历了快速增长,但没有系统化的文章来梳理其发展轨迹和技术迭代。本文通过绘制检索增强生成(RAG)发展过程的图景,对其发展和预期的未来路径进行了探索,重点关注了检索增强生成(RAG)在大型语言模型(LLMs)中的整合。本文考虑了技术范式和研究方法,总结了100多篇检索增强生成(RAG)研究中的三个主要研究范式,并分析了检索生成增强这三个核心阶段的关键技术。另一方面,目前的研究更加倾向于方法,缺乏对检索增强生成(RAG)效果的评估。本文全面回顾了适用于检索增强生成(RAG)的下游任务、数据集、基准和评估方法。总体而言,本文旨在详细整理和分类基础技术概念、历史进展以及出现在大型语言模型(LLMs)之后的检索增强生成(RAG)方法和应用的范围,为读者和专业人员阐述了大型语言模型(LLMs)和检索增强生成(RAG)的结构化知识。本文阐明了检索增强技术的发展,评估各种方法在各自情境中的优势和劣势,并推测未来的趋势和创新:

  • 本文对最先进的检索增强生成(RAG)进行了全面系统的回顾,勾勒出了包括Naive RAG、Advanced RAG和Modular RAG等范式的演变,在这个过程中,文章将检索增强生成(RAG)研究的置于了大型语言模型(LLMs)的背景中。
  • 本文讨论了检索增强生成(RAG)流程中不可或缺的核心技术,特别关注检索生成增强这三个核心阶段的关键技术,以及深入研究它们的协同作用,阐明这些组件如何错综复杂地协作形成一个有凝聚力且有效的检索增强生成(RAG)框架。
  • 我们为检索增强生成(RAG)构建了完整的评估框架,概述了评估目标和指标。我们的比较分析从各个角度阐明了检索增强生成(RAG)与微调相比的优缺点。此外,我们展望了检索增强生成(RAG)的未来方向,强调潜在的增强功能应对当前的挑战、向多模式环境扩展以及生态系统的发展。

本文的结构如下:第二部分介绍了检索增强生成(RAG)的主要概念和当前的范式。接下来的三部分分别探讨了核心组成部分——检索、生成和增强。第三部分介绍了检索中的优化方法,包括索引、查询和嵌入优化。第四部分集中讨论了在生成过程中的检索后处理和大型语言模型(LLMs)微调。第五部分分析了三个增强过程。第六部分关注了检索增强生成(RAG)的下游任务和评估体系。第七部分对比了当今主流的各类检索增强生成(RAG)。第八部分主要讨论了检索增强生成(RAG)目前面临的挑战以及其未来的发展方向。最后,在第九部分总结全文。

主要概念

检索增强生成(RAG)的定义可以从其工作流程来概括。下图描述了典型的检索增强生成(RAG)应用程序工作流程。在这个场景中,用户向ChatGPT询问最近发生的一件备受瞩目的事件(即OpenAI首席执行官的突然解雇和复职),该事件引起了相当多的公众讨论。ChatGPT作为最著名和广泛使用的大型语言模型(LLMs),受其预训练数据的限制,缺乏对最近发生的事件的了解。检索增强生成(RAG)通过从外部知识库检索最新文档摘录来弥补这一信息差。在这种情况下,它会获取与用户查询相关的精选新闻文章。这些文章与最初的问题一起合并成一个全面的提示,使ChatGPT能够生成一个带有最新信息的答案。这个例子说明了检索增强生成(RAG)的定义可以从其工作流程过程,展示了它通过实时信息检索增强模型响应的能力。
检索增强生成(RAG)的工作流程
检索增强生成(RAG)是一种通过整合外部知识库来增强大型语言模型(LLMs)的范式。它采用协同方法,结合信息检索机制和情境学习(ICL)来提高大型语言模型(LLMs)的表现。在此框架中,用户发起的查询提示通过搜索算法检索相关信息。然后,这些信息将被融入到大型语言模型(LLMs)的提示中,为生成过程提供额外的上下文。 检索增强生成(RAG)的主要优势在于它无需针对特定任务的应用程序对大型语言模型(LLMs)进行再次训练。开发人员可以添加外部知识库,丰富输入,从而提高模型的输出精度。 检索增强生成(RAG)因其高实用性和低进入门槛而成为大型语言模型(LLMs)系统中最受欢迎的架构之一,许多会话产品几乎完全基于检索增强生成(RAG)构建。

检索增强生成(RAG)工作流程包括三个关键步骤:

  1. 将语料库划分为离散块,在这些块上利用编码器模型构建向量索引。
  2. 根据块与查询和索引块的向量相似性来识别和检索块。
  3. 模型根据从检索到的块中收集的上下文信息合成一个响应。

这些步骤构成了检索增强生成(RAG)流程的基本框架,支撑着其信息检索和上下文感知生成功能。同时,检索增强生成(RAG)研究范式也不断发展,我们将其分为三个阶段:Naive RAG、Advanced RAG和Modular RAG,如下图所示。尽管检索增强生成(RAG)方法具有成本效益,并且超越了本地大型语言模型(LLMs)的表现,但它们也存在一些局限性。Advanced RAG和Modular RAG的发展是对Naive RAG中的这些特定缺点的改进。
检索增强生成(RAG)的三个阶段

Naive RAG

Naive RAG研究范式代表了最早的检索增强生成(RAG)方法论,在ChatGPT出现之后就很快得到了重视。Naive RAG遵循传统的流程,包括索引检索生成,也可以看作是一个“检索-读取”的框架:

  1. 索引:对各种格式(如:PDF、HTML、Word和Markdown)的原始数据进行清理和提取,然后将其转换为统一的纯文本格式。为了适应语言模型的上下文限制,文本被分割成较小的块。然后,使用嵌入模型将这些块编码为向量表示,并存储在向量数据库中,这一步对于在后续的检索阶段中实现高效的相似性搜索非常重要。
  2. 检索:当接收到用户的查询时,检索增强生成(RAG)系统利用在索引阶段使用的相同编码模型将查询转换为向量表示。然后,计算查询向量与索引语料库中块的向量之间的相似度得分。系统会优先选择并检索与查询最相似的前 K K K个块。这些块随后被用作提示中的扩展上下文。
  3. 生成:查询和选定的文档被合成为一个连贯的提示,然后交由大型语言模型(LLMs)负责生成回答。模型回答问题的方法可能根据任务特定的标准而有所不同,它可以利用其固有的参数化知识或将其响应限制在所提供文档中包含的信息范围内。在进行持续对话的情况下,任何现有的对话历史都可以集成到提示中,使模型能够有效地参与多轮对话交互。

然而,Naive RAG也存在明显的缺点:

  1. 检索:检索阶段经常面临精度低(检索到的块未对齐)和召回率低(无法检索所有相关块)的问题,有可能选择了不匹配或不相关的块,并且可能丢失关键信息,从而影响了大型语言模型(LLMs)生成回答的能力。。
  2. 生成:在生成回答时,模型可能面临产生幻觉的问题,即生成与检索到的上下文不一致的内容或不基于所提供的上下文生成回答。这个阶段的输出也可能存在不相关性或存在偏见的问题,从而降低了回答的质量和可靠性。
  3. 增强:将检索到的信息与不同任务集成也具有挑战性,有时会导致不连贯或不一致的输出。当从多个来源检索到类似信息时,该过程也可能遇到冗余问题,导致重复的回答。

确定各个段落的重要性和相关性,并确保文体和语调的一致性是另一个挑战。面对复杂问题,仅仅依靠原始查询进行一次检索可能无法获得足够的上下文信息。此外,有一种担忧是生成模型可能过度依赖增强信息,导致输出只是反应了检索到的内容,而没有添加有见地或综合性的信息。

Advanced RAG

Advanced RAG引入了针对性的改进措施,以克服Naive RAG的局限性。其重点是提高检索质量,采用了检索前和检索后的策略。为了解决索引问题,Advanced RAG通过使用滑动窗口方法、细粒度分割和元数据的整合来改进索引技术。此外,它还采用了几种优化方法来简化检索过程。

检索前处理

这个阶段主要关注的是优化数据索引优化原始查询

优化数据索引的目标是提高索引内容的质量,这涉及五个主要策略:增强数据的细粒度优化索引结构添加元数据对齐优化混合检索

  • 增强数据粒度:旨在提升文本标准化、一致性、事实准确性和丰富上下文,从而提高检索增强生成(RAG)系统的性能,这包括删除不相关的信息、消除实体和术语中的歧义、确认事实的准确性、维护上下文以及更新过时的文档。
    • 一致性:消除实体和术语中的歧义,同时消除重复或冗余信息,以简化检索者的工作重点。
    • 事实的准确性:核实数据的准确性
    • 丰富上下文:适应系统在现实世界中的交互上下文,可以通过添加另一层具有领域特定注释的上下文,再加上通过用户反馈循环的持续更新来实现。 时间敏感性是重要的上下文信息,应设计机制来刷新过时的文档。
  • 优化索引结构:调整块的大小以捕获相关上下文,跨多个索引路径进行查询,以及通过利用图数据索引中节点之间的关系合并来自图结构的信息以捕获相关上下文。
  • 添加元数据信息:将引用的元数据(例如日期和目的)集成到块中以用于过滤目的,并合并引用的章节和小节等元数据以提高检索效率。
  • 对齐优化:通过引入假设问题来解决文档之间的对齐问题和差异。
  • 混合检索:这种策略的优势在于利用了不同检索技术的优势。智能地结合各种技术,包括基于关键字的搜索、语义搜索和矢量搜索可以适应不同的查询类型和信息需求,确保对最相关和上下文丰富的信息的一致检索。混合检索可以作为检索策略的有力补充,增强检索增强生成(RAG)管道的整体性能。例如,可以使用稀疏检索模型为训练密集检索模型提供初始搜索结果。此外,可以利用预训练语言模型(PLM)学习术语权重,以增强稀疏检索。具体而言,它还表明,稀疏检索模型可以增强密集检索模型的Zero-shot检索能力,并帮助密集检索器处理包含罕见实体的查询,从而提高鲁棒性。

而优化原始查询的目标是使用户的原始问题更清晰、更适合检索任务。常见的方法包括查询重写查询转换查询扩展等技术。

检索后处理

检索到相关上下文后需要有效地将其与用户查询合并作为大型语言模型(LLMs)的输入。除此之外,还需解决上下文窗口限制带来的挑战。简单地一次性向大型语言模型(LLMs)提交所有相关文件可能会超出上下文窗口限制,即可能导致信息过载,模型可能将关注点从关键细节转移到无关内容上。为了缓解这个问题,检索后的努力集中在选择关键信息、强调关键部分和缩短待处理的上下文。

检索后处理的主要方法包括重新排列块压缩上下文

  • 重新排列块:重新排列检索到的信息,将最相关的内容重新定位到提示的边缘是一种关键策略。
  • 压缩上下文:研究表明,重新检索的文档中的噪声会对检索增强生成(RAG)性能产生不利影响,后期处理的重点在于压缩无关上下文、突出关键段落、减少整体上下文长度。选择性语境等方法利用小语言模型计算即时互信息或困惑度,估计元素重要性。典型的RAG框架

Modular RAG

Modular RAG结构不同于传统的Naive RAG框架,其提供强大的多功能性和灵活性。它集成了各种方法来增强功能模块,例如合并用于相似性检索的搜索模块和在检索器中应用微调方法。Modular RAG范式日益成为检索增强生成(RAG)领域的规范,其允许跨多个模块进行序列化或端到端训练方法。如上图所示,Modular RAG并不是独立的,Advanced RAG是Modular RAG的一种特殊形式,而Naive RAG是Advanced RAG的一种特例,即三种范式之间是继承与发展的关系。

新模块

Modular RAG框架引入了额外的组件,以增强检索和处理能力。

  • 搜索模块:与Naive RAG和Advanced RAG中的相似性检索相比,Modular RAG的搜索模块是针对特定场景量身定制的,并结合了对附加语料库的直接搜索。这种集成使用大型语言模型(LLMs)生成的代码、SQL或Cypher等查询语言在各种数据源(如搜索引擎、文本数据、表格数据、数据库和知识图谱)之间进行直接搜索。
  • 融合模块:RAGFusion通过采用多查询策略,将用户查询扩展为多个视角解决传统搜索系统的局限性,利用并行向量搜索和智能重新排序来发现显性和变革性知识,解决了传统搜索的限制。这种复杂的方法可确保搜索结果与用户的显式和隐式意图紧密结合,从而实现更有洞察力和相关性的信息发现。
  • 记忆模块:利用大型语言模型(LLMs)的内存来引导检索,通过迭代的自我增强,创建一个记忆池,将文本与数据分布更加密切地对齐,使Modular RAG可以使用模型自身的输出而不仅仅是训练数据。
  • 路由模块:查询路由决定用户查询的后续操作,选项范围包括摘要、搜索特定数据库或将不同路径合并为单个响应。查询路由器还为查询选择适当的数据存储,其中可能包括各种源,如向量存储、图形数据库、关系数据库或索引层次结构,例如用于多文档存储的摘要索引和文档块向量索引。查询路由的决策是预先定义的,并通过大型语言模型(LLMs)调用执行,该调用将查询定向到所选索引。在多个的数据源中进行导航,为查询选择最佳路径,无论是涉及摘要、特定数据库搜索还是合并不同信息流。
  • 生成模块:通过直接利用大型语言模型(LLMs)生成上下文(生成的内容更有可能包含相关信息)来减少冗余和噪音,确保相关性和准确性。
  • 任务适配器模块:适配各种下游任务,通过少样本查询生成自动化提示检索,创建特定任务的检索器。
  • 对齐模块:查询之间的对齐文本一直是影响检索增强生成(RAG)有效性的关键问题。模块化时代检索增强生成(RAG),研究人员发现,在寻回器中添加可训练的适配器模块可以有效缓解对齐问题。PRCA利用强化学习来训练上下文适配器由大型语言模型(LLMs)奖励驱动,位于寻回器和生成器之间。它通过最大化强化中的奖励来优化检索到的信息标记的自回归策略中的学习阶段。AAR提出了一种通用插件,可以从已知来源学习语言模型偏好大型语言模型(LLMs)以协助未知或非协同微调的大型语言模型(LLMs)。RRR设计了一个用于重写的模块基于强化学习的查询对齐查询语料库中的文档。
  • 验证模块:在现实世界中,并不总是保证检索到的信息是可靠的。检索不相关的数据可能会导致大型语言模型(LLMs)中出现幻觉。因此,可以在检索文档之后引入额外的验证模块,以评估检索到的文档与查询之间的相关性。这增强了的稳健性检索增强生成(RAG)。

这种综合方法不仅简化了检索过程,还显著提高了检索到的信息的质量和相关性,满足了各种任务和查询的需求,并增强了精确性和灵活性。

新模式

Modular RAG通过允许模块替换或重新配置来提供适应性以解决特定的挑战。这超越了Naive RAG和Advanced RAG的固定结构,Naive RAG主要由“检索”和“读取”模块组成。而Advanced RAG的典型模式建立在Naive RAG的基础上,添加了“重写”和“重新排序”模块。但总体而言,Modular RAG具有更大的多样性和灵活性,其通过集成新模块或调整现有模块之间的交互流程,扩展了其在不同任务中的适用性。

当前的研究主要探索两种组织范式。第一个涉及添加或替换模块,第二个则侧重于调整模块之间的组织流程。这种灵活性使得能够定制检索增强生成(RAG)的流程以有效地解决各种任务。添加或替换模块。

引入或替换模块的策略包括维护“检索”和“读取”流程的核心结构,同时集成附加模块以增强特定功能。 Rewrite-Retrieve-Read模型引入了“重写-检索-读取”过程,其通过重写模块和语言模型反馈机制来优化检索查询,从而利用大型语言模型(LLMs)的能力来更新重写模型,进而提升任务性能。同样地,像Generate-Read这样的方法用大型语言模型(LLMs)生成的内容取代了传统的检索方式,而Recite-Read则强调从模型权重中进行检索,增强了模型处理知识密集型任务的能力。

  • 混合检索策略:Modular RAG系统通过智能集成各种技术(包括基于关键字的搜索、语义搜索和向量搜索)来优化其性能。这种方法利用每种方法的独特优势来适应不同的查询类型和信息需求,确保高度相关和上下文丰富的信息的一致检索。混合搜索的使用可以作为检索策略的有力补充,从而增强检索增强生成(RAG)管道的整体效率。此外,使用子查询和假设性文档嵌入(HyDE)通过关注生成答案和真实文档之间的嵌入相似性,旨在提高检索相关性。
  • 递归检索和查询引擎:递归检索涉及在初始检索阶段获取较小的块以捕获关键语义。随后,包含更多上下文信息的更大块将在该过程的后期阶段提供给大型语言模型(LLMs)。这种两步重新检索方法有助于在效率和提供上下文丰富的响应之间取得平衡。
  • 后退提示方法:后退提示方法鼓励大型语言模型(LLMs)远离具体实例并围绕更广泛的概念和原则进行推理。实验结果表明,当使用向后提示时,各种具有挑战性的基于推理的任务的性能显着提高,突出了它们对检索增强生成(RAG)过程的自然适应性。这些检索增强步骤既可以应用于生成对后向提示的响应,也可以应用于最终的问答过程。
  • 子查询:根据场景的不同,可以采用各种查询策略,例如使用LlamaIndex等框架提供的查询引擎、利用树查询、利用向量查询或执行简单的块顺序查询。
  • 假设的文档嵌入(Hypothetical Document Embeddings,HyDE): HyDE运行于相信生成的答案可能比直接查询更接近嵌入空间。使用大型语言模型(LLMs),HyDE创建一个假设文档(答案)来响应查询,嵌入该文档,并使用生成的嵌入来检索与假设文档类似的真实文档。这种方法不是基于查询来寻求嵌入相似性,而是专注于从一个答案到另一个答案的嵌入相似性。然而,它可能不会始终如一地产生理想的结果,特别是当语言模型不熟悉主题时,可能会导致更多错误实例。
  • 模块流程调整:模块流程调整的重点是增强语言模型和检索模型之间的交互。 DSP模型引入了演示-搜索-预测框架,将情境学习系统视为一个显式程序而不是最终的任务提示,从而更有效地处理知识密集型任务。 ITERRETGEN方法利用生成的内容来指导检索,在检索-读取-检索-读取流程中迭代实现检索增强生成和生成增强检索。该方法展示了一种使用一个模块的输出来改进另一个模块的功能的创新方法。

模块化RAG流程的灵活编排通过FLARE和Self-RAG等技术展示了自适应检索的优势。这种方法通过根据不同的情境评估检索的必要性,超越了固定的检索增强生成(RAG)检索过程。灵活的架构的另一个好处是检索增强生成(RAG)系统能够更容易地与其他技术(如微调或强化学习)集成。例如,可以通过微调检索器获得更好的检索结果,通过微调生成器获得更个性化的输出,或进行协同微调。

检索增强生成(RAG)与微调的比较

在大型语言模型(LLMs)的优化方法中,检索增强生成(RAG)经常与微调(FT)和提示工程进行比较。每种方法都有独特的特点,如下图所示。我们使用一个象限图来说明这三种方法在两个维度上的差异:对外部知识需求和模型适应需求。提示工程利用模型固有的能力,对外部知识和模型适应的需求较小。检索增强生成(RAG)可以被比作为模型提供一个量身定制的信息检索教材,非常适合精确的信息检索任务。相比之下,微调类似于学生随着时间内化知识,适用于需要复制特定结构、风格或格式的场景。

检索增强生成(RAG)与微调的比较
检索增强生成(RAG)与其他模型优化方法在“所需外部知识”和“所需模型适应性”方面的比较。提示工程需要对模型和外部知识进行较少的修改,重点是利用大型语言模型(LLMs)自身的能力。而微调则需要对模型进行进一步的训练。在检索增强生成(RAG)的早期阶段(Naive RAG),对模型的修改需求较低。随着研究的进展,Modular RAG越来越多地与微调技术相结合。

检索增强生成(RAG)在动态环境中表现出色,提供实时的知识更新和高度可解释性的外部知识源的有效利用。然而,它会带来更高的延迟和与数据检索相关的伦理考虑。另一方面,微调更为静态,需要重新训练以进行更新,但可以深度定制模型的行为和风格。它需要大量的计算资源进行数据集准备和训练,并且虽然可以减少幻觉,但可能在处理陌生数据时面临挑战。

在对它们在不同主题上的各种知识密集型任务的多次评估中发现,虽然无监督微调显示出一些改进,但检索增强生成(RAG)在已有知识和全新知识方面始终表现优于微调。此外,发现大型语言模型(LLMs)通过无监督微调难以学习到新的事实信息。选择检索增强生成(RAG)或微调取决于应用环境中对数据动态性、定制化和计算能力的具体需求。检索增强生成(RAG)和微调并不是互斥的,它们可以互相补充,在不同层面上增强模型的能力。在某些情况下,它们的结合使用可能会导致最佳性能。涉及检索增强生成(RAG)和微调的优化过程可能需要多次迭代才能达到令人满意的结果。

检索增强生成(RAG)类似于为模型提供教科书,允许它基于特定查询检索信息。这该方法适用于模型需要回答特定的询问或解决特定的信息检索任务。然而,检索增强生成(RAG)不适合教模型来理解广泛的领域或学习新的语言,格式或样式。而微调类似于让学生通过广泛的学习内化知识。当模型需要复制特定的结构、样式或格式时这种方法非常有用。微调可以提高非微调模型的性能,并使交互更加频繁有效率的它特别适合强调基础模型中的现有知识,修改或自定义模型的输出,并向提供复杂的指令模型然而,微调不适合合并模型中的新知识或需要的情况新用例的快速迭代。微调可以实现优于的性能非微调模型和交互更有效。微调特别适合强调现有基本模型中的知识,修改或自定义模型的输出,并用复杂的指令指示模型。但是,微调不适合添加新的为模型或需要快速迭代新用例的场景提供知识。检索增强生成(RAG)和微调(FT)的比较可参考如下图:
检索增强生成(RAG)和微调(FT)的比较
检索增强生成(RAG)和微调并不互斥,而且可以相互补充,可以在不同方面增强模型。在某些情况下,将这两者结合起来技术可以实现最佳的模型性能。使用检索增强生成(RAG)进行优化和微调的整个过程可能需要多次迭代才能获得令人满意的结果。现有研究已经证明了检索增强生成(RAG)的显著优势与其他优化大型语言模型的方法相比:

  • 检索增强生成(RAG)通过将答案与外部知识联系起来,减少语言模型中的幻觉问题,并使生成的回答更加准确可靠,从而提高准确性
  • 使用检索技术可以识别最新信息,与仅依赖于训练数据的传统语言模型相比,检索增强生成(RAG)保持回复的及时性和准确性
  • 透明度是检索增强生成(RAG)的一个优势,通过引用用户可以验证答案的准确性,增加了对模型输出的信任
  • 检索增强生成(RAG)具有定制功能,通过对相关文本进行索引,可以针对不同领域定制模型语料库,为特定领域提供知识支持;
  • 检索增强生成(RAG)在安全和隐私管理方面中的内置角色和安全控件数据库,可以更好地控制数据的使用。相比之下,微调后的模型可能缺乏对谁可以的明确管理访问哪些数据
  • 检索增强生成(RAG)更具可扩展性。它可以处理大规模数据集无需更新所有参数并创建训练套件,使其更经济高效
  • 检索增强生成(RAG)得出的结果更值得信赖。检索增强生成(RAG)从最新数据中选择确定性结果,而微调后的模型可能会出现幻觉和处理动态数据时不准确,缺乏透明度和可信度

检索器

在检索增强生成(RAG)的背景下,高效地从数据源中检索相关文档至关重要。这个阶段包括索引建立、查询处理等一系列基本任务:

  • 索引建立:建立了一个有序的索引,使得信息可以快速准确地被检索。索引的详细程度取决于任务和数据类型。例如,问答系统会受益于句子级别的索引,以便精确地定位答案,而文档级别的索引则更适合于总结文档,以理解它们的主要概念和思想。
  • 查询处理:建立索引后,进行查询处理以更好地将用户查询与索引数据相匹配
  • 数据调整:去除无关或重复数据等预处理技术,以提升结果的质量,并通过添加元数据等附加信息来丰富数据,增强检索内容的相关性和多样性。
  • 搜索与排序:从数据集中选取考虑文档,以提升生成模型输出的质量。这个阶段运用搜索算法遍历索引数据,寻找与用户查询相匹配的文档。在识别相关文档后,就开始对这些文档进行初步排序,根据它们与查询的相关性进行排序。

综上所述,检索步骤涉及到了几个关键问题:

  • 获取准确的语义表示
  • 匹配查询和文档的语义空间
  • 调整检索器的输出和大型语言模型(LLMs)的偏好

获取准确的语义表示

在检索增强生成(RAG)中,语义空间是多维空间,其中查询和文档被映射。当我们进行检索时,它是在语义空间内测量的。如果语义表达不准确,那么它对检索增强生成(RAG)的影响是致命的,本部分将介绍几种构建准确的语义空间的方法。

检索源优化

检索增强生成(RAG)依赖于外部知识来增强大型语言模型(LLMs),而检索源的类型和检索单元的粒度都会影响最终的生成结果。

数据结构优化

最初,文本是主要的检索源。随后,检索源扩展到包括半结构化数据(PDF)和结构化数据(知识图谱)等检索源。除了从原始的外部源中检索外,近期的研究中还越来越多地利用LLM自身生成的内容进行检索和增强。

非结构化数据,如文本,是最常用的检索源,主要来自语料库。对于开放领域的问答(ODQA)任务,主要的检索源是维基百科的转储数据,当前主要版本包括HotpotQA 4和DPR5。除了百科全书式的数据,常见的非结构化数据还包括跨语言文本和领域特定的数据(如医学和法律领域)。

半结构化数据通常指的是同时包含文本和表格信息的数据,比如PDF文件。处理半结构化数据对于传统的检索增强生成(RAG)系统来说具有挑战性,主要有两个原因。首先,文本分割过程可能会错误地分离表格,导致在检索过程中数据损坏。其次,将表格整合到数据中可以复杂化语义相似性搜索。在处理半结构化数据时,一种方法是利用大型语言模型(LLMs)的代码能力,在数据库中执行Text-2-SQL查询以处理表格,例如TableGPT。或者,可以将表格转换为文本格式,使用基于文本的方法进行进一步分析。然而,这两种方法都不是最优解决方案,这也表明在这个领域存在大量的研究机会。

结构化数据,如知识图谱(KGs),通常经过验证,可以提供更精确的信息。KnowledGPT生成KB搜索查询并将知识存储在个性化的基础上,增强了检索增强生成(RAG)模型的知识丰富性。针对大型语言模型(LLMs)在理解和回答关于文本图的问题方面的限制,G-Retriever集成了图神经网络(GNNs)、大型语言模型(LLMs)和检索增强生成(RAG),通过对大型语言模型(LLMs)进行软提示,增强了图的理解和问答能力,并采用奖励收集斯坦纳树(PCST)优化问题进行有针对性的图检索。相反,构建、验证和维护结构化数据库需要额外的工作量。

大型语言模型(LLMs)生成的内容。为了解决检索增强生成(RAG)中外部辅助信息的局限性,一些研究着眼于利用大型语言模型(LLMs)的内部知识。SKR将问题分类为已知或未知,并有选择性地应用检索增强。GenRead使用大型语言模型(LLMs)生成器替换了检索器,发现由于与因果语言建模的预训练目标更好地对齐,大型语言模型(LLMs)生成的上下文通常包含更准确的答案。Selfmem使用检索增强的生成器迭代地创建一个无限的记忆池,使用记忆选择器选择作为原问题的双重问题的输出,从而自我增强生成模型。这些方法强调了检索增强生成(RAG)中创新数据源利用的广度,力求提高模型性能和任务效果。

检索粒度

除了检索源的数据格式之外,检索数据的粒度也是一个重要因素。粗粒度的检索单元理论上可以为问题提供更相关的信息,但它们也可能包含冗余内容,这可能会分散检索器和语言模型在下游任务中的注意力。另一方面,细粒度的检索单元会增加检索的负担,并不能保证语义完整性和满足所需的知识。在推断过程中选择适当的检索粒度可能是改进密集检索器的检索和下游任务性能的简单有效策略。

在文本中,检索粒度从细粒度到粗粒度不等,包括标记(Token)、短语(Phrase)、句子(Sentence)、命题(Proposition)、块(Chunks)、文档(Document)。其中,DenseX提出了使用命题作为检索单元的概念。命题被定义为文本中的原子表达式,每个命题封装了一个独特的事实片段,并以简洁、自包含的自然语言格式呈现。这种方法旨在提高检索精度和相关性。在知识图谱(KG)中,检索粒度包括实体(Entity)、三元组(Triplet)和子图(sub-Graph)。检索的粒度也可以根据下游任务进行调整,例如在推荐任务中检索物品ID ,或在句对任务中检索句子对。

RAG方法总结

索引优化

在索引阶段,文档将被处理、分割并转换为嵌入向量,以存储在向量数据库中。索引构建的质量决定了在检索阶段是否能获取到正确的上下文。

分块策略

管理外部文档时,第一步是将它们分解成更小的块以提取细粒度的特征,然后嵌入这些特征来表示它们的语义。然而,嵌入过大或过小的文本块可能会导致次优结果。因此,确定语料库中文档的最佳块大小对于确保检索结果的准确性和相关性至关重要。最常见的方法是将文档分成固定数量的Token块(例如100、256、512个Token)。**较大的块可以捕捉更多的上下文,但也会产生更多的噪音,需要更长的处理时间和更高的成本。而较小的块可能无法完全传达必要的上下文,但噪音较少。**然而,分块会导致句子内的截断,因此需要采用递归分割和滑动窗口方法进行优化,通过合并跨多个检索过程的全局相关信息,实现分层检索。然而,这些方法仍然不能在语义完整性和上下文长度之间取得平衡。因此,出现了类似Small2Big的方法,其中将句子(小)作为检索单元,将前后句子作为(大)上下文提供给大型语言模型(LLMs)。

选择合适的分块策略需要仔细考虑几个重要因素,例如索引内容的性质、嵌入模型及其最佳块大小、用户查询的预期长度和复杂性以及特定应用程序对索引的利用。例如,分块模型的选择应该基于内容的长度——无论是长还是短。此外,不同的嵌入模型在不同的块大小下表现出不同的性能特征。例如,Sentence-transformer对于单个句子表现更好,而Text-embedding-ada-002对于包含256或512个Token的块表现更好。

此外,用户输入问题的长度和复杂性以及应用程序的特定需求(例如语义搜索或问答)等因素也会影响分块策略的选择。这种选择可能会直接受到所选大型语言模型(LLMs)的限制。实际上,获得精确的查询结果需要灵活应用不同的分块策略。不存在放之四海而皆准的“最佳”策略,只有最适合特定情况的策略。

检索增强生成(RAG)当前的研究探索了各种旨在提高检索效率和准确性的块优化技术。其中一种方法涉及使用滑动窗口技术,通过跨多个检索过程合并全局相关信息来实现分层检索。另一种策略称为“小到大”方法,在初始搜索阶段利用小文本块,随后向语言模型提供较大的相关文本块进行处理。

摘要嵌入技术根据文档摘要优先进行前 K K K项重新检索,从而提供对整个文档上下文的全面理解。此外,元数据过滤技术利用文档元数据来增强过滤过程。图索引技术是一种创新方法,将实体和关系转换为节点和连接,显着提高了相关性,特别是在多跳问题的背景下。这些不同方法的结合带来了无表进步,从而增强检索结果并提高检索增强生成(RAG)性能。

元数据附加

可以使用元数据信息(如页码、文件名、作者、类别、时间戳)对块进行丰富。随后,可以基于这些元数据进行检索过滤,限制检索的范围。在检索过程中给文档时间戳分配不同的权重可以实现时间感知的检索增强生成(RAG),确保知识的新鲜度,避免过时的信息。

除了从原始文档中提取元数据外,还可以人为构建元数据。例如,添加段落摘要,引入假设性问题。这种方法也称为逆向HyDE。具体而言,使用大型语言模型(LLMs)生成可由文档回答的问题,然后在检索过程中计算原始问题和假设问题之间的相似度,以减少问题和答案之间的语义差距。

结构化索引

增强信息检索的一种有效方法是为文档建立层次结构。通过构建内部结构,检索增强生成(RAG)系统可以加快相关数据的检索和处理。层次化索引结构中,文件按照父子关系排列,块与它们相连。每个节点存储数据摘要,有助于快速遍历数据,并帮助检索增强生成(RAG)系统确定提取哪些块。这种方法还可以减轻由块提取问题引起的幻觉。

知识图谱索引。利用知识图谱在构建文档的层次结构方面有助于保持一致性。它勾勒了不同概念和实体之间的连接,显著减少了幻觉的可能性。另一个优点是将信息检索过程转化为大型语言模型(LLMs)能理解的指令,从而提高知识检索的准确性,并使LLM能够生成上下文连贯的响应,从而提高RAG系统的整体效率。为了捕捉文档内容和结构之间的逻辑关系,KGP [91]提出了使用知识图谱在多个文档之间建立索引的方法。该知识图谱包括节点(表示文档中的段落或结构,例如页面和表格)和边缘(表示段落之间的语义/词汇相似性或文档结构内的关系),有效解决了多文档环境中的知识检索和推理问题。

微调嵌入模型

在检索增强生成(RAG)中,通过计算查询和文档块的嵌入之间的相似性(如余弦相似度)来实现检索,其中嵌入模型的语义表示能力起着关键作用。这主要包括稀疏编码器(BM25)和密集检索器(BERT架构的预训练语言模型)。最近的研究引入了一些突出的嵌入模型,如AngIE、Voyage、BGE等,它们受益于多任务指导调整。Hugging Face的MTEB排行榜评估了嵌入模型在8个任务上的性能,涵盖了58个数据集。此外,C-MTEB专注于中文能力,涵盖了6个任务和35个数据集。并没有适用于所有情况的“哪种嵌入模型最好”的通用答案。然而,某些特定的模型更适合特定的用例。嵌入模型的特定于任务的微调对于确保模型在内容相关性方面理解用户查询至关重要。未经微调的模型可能无法充分满足特定任务的要求。因此,微调嵌入模型对于下游应用程序至关重要:

  • 微调嵌入模型:在上下文与预训练语料库明显不同的情况下,特别是在医疗保健、法律实践等高度专业化的领域,充斥着专有术语,对嵌入模型进行自己领域数据集的微调变得至关重要,以缓解这种差异。
    • 领域知识微调:为了确保嵌入模型准确捕获特定领域的信息,必须利用特定领域的数据集进行微调。此过程与标准语言模型微调不同,主要在于所涉及数据集的性质。通常,用于嵌入模型微调的数据集包含三个主要元素——查询、语料库和相关文档。该模型使用这些查询来识别语料库中的相关文档。然后根据模型响应查询重新检索这些相关文档的能力来衡量模型的有效性。数据集构建、模型微调和评估阶段都面临着不同的挑战。 LlamaIn-dex引入了一套关键类和函数,旨在增强嵌入模型微调工作流程,从而简化这些复杂的过程。通过策划一个充满领域知识的语料库并利用所提供的方法,人们可以熟练地微调嵌入模型,以紧密地符合目标领域的特定要求。
    • 下游任务的微调。微调下游任务的嵌入模型是增强模型性能的关键一步。在利用 RAG 完成这些任务的领域中,已经出现了利用LLM的能力来微调嵌入模型的创新方法。

除了补充领域知识外,微调的另一个目的是对齐检索器和生成器,例如,使用大型语言模型(LLMs)的结果作为微调的监督信号,称为LSR(基于语言模型的监督检索器)。PROMPTAGATOR利用大型语言模型(LLMs)作为少样本查询生成器,创建特定任务的检索器,解决了有限数据领域中监督微调的挑战。另一种方法,LLM-Embedder,利用大型语言模型(LLMs)在多个下游任务中生成奖励信号。检索器通过两种类型的监督信号进行微调——数据集的硬标签和大型语言模型(LLMs)的软奖励。这种双信号方法促进了更有效的微调过程,使嵌入模型适应多样的下游应用。REPLUG利用检索器和大型语言模型(LLMs)计算检索文档的概率分布,然后通过计算KL散度进行监督训练。这种直接有效的训练方法通过使用语言模型作为监督信号提高了检索模型的性能,消除了对特定的交叉注意机制的需求。此外,受到RLHF(基于人类反馈的强化学习)的启发,利用基于语言模型的反馈通过强化学习来加强检索器。

匹配查询和文档的语义空间

和文档在检索增强生成(RAG)应用程序中,一些检索器使用相同的嵌入模型对查询和文档进行编码,而另一些检索器则使用两个模型,以便分别对查询和文档进行编码。此外用户的原始查询可能存在表达不佳和缺乏语义信息的问题。因此,对齐用户查询和文档的语义空间是非常必要的。

查询优化

Naive RAG的主要挑战之一是它直接依赖用户原始查询作为检索的基础。确切而清晰地提出问题是困难的,较差的查询会导致检索效果不佳。有时问题本身很复杂,语言组织较为困难。另一个困难在于语言复杂性的歧义。当处理专业词汇或具有多个含义的模糊缩写时,语言模型通常难以应对。例如,它们可能无法确定"LLM"是指大型语言模型还是法律背景下的法学硕士。此外,用户的原始查询可能会受到措辞不精确和缺乏语义信息的影响。因此,将用户查询的语义空间与文档的语义空间保持一致至关重要。本部分的内容介绍旨在实现这种对齐的几种基本技术。

查询扩展

将单个查询扩展为多个查询可以丰富查询的内容,提供进一步的上下文以解决特定细微差别的缺失,从而确保生成的答案的最佳相关性。

  • 多个查询:通过使用大型语言模型(LLMs)进行提示工程,扩展查询,然后并行执行这些查询。查询的扩展不是随机的,而是经过精心设计的。
  • 子查询:子问题规划的过程表示生成必要的子问题,以在组合时提供上下文化和完全回答原始问题。这个添加相关上下文的过程原则上类似于查询扩展。具体而言,可以使用由最少到最多提示的方法将复杂问题分解为一系列较简单的子问题。
  • 验证链(CoVe):扩展的查询经过大型语言模型(LLMs)的验证,以达到减少幻觉的效果。经过验证的扩展查询通常显示出更高的可靠性。
查询转换

查询转换的核心概念是基于转换后的查询而不是用户原始查询来检索块。

查询重写

原始查询通常并不总是适合大型语言模型(LLMs)检索,特别是在实际场景中。因此,我们可以提示大型语言模型(LLMs)重写查询。除了使用大型语言模型(LLMs)进行查询重写外,还可以使用专门的较小语言模型,如RRR(重写-检索-阅读)。在淘宝中实施了查询重写方法的BEQUE显著增强了长尾查询的召回效果,实现了GMV的增长。查询重写是对齐查询和文档语义的基本方法,方法例如Query2Doc和ITERRETGEN利用大型语言模型(LLMs)通过结合原始文件来创建伪文档。带有附加指导的最终查询。HyDE使用文本提示构建查询向量,以生成捕获基本模式的“假设”文档。 RRR引入了一个反转传统检索和读取顺序的框架,重点关注查询重写.STEP-BACKPROMPTING 使大型语言模型(LLMs)能够执行基于高级概念的抽象推理和检索。此外,多查询检索方法利用大型语言模型(LLMs)同时生成和执行多个搜索查询,有利于解决具有多个子问题的复杂问题。

生成查询

另一种查询转换方法是使用提示工程让大型语言模型(LLMs)基于原始查询生成一个查询来进行后续检索。HyDE构建了假设性文档(对原始查询的假设答案)。它关注的是从答案到答案的嵌入相似性,而不是寻求问题或查询的嵌入相似性。使用Step-back Prompting方法,将原始查询抽象为生成一个高层次的概念问题(Step-back Question)。在检索增强生成(RAG)系统中,同时使用Step-back问题和原始查询进行检索,并将两者的结果用作语言模型答案生成的基础。

查询路由

基于不同的查询,将其路由到适合多功能检索增强生成(RAG)系统的不同管道,以适应各种场景。

  • 元数据路由/过滤器:元数据路由/过滤器的第一步是从查询中提取关键词(实体),然后根据关键词和块内的元数据进行过滤,以缩小搜索范围。
  • 语义路由:语义路由是另一种路由方法,利用查询的语义信息,具体方法参见语义路由。当然,也可以采用混合路由方法,结合语义和基于元数据的方法,以增强查询路由的效果。

嵌入转换

除了查询重写等广泛策略之外,还存在专门为嵌入转换设计的更细粒度的技术。 LlamaIndex通过引入一个可以集成在查询编码器之后的适配器模块来举例说明这一点。该适配器有助于微调,从而优化查询嵌入的表示,将它们映射到与预期任务更紧密相关的潜在空间中。

SANTA解决了将查询与结构化外部文档对齐的挑战,特别是在解决结构化数据和非结构化数据之间的不一致时。它通过两种预训练策略增强检索器对结构化信息的敏感性:首先,利用结构化和非结构化数据之间的内在一致性,在结构化感知预训练方案中进行对比学习;其次,通过实施屏蔽实体预测。后者利用以实体为中心的屏蔽策略,鼓励语言模型预测和填充屏蔽实体,从而促进对结构化数据的更深入理解。将查询与结构化外部文档对齐的问题,特别是在处理差异时SANTA解决了结构化和非结构化数据之间的问题。

该方法通过两种预训练策略提高了检索器识别结构化信息的能力:首先,利用结构化和非结构化数据之间的内在一致性来指导结构化感知预训练方案中的对比学习;其次,通过使用屏蔽实体预测。后者使用以实体为中心的屏蔽策略提示语言模型来预测和完成屏蔽实体,从而促进对结构化数据的更深刻的理解。

调整检索器的输出和大型语言模型(LLMs)的偏好

在检索增强生成(RAG)管道中,即使我们采用上述技术来提高检索命中率,也可能无法提高检索增强生成(RAG)的最终效果,因为检索到的文档可能不是大型语言模型(LLMs)所需要的。本部分的内容介绍了两种方法来调整检索器的输出和大型语言模型(LLMs)的偏好。

微调检索器

一些研究利用大型语言模型(LLMs)的反馈信号来完善检索模型。例如,AAR引入了使用编码器-解码器架构的预训练检索器的监督信号。这是通过FiD交叉注意力分数识别语言模型的首选文档来实现的。随后,检索器通过硬负采样和标准交叉熵损失进行微调。最终,改进后的检索器可以直接应用于增强未见过的目标语言模型,从而提高目标任务的性能。此外,建议LLM可能更倾向于关注可读性而非信息丰富的文档。

REPLU利用检索器和大型语言模型(LLMs)来计算检索到的文档的概率分布,然后通过计算KL散度来执行监督训练。这种简单有效的训练方法通过使用语言模型作为监督信号来增强检索模型的性能,从而消除了对特定交叉注意机制的需要。

UPRISE等人还使用冻结的大型语言模型(LLMs)来微调提示检索器。 大型语言模型(LLMs)和检索器都将提示输入对作为输入,并利用大型语言模型(LLMs)提供的分数来监督检索器的训练,从而有效地将大型语言模型(LLMs)视为数据集标记器。此外,Atlas提出了四种监督微调嵌入模型的方法:

  • 注意蒸馏(Attention Distillation):利用大型语言模型(LLMs)在输出过程中生成的交叉注意力分数来提取模型的知识。
  • EMDR:使用检索到的文档作为潜在变量来训练模型
  • 困惑度蒸馏(Perplexity Distillation ):使用生成的令牌的困惑度作为指标直接训练模型。
  • LOOP:根据文档删除对大型语言模型(LLMs)预测的影响提出了一种新颖的损失函数,提供了一种有效的训练策略,使模型更好地适应特定任务。

这些方法旨在提高检索者和大型语言模型(LLMs)之间的协同作用,从而提高检索性能并更准确地响应用户查询。

引入适配器

微调模型可能会面临一些挑战,比如通过API集成功能或解决由于有限的本地计算资源而产生的限制。因此,一些方法选择引入外部适配器来帮助对齐。

为了优化大型语言模型(LLMs)的多任务能力,UPRISE训练了一个轻量级提示检索器,可以自动从预先构建的提示池中检索适合给定Zero-shot任务输入的提示。AAR (Augmentation-Adapted Retriever) 引入了一个通用适配器,旨在适应多个下游任务。而PRCA则添加了可插拔的基于奖励驱动的上下文适配器,以提高特定任务的性能。BGM保持了检索器和大型语言模型(LLMs)不变,并在两者之间训练一个桥接Seq2Seq模型。桥接模型的目标是将检索到的信息转换为大型语言模型(LLMs)可以有效处理的格式,使其不仅能够重新排名,还能为每个查询动态选择片段,并潜在地采用更高级的策略,如重复。此外,PKG通过指令微调引入了一种将知识整合到白盒模型中的创新方法。在这种方法中,检索器模块被直接替换,根据查询生成相关文档。这种方法有助于解决微调过程中遇到的困难,并提高模型性能。

生成器

检索增强生成(RAG)的一个重要组成部分是它的生成器,它负责将检索到的信息转换为连贯且流畅的文本。与传统语言模型不同,检索增强生成(RAG)的生成器通过合并检索到的数据来提高准确性和相关性。在检索增强生成(RAG)中,生成器的输入不仅包含典型的上下文信息,还包含通过检索器获得的相关文本片段。这种全面的输入使生成器能够深入了解问题的上下文,从而产生信息更丰富且与上下文相关的响应。此外,生成器以检索到的文本为指导,以确保生成的内容和获得的信息之间的连贯性。多样化的输入数据导致了在生成阶段有针对性的努力,所有这些都是为了改进大型模型对从查询和文档导出的输入数据的适应。而在检索之后,直接将所有检索到的信息输入大型语言模型(LLMs)来回答问题并不是一个好的做法。本部分的内容将从两个角度介绍调整的方法:大型语言模型(LLMs)的检索后处理大型语言模型(LLMs)的微调,在这些方法中,常包含以下一下步骤

  • 重排序:重新评价和排序检索到的文档,以更准确地突出与查询最相关的文档,并减少不相关文档的影响。这一步涉及到引入额外的评价指标和外部知识源以提升精确度,其可以有效利用精度更高但效率较低的预训练模型,因为候选文档集是有限的。
  • 过滤:剔除未达到特定质量或相关性标准的文档,这可以通过多种方法实现,例如设定一个最低相关性分数阈值,以排除低于某一相关性水平的文档。此外,借助用户反馈或之前的相关性评估来调整过滤过程,确保只有与查询最相关的文档被用于文本生成。
  • 内容增强:生成阶段的核心是内容增强环节,以将检索到的信息与用户的查询整合,创造出一个连贯且相关的回应,其包括详细阐释过程,即向检索内容添加额外细节以丰富其内容。努力致力于通过重新表述和结构调整等方法提升输出的质量,使其更加清晰、连贯,并增加风格魅力。结合来自多个来源的信息,提供一个全面的视角,同时进行核实,以确保内容的准确性和相关性。
  • 个性化定制:一个可选环节,涉及根据用户的特定偏好或请求的上下文调整内容。这包括根据目标受众的需求或内容呈现的格式调整内容,以及浓缩信息,简洁地传达内容的核心。该过程还涉及创建摘要或概要,强调关键点或论点,确保输出既富含信息又简洁。

大型语言模型(LLMs)的检索后处理

在不对大型语言模型(LLMs)进行微调的领域,许多研究依赖于GPT-4等成熟的模型来利用其全面的内部知识来系统地综合从各种文档中检索到的信息。然而,这些大型模型仍然存在挑战,包括局限性关于上下文长度和对冗余信息的敏感性。为了解决这些问题,某些研究工作已将重点转向检索后处理。检索后处理涉及处理、过滤或优化检索器从大型文档数据库中检索到的相关信息。其主要目标是提高检索结果的质量,使其与用户需求或后续任务更紧密地结合。它可以被视为对检索阶段获得的文档的处理。检索后处理中的常见操作通常包括信息压缩和结果重排序。

冗余信息可能会干扰大型语言模型(LLMs)的最终生成结果,过长的上下文也可能导致大型语言模型(LLMs)出现“迷失在中间”的问题。与人类一样,大型语言模型(LLMs)往往只关注长文本的开头和结尾,而忽视中间部分。因此,在检索增强生成(RAG)系统中,我们通常需要进一步处理检索到的内容,这通常包括结果重新排序和信息压缩。

结果重新排序

结果重新排序基本上是对文档块进行重新排序,将最相关的结果放在前面,有效地减少整体文档集合,既可以作为增强器,又可以作为过滤器,为更精确的语言模型处理提供精细化的输入。重新排序可以使用基于规则的方法,依赖于预定义的度量标准,如多样性、相关性和MRR,也可以使用基于模型的方法,如BERT系列的Encoder-Decoder模型(例如SpanBERT),专门的重新排序模型,如Cohere Rerank或Bge-raranker-large,以及通用的大型语言模型,如GPT。

重新排序模型对于优化从检索器检索的文档集至关重要。当引入额外的上下文时,语言模型通常会面临性能下降的问题,而重新排序可以有效地解决这个问题。核心概念涉及重新排列文档记录,将最相关的项目优先排列在顶部,从而限制文档的总数。这不仅解决了检索过程中上下文窗口扩展的挑战,而且还提高了检索效率和响应能力。

排序模型自始至终都承担着双重角色信息检索过程,既充当优化器又充当细化器。为后续语言模型处理提供更有效、更准确的输入。上下文压缩被纳入重新排序过程中,以提供更精确的检索信息。这种方法需要减少单个文档的内容并过滤整个文档,最终目标是在搜索结果中呈现最相关的信息,以便更集中和准确地显示相关内容。

上下文选择/压缩

在检索增强生成(RAG)过程中存在一个常见误解,即认为检索尽可能多的相关文档并将它们连接起来形成一个冗长的检索提示是有益的。然而,过多的上下文可能会引入更多的噪音,降低大型语言模型(LLMs)对关键信息的感知能力。即使检索器可以从在庞大的知识库中获取相关知识,我们仍然面临着处理检索文档的大量信息。现有的一些研究尝试通过增加大型语言模型的上下文长度来解决,但当前的大模型仍然面临上下文长度的局限性。因此,在某些情况下,信息压缩是必要的。简而言之,信息的重要性压缩主要体现在以下几个方面:

  • 减少噪音
  • 应对上下文长度限制
  • 增强生成效果

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

PRCA通过训练信息提取器解决了这个问题。在上下文提取阶段,当提供输入文本Sinput时,它能够生成表示来自输入文档的压缩上下文的输出序列Cextracted。训练过程旨在最小化Cextracted和实际上下文Ctruth之间的差异。同样,RECOMP采用了类似的方法使用对比学习训练信息冷凝器。每个训练数据点由一个正样本和五个负样本组成,编码器在整个过程中使用对比损失进行训练。另一项研究采取了不同的方法,其目标是减少文档数量以提高模型答案的准确性。

LLMLingua等工具利用小型语言模型(SLMs),如GPT-2 Small或LLaMA-7B,来检测并删除不重要的标记,将其转化为人类难以理解但大型语言模型(LLMs)能够理解的形式。这种方法提供了一种直接而实用的提示压缩方法,无需对大型语言模型(LLMs)进行额外的训练,同时平衡了语言的完整性和压缩比。PRCA通过训练一个信息提取器来解决这个问题。类似地,RECOMP采用了一种类似的方法,通过对比学习训练一个信息浓缩器。每个训练数据点包含一个正样本和五个负样本,编码器在整个过程中使用对比损失进行训练。

除了压缩上下文,减少文档数量也有助于提高模型答案的准确性。Ma等人提出了“Filter-Reranker”范式,将大型语言模型(LLMs)和SLMs的优势结合起来。在这个范式中,小语言模型(SLMs)充当过滤器,而大型语言模型(LLMs)则充当重新排序代理。研究表明,指导大型语言模型(LLMs)重新排列小语言模型(SLMs)确定的具有挑战性的样本,可以显著提高各种信息提取(IE)任务的性能。另一种简单而有效的方法是让大型语言模型(LLMs)在生成最终答案之前对检索到的内容进行评估。这使得大型语言模型(LLMs)可以通过大型语言模型(LLMs)的评论来过滤掉与问题不相关的文档。例如,在Chatlaw中,大型语言模型(LLMs)被要求自我建议关于相关法律条款以评估其相关性。

大型语言模型(LLMs)的微调

基于大型语言模型(LLMs)在特定场景和数据特征上的目标微调可以获得更好的结果。这也是使用本地大型语言模型(LLMs)的最大优势之一。当大型语言模型(LLMs)在特定领域缺乏数据时,可以通过微调向大型语言模型(LLMs)提供额外的知识。Huggingface的微调数据也可以作为初始步骤使用。

微调的另一个好处是能够调整模型的输入和输出。例如,它可以使大型语言模型(LLMs)适应特定的数据格式,并按照指示以特定的风格生成回答。对于涉及结构化数据的检索任务,SANTA框架实施了三方训练方案,以有效地包含结构和语义细微差别。初始阶段专注于检索器,利用对比学习来优化查询和文档的嵌入。

通过强化学习将大型语言模型(LLMs)的输出与人类或检索器的偏好相一致是一种潜在的方法。例如,手动注释最终生成的答案,然后通过强化学习提供反馈。除了与人类偏好相一致,还可以与微调模型和检索器的偏好相一致。当无法访问强大的专有模型或更大参数的开源模型时,一种简单而有效的方法是提炼更强大的模型(例如GPT-4)。大型语言模型(LLMs)的微调也可以与检索器的微调协调一致。一个典型的方法,如RA-DIT,使用KL散度来对齐检索器和生成器之间的评分函数。

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

在标准大型语言模型(LLMs)生成任务中,输入通常由查询组成。检索增强生成(RAG)的突出之处在于不仅将查询纳入输入,而且将检索器检索到的各种文档(结构化/非结构化)纳入输入中。这些附加信息可以显着影响模型的理解,特别是对于较小的模型。在这种情况下,微调模型以适应查询和检索文档的输入变得至关重要。在将输入呈现给微调模型之前,通常会对检索器检索到的文档进行检索后处理。值得注意的是,检索增强生成(RAG)中生成器的微调方法与大型语言模型(LLMs)的一般微调方法一致。

格式化数据与非格式化数据和优化函数

作为一般优化过程的一部分,训练数据通常由输入输出对组成,旨在训练模型在给定输入 x x x的情况下产生输出 y y y。在Self-Mem的工作中,采用传统的训练过程,其中给定输入 x x x,检索相关文档 z z z(在论文中选择Top-1),并在整合 ( x , z ) (x,z) (x,z)后,模型生成输出 y y y。论文利用了两种常见的范式用于微调,即联合编码器和双编码器。

在联合编码器范例中,使用基于编码器-解码器的标准模型。这里,编码器最初对输入进行编码,解码器通过注意力机制结合编码结果以自回归方式生成令牌。另一方面,在双编码器范例中,系统设置两个独立的编码器,每个编码器分别对输入(查询、上下文)和文档进行编码。由此产生的输出由解码器按顺序进行双向交叉注意处理。两种架构都利用Transformer作为基础模块,并用负对数似然损失进行优化。利用对比学习在为语言模型准备训练数据的阶段,通常会创建输入和输出的交互对。这种传统方法可能会导致暴露偏差,其中模型仅在单独的、正确的输出示例上进行训练,从而限制其暴露于一系列可能的输出引用序列。这种限制可能会导致模型过度拟合训练集中的特定示例,从而阻碍模型在现实世界中的性能,从而降低其在各种上下文中进行泛化的能力。

为了减轻曝光偏差,SURGE提出使用图文对比学习。该方法包括一个对比学习目标,该目标促使模型产生一系列合理且连贯的响应,扩展到训练数据中遇到的实例之外。这种方法对于减少过度拟合和增强模型的泛化能力至关重要。

对于涉及结构化数据的检索任务,SANTA框架实施三方培训方案,以有效封装结构和语义的细微差别。初始阶段侧重于检索器,其中利用对比学习来细化查询和文档嵌入。随后,生成器的初步训练阶段采用对比学习来将结构化数据与其非结构化文档描述对齐。在生成器训练的进一步阶段,该模型承认实体语义在检索文本数据的表示学习中的关键作用,正如Sciavolino所强调的那样,该过程从识别结构化数据中的实体开始,然后对生成器的输入数据中的这些实体应用掩码,从而为模型预测和预测这些掩码元素奠定了基础。

训练方案随着模型学习利用上下文信息重建屏蔽实体而进展。这项练习培养了模型对文本数据结构语义的理解,并促进结构化数据中相关实体的对齐。总体优化目标是训练语言模型准确地恢复模糊的跨度,从而丰富其对实体语义的理解。

增强方法

检索增强生成(RAG)的增强主要有各阶段增强、数据源增强和检索增强三大类方向。
检索增强生成(RAG)的增强

数据源增强

检索增强生成(RAG)模型的有效性很大程度上受到增强数据源选择的影响。不同层次的知识和维度需要不同的处理技术。它们被分类为非结构化数据、结构化数据和大型语言模型(LLMs)生成的内容。上图描绘了具有不同增强方面的代表性检索增强生成(RAG)研究的技术树。叶子以三种不同的颜色着色,代表使用各种类型的数据进行的增强:非结构化数据、结构化数据和大型语言模型(LLMs)生成的内容。该图清楚地表明,最初,增强主要通过非结构化数据(例如纯文本)来实现。这种方法后来扩展到包括使用结构化数据(例如知识图谱)来进一步改进。最近,利用大型语言模型(LLMs)自己生成的内容进行检索和增强目的的研究趋势不断增长。

非结构化数据增强

非结构化文本是从语料库中收集的,例如用于微调大型模型的提示数据和跨语言数据。检索单位从标记(例如,kNN-LM)到短语(例如,NPM、COG)和文档段落不同,具有更细的粒度,提供预检索,以增加检索复杂性为代价的切除。FLARE引入了一种主动检索方法,由语言模型生成低概率单词触发。它创建一个用于文档检索的临时句子,然后使用重新检索的上下文重新生成该句子以预测后续句子。 RETRO使用前一个Chunk来检索Chunk级别的最近邻居,结合前一个Chunk的上下文,指导下一个Chunk的生成。为了保持因果关系,下一个块Cionly的生成利用前一个块 N ( C i − 1 ) N(C_i − 1) N(Ci1)的最近邻居,而不是 N ( C i ) N(C_i) N(Ci)。用结构化数据增强

结构化数据增强

结构化数据(如:知识图谱(KG)),提供高质量的上下文并减轻模型幻觉。RET-LLMs从过去的对话构建知识图记忆以供将来参考。 SUGRE采用图神经网络(GNN)来编码相关的知识图谱子图,通过多模式对比学习确保检索到的事实和生成的文本之间的一致性。 Knowl-edGPT生成知识库搜索查询并将知识存储在个性化库中,从而增强检索增强生成(RAG)模型的知识丰富性和上下文性。

大型语言模型(LLMs)生成的内容增强

为了解决检索增强生成(RAG)中外部辅助信息的局限性,一些研究集中于利用大型语言模型(LLMs)的内部知识。 SKR将问题分类为已知或未知,有选择地应用检索增强。GenRead用大型语言模型(LLMs)生成器替换了检索器,发现大型语言模型(LLMs)生成的上下文通常包含更准确的答案,因为与因果语言建模的预训练目标更好地保持一致。 Selfmem迭代地创建一个带有检索增强生成器的无界内存池,使用内存选择器来选择作为原始问题的对偶问题的输出,从而自我增强生成模型。这些方法强调了检索增强生成(RAG)中创新数据源利用的广度,努力提高模型性能和任务有效性。

各阶段增强

检索增强生成(RAG)是一项知识密集型的工作,在语言模型训练的预训练、微调和推理阶段融合了多种技术方法。

预训练阶段增强

在预训练阶段,研究人员通过上图检索增强生成(RAG)核心组件基于检索的策略的分类,研究了支持开放域QA的PTM的方法。 REALM模型采用结构化、可解释的方法进行知识嵌入、框架预训练和微调,作为掩码语言模型 (MLM) 框架内的检索然后预测工作流程。Borgeaud等人利用检索增强从头开始进行大规模预训练,实现了模型参数的减少,同时在困惑度方面超越了标准GPT模型。 RETRO的独特之处在于,它有一个额外的编码器,旨在处理从外部知识库检索的实体特征,建立在GPT模型的基础结构之上。Izacard等人还将检索机制合并到T5架构中,在预训练和微调阶段。它使用预训练的T5来初始化编码器-解码器语言模型,并使用预训练的密集检索器Contriever,提高其复杂语言建模任务的效率。除此之外,还有一种新颖的文本生成方法,该方法模拟从预先存在的集合中复制文本片段。利用高效的矢量搜索工具,COG计算并索引文本片段的上下文有意义的表示,与RETRO相比,在问答和领域适应等领域展示了卓越的性能。标度律的出现促进了模型参数的增长,推动自回归模型进入主流。研究人员正在将检索增强生成(RAG)方法扩展到预训练的更大模型,RETRO++通过扩大模型参数同时保持或增强性能来例证这一趋势。经验证据强调了文本生成质量、事实准确性、毒性降低和下游任务熟练程度的显着提高,特别是在开放域QA等知识密集型应用中。这些结果表明,将检索机制集成到自回归语言模型的预训练中构成了一条有前途的途径,将复杂的检索技术与扩展的语言模型相结合,以产生更精确、更高效的语言生成。增强预训练的好处包括强大的基础模型,该模型在复杂性、文本生成质量和特定于任务的性能方面优于标准GPT模型,同时使用更少的参数。该方法特别擅长处理知识密集型任务,并通过专业语料库的培训促进特定领域模型的开发。

尽管如此,这种方法面临着一些挑战,例如需要大量的预训练数据集和资源,以及随着模型大小的增加而降低更新频率。尽管存在这些障碍,该方法在模型弹性方面提供了显着的优势。经过训练后,检索增强模型可以独立于外部库运行,从而提高生成速度和运行效率。所确定的潜在收益使该方法成为人工智能和机器学习领域持续调查和创新的引人注目的主题。 微调阶段检索增强生成(RAG)和微调是增强功能的强大工具大型语言模型(LLMs),两者结合可以满足更具体场景的需求。一方面,微调允许检索具有独特风格的文档,实现更好的语义表达并对齐查询和文档之间的差异。这确保了检索器的输出更适合当前的场景。另一方面,微调可以满足风格化、针对性调整的生成需求。此外,还可以使用微调来对齐检索器和生成器,以提高模型协同作用。

微调检索器的主要目标是提高语义表示的质量,这是通过使用语料库直接微调嵌入模型来实现的。通过反馈信号将检索器的功能与大型语言模型(LLMs)的偏好保持一致, 两者都可以更好地协调。针对特定的下游任务微调检索器可以提高适应性。引入与任务无关的微调目的是为了增强检索器在多任务场景中的多功能性。

微调发生器可以产生更加风格化和定制化的输出。一方面,它允许用于专门适应不同的输入数据格式。例如,微调大型语言模型(LLMs)以适应知识图的结构、文本对的结构以及其他特定结构。另一方面,通过构建指令数据集,人们可以要求型语言模型(LLMs)生成特定格式的内容。例如,在自适应迭代检索场景中,大型语言模型(LLMs)经过微调以生成有助于确定下一步行动的时间的内容。通过协同微调检索器和生成器,我们可以增强模型的泛化能力,并避免单独训练它们可能出现的过度拟合。然而,联合微调也会导致资源消耗增加。 RA-DIT提出了一个轻量级的双指令调优框架,可以有效地为任何大型语言模型(LLMs)添加检索功能。检索增强指令微调更新了大型语言模型(LLMs),指导其更有效地利用检索到的信息并忽略分散注意力的内容。尽管有其优点,但微调也有其局限性,包括需要专门的数据集进行检索增强生成(RAG)微调以及需要大量的计算资源。但是,此阶段允许根据特定需求和数据格式自定义模型,与预训练阶段,同时仍然能够微调模型的输出风格。

总之,微调阶段对于检索增强生成(RAG)模型适应特定任务至关重要,从而能够细化检索器和生成器。尽管存在资源和数据集要求带来的挑战,但该阶段增强了模型对各种任务的多功能性和适应性。因此,检索增强生成(RAG)模型的战略微调是开发高效且有效的检索增强系统的关键组成部分。

检索阶段增强

在检索增强生成(RAG)领域中,标准做法通常包括一次检索步骤后跟生成步骤,这可能会导致低效,并且对于需要多步推理的复杂问题通常不足够,因为它提供了有限的信息范围。许多研究已经针对这个问题优化了检索过程,并且我们已经在下图中总结了它们。
优化检索过程

(左)迭代检索涉及在检索和生成之间交替进行,从知识库中每一步获得更丰富和更有针对性的上下文。
(中)递归检索涉及逐渐优化用户查询并将问题分解为子问题,然后通过检索和生成不断解决复杂问题。
(右)自适应检索侧重于使检索增强生成(RAG)系统能够自主确定是否需要外部知识检索以及何时停止检索和生成

研究提出了改进检索过程的方法:

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

检索增强生成(RAG)模型中的迭代检索是一个根据初始查询和生成的文本重复收集文档的过程,为大型语言模型(LLMs)提供更全面的知识库的过程。事实证明,这种方法可以通过多次重新检索迭代提供额外的上下文参考,从而增强后续答案生成的稳健性。然而,它可能会受到语义不连续性和不相关信息积累的影响,如上图中的具有不同增强方面的代表性检索增强生成(RAG)研究的技术树,它通常依赖于 n n n个标记的序列来划分生成的文本和检索到的文档之间的边界。利用特定的数据场景、递归检索和多跳检索技术。递归检索涉及以分层方式处理和检索数据的结构化索引,这可能包括在基于此摘要执行检索之前对文档或冗长的PDF的各个部分进行摘要。随后,文档内的二次检索完善了搜索,体现了该过程的递归性质。相比之下,多跳检索旨在更深入地研究图结构数据源,提取互连信息。

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

递归检索

递归检索通常用于信息检索和自然语言处理,以提高搜索结果的深度和相关性。该过程涉及根据先前搜索的结果逐步优化搜索查询。递归检索旨在通过反馈循环逐渐收敛于最相关的信息,从而增强搜索体验。IRCoT使用思维链来引导检索过程,并根据获得的检索结果优化思维链。ToC创建了一个澄清树,系统地优化查询中的模糊部分。它在复杂的搜索场景中特别有用,用户的需求从一开始就不完全清楚,或者所寻求的信息非常专业化或细微差别。该过程的递归性质允许持续学习和适应用户的需求,通常会导致对搜索结果的满意度提高。

为了应对特定的数据场景,递归检索和多跳检索技术被一起使用。递归检索涉及使用结构化索引以层次方式处理和检索数据,这可能包括在执行基于摘要的检索之前对文档或长PDF的部分进行总结。随后,在文档内进行二次检索以优化搜索,体现了该过程的递归性质。相比之下,多跳检索旨在深入挖掘图结构化数据源,提取相互关联的信息。

自适应检索

自适应检索方法,例如Flare和Self-RAG,通过使大型语言模型(LLMs)能够主动确定检索的最佳时机和内容,从而改进了检索增强生成(RAG)框架,提高了信息检索的效率和相关性。

这些方法是大型语言模型(LLMs)在其操作中采用主动判断的更广泛趋势的一部分,就像AutoGPT、Toolformer和GraphToolformer等模型代理一样。例如,Graph-Toolformer将其检索过程分为不同的步骤,大型语言模型(LLMs)主动使用检索器,应用Self-Ask技术,并使用少数样本提示来发起搜索查询。这种主动的态度使大型语言模型(LLMs)能够决定何时搜索必要的信息,类似于代理人如何使用工具。

WebGPT集成了一个强化学习框架,以训练GPT-3模型在文本生成过程中自主使用搜索引擎。它使用特殊标记来导航这个过程,以便执行搜索引擎查询、浏览结果和引用参考文献等操作,从而通过使用外部搜索引擎扩展了GPT-3的功能。Flare通过监测生成过程的自信度(由生成术语的概率指示)来自动化定时检索。当概率低于一定阈值时,会激活检索系统来收集相关信息,从而优化检索周期。

Self-RAG引入了“反思标记”来允许模型内省其输出。这些标记有两种变体:Retrieve和Critic。模型自主决定何时激活检索,或者可以预定义的阈值触发该过程。在检索过程中,生成器通过多个段落进行片段级别的束搜索,以获得最连贯的序列。批评者的评分用于更新细分分数,并具有在推理过程中调整这些权重的灵活性,以定制模型的行为。Self-RAG的设计消除了额外分类器的需求,也不依赖自然语言推理(NLI)模型,从而简化了决策过程,决定何时启用检索机制,并提高了模型在生成准确回答方面的自主判断能力。

推理阶段增强

检索增强生成(RAG)模型的推理阶段至关重要,因为它涉及与大型语言模型(LLMs)的广泛集成。传统的检索增强生成(RAG)方法,也称为Naive RAG,涉及在此阶段合并检索内容来指导生成过程。为了克服Naive RAG的局限性,先进的技术在推理过程中引入了更多上下文丰富的信息。 DSP框架利用冻结语言模型(LM)和检索模型(RM)之间复杂的自然语言文本交换,丰富环境,从而改善生成结果。PKG方法装备大型语言模型(LLMs)知识引导模块,允许在不修改语言模型参数的情况下检索相关信息,从而实现更复杂的任务执行。CREA-ICL采用跨语言知识的同步检索来增强上下文,而RECITE通过直接从大型语言模型(LLMs)中采样段落来生成上下文。

在满足需要多步骤推理的任务的方法中可以看到这一点。 ITRG迭代地检索信息以识别正确的推理路径,从而提高任务适应性。 ITER-RETGEN遵循迭代策略,将检索和生成合并在一个循环过程中,在“检索增强生成”和“生成增强检索”之间交替。对于非知识密集型(NKI)任务,PGRA提出了一个两阶段框架,首先是一个与任务无关的检索器,然后是一个提示引导的重新排序器来选择证据并对其进行优先级排序。相比之下,IRCOT将检索增强生成(RAG)与思想链 (CoT) 方法相结合,将思想链 (CoT) 引导的检索与检索通知的思想链 (CoT) 过程交替进行,显着提高了GPT-3在各种问答任务中的性能。本质上,这些推理阶段的增强提供了轻量级,具有成本效益的替代方案,利用预训练模型的功能,无需进一步训练。主要优点是维护静态 大型语言模型(LLMs)参数,同时提供上下文相关信息以满足特定任务需求。然而,这种方法并非没有局限性,因为它需要细致的数据处理和优化,并且受到基础模型固有功能的约束。为了有效地解决不同的任务要求,该方法通常与程序优化技术结合使用,例如逐步推理、迭代检索和自适应检索策略。
检索增强生成(RAG)的增强

下游任务与评估

检索增强生成(RAG)在自然语言处理领域的快速发展和日益广泛应用,推动了对检索增强生成(RAG)模型的评估成为大型语言模型(LLMs)社区研究的重点。这项评估的主要目标是了解和优化检索增强生成(RAG)模型在不同应用场景下的性能。本部分将主要介绍检索增强生成(RAG)的主要下游任务、数据集以及如何评估检索增强生成(RAG)系统。

下游任务

检索增强生成(RAG)的核心任务仍然是问答(QA),包括传统的单跳/多跳QA、多项选择题、领域特定的QA,以及适用于检索增强生成(RAG)的长篇场景。除了QA,检索增强生成(RAG)还在不断扩展到多个下游任务,如信息提取(IE)、对话生成、代码搜索等。检索增强生成(RAG)的主要下游任务及其相应的数据集总结如下表所示。
检索增强生成(RAG)的主要下游任务及其相应的数据集

评估目标

历史上,对检索增强生成(RAG)模型的评估主要集中在其在特定下游任务中的执行上。这些评估使用了适合当前任务的已建立的度量标准。例如,问答评估可能依赖于EM和F1分数,而事实核查任务通常以准确性作为主要度量标准。BLEU和ROUGE指标也常用于评估答案的质量。像RALLE这样的工具,专门用于自动评估检索增强生成(RAG)应用程序,同样基于这些任务特定的度量标准进行评估。尽管如此,对于评估检索增强生成(RAG)模型的独特特性的研究还相对不足。主要的评估目标包括:

  • 检索质量:评估检索质量对于确定检索组件获取的上下文的有效性至关重要。使用来自搜索引擎、推荐系统和信息检索系统领域的标准度量标准来衡量检索增强生成(RAG)检索模块的性能。常用的度量标准包括点击率、平均倒数排名和归一化折损累计增益(NDCG)。
  • 生成质量:对生成质量的评估主要关注生成器从检索到的上下文中合成连贯且相关的答案的能力。这种评估可以根据内容的目标分为未标记和已标记内容。对于未标记内容,评估包括生成答案的准确性、相关性和无害性。相反,对于已标记内容,重点是模型产生的信息的准确性。此外,检索和生成质量的评估可以通过手动或自动评估方法进行。

评估方向

现代的检索增强生成(RAG)模型评估实践强调三个主要的质量分数和四个基本能力,这些共同构成了对检索增强生成(RAG)模型的两个主要目标(检索和生成)的评估。

质量分数

质量分数包括上下文相关性、答案忠实度和答案相关性。这些质量分数从不同的角度评估了检索增强生成(RAG)模型在信息检索和生成的过程中的效率。

  • 上下文相关性:评估了检索到的上下文的精确性和特异性,确保相关性并最小化与无关内容相关的处理成本。
  • 答案忠实度:确保生成的答案与检索到的上下文保持一致,避免矛盾。
  • 答案相关性:要求生成的答案直接与提出的问题相关,有效地回答核心问题。

关键能力

检索增强生成(RAG)的评估还包括四个能力,表明其适应性和效率:噪声鲁棒性、负面拒绝、信息整合和反事实鲁棒性。这些能力对于模型在各种挑战和复杂场景下的性能至关重要,对质量分数产生影响。

  • 噪声鲁棒性:评估模型处理与问题相关但缺乏实质信息的噪声文档的能力。
  • 负面拒绝:评估模型在检索到的文档中不包含回答问题所需知识时,避免回答的辨别能力。
  • 信息整合:评估模型从多个文档中综合信息以回答复杂问题的能力。
  • 反事实鲁棒性:测试模型识别和忽略文档中已知的不准确之处的能力,即使模型被告知可能存在虚假信息。

上下文相关性和噪声鲁棒性对于评估检索质量很重要,而答案忠实度、答案相关性、负面拒绝、信息整合和反事实鲁棒性对于评估生成质量很重要。下表总结了每个评估方向的具体指标。需要认识到,这些指标源自相关研究,是传统的测量方法,尚未代表对于量化检索增强生成(RAG)评估方向的成熟或标准化方法。一些评估研究还开发了专门针对检索增强生成(RAG)模型细微差别的定制指标,虽然这些指标在此处未包含。
各评估方向的具体指标

评估基准和工具

为了便于对检索增强生成(RAG)模型进行评估,提出了一系列基准测试和工具。这些工具提供了定量指标,不仅可以评估检索增强生成(RAG)模型的性能,还可以增进对模型在各个评估方面的能力的理解。著名的基准测试,如RGB、RECALL和CRUD,侧重评估检索增强生成(RAG)模型的基本能力。同时,最先进的自动化工具,如RAGAS、ARES和TruLens8,利用大型语言模型(LLMs)来评定质量分数。这些工具和基准共同构成了一个强大的框架,用于系统评估检索增强生成(RAG)模型,如下表所总结的那样。
评估基准和工具

各类检索增强生成(RAG)的对比

下图分析了各类检索增强生成(RAG)的研究。分析表明:

  • 大多数研究利用外部数据源来增强大型语言模型(LLMs)的内容
  • 迭代多轮检索相较于单轮检索更受偏好,表明迭代搜索通常能产生更好的结果,也就是说,多数方法都采用了密集型检索以确保获得高质量的候选文档
  • 与预检索阶段修改数据集相比,更多的研究致力于优化查询策略以提升检索性能
  • 研究显著地聚焦于优化检索阶段,突出了其在研究中的核心作用。
  • 很少有研究专注于生成阶段的个性化定制,这表明这是未来探索的一个潜在领域。

总体而言,虽然检索增强生成(RAG)的目标是提升大型语言模型(LLMs)的回答质量,但更多的努力被投向了提升检索方面。
各类检索增强生成(RAG)的对比
检索增强生成(RAG)中的检索器和生成器是核心组件。下图总结了常见研究中使用的检索器和生成器。尽管大多数生成器采用了先进的语言模型,但由于BM25的高效率,仍有相当数量的检索器使用了它。检索方法是检索增强生成(RAG)中的关键方面,这突出了探索提升检索性能而不牺牲效率的重要性。同样,很少有研究采用了如LLaMA2、GPT-3.5或GPT-4这样强大的大型语言模型(LLMs)作为其生成器。像T5这样的大型语言模型(LLMs)虽然仍然流行,但像BERT和Transformers这样的基础模型在2023年却很少使用。与生成器相比,显然很少有基于信息检索的大型语言模型(LLMs)被用作检索器,这表明未来发展这类模型是一个有希望的方向。检索器和生成器

检索增强生成(RAG)的挑战

尽管检索增强生成(RAG)技术取得了可观的进展,但仍然存在一些需要深入研究的挑战。本部分的内容将介绍检索增强生成(RAG)面临的挑战和未来的研究方向。

长上下文

随着相关研究的深入,大型语言模型(LLMs)的上下文不断扩展。目前,大型语言模型(LLMs)可以轻松处理超过200,000个Token的上下文。这种能力意味着长文档问答,以前依赖于检索增强生成(RAG),现在可以直接将整个文档纳入提示中。这也引发了对于当大型语言模型(LLMs)不受上下文限制时,是否仍需要检索增强生成(RAG)的讨论。事实上,检索增强生成(RAG)仍然发挥着不可替代的作用。一方面,一次性为大型语言模型(LLMs)提供大量上下文将显著影响其推理速度,而分块检索和按需输入可以显著提高操作效率。另一方面,基于检索增强生成(RAG)的生成可以快速定位大型语言模型(LLMs)的原始参考文献,帮助用户验证生成的答案。整个检索和推理过程是可观察的,而完全依赖长上下文的生成仍然是一个黑盒子。相反,上下文的扩展为检索增强生成(RAG)的发展提供了新的机遇,使其能够解决更复杂的问题和需要阅读大量材料来回答的综合或摘要性问题。在超长上下文的背景下开发新的检索增强生成(RAG)方法是未来的研究趋势之一。

鲁棒性

在检索过程中存在噪声或矛盾信息可能会对检索增强生成(RAG)的输出质量产生不利影响。这种情况被形象地称为“错误信息比没有信息更糟糕”。提高检索增强生成(RAG)对这种对抗性或反事实输入的抵抗力正在获得研究动力,并成为关键的性能指标。Cuconasu等人分析了应该检索哪种类型的文档,评估文档与提示的相关性、其位置以及包含在上下文中的数量。研究结果表明,包含不相关的文档意外地可以使准确性提高超过30%,与最初的降低质量的假设相矛盾。这些结果强调了开发专门的策略将检索与语言生成模型整合的重要性,突显了对检索增强生成(RAG)的鲁棒性进行进一步研究和探索的需求。

混合方法

将检索增强生成(RAG)与微调相结合正在成为一种领先的策略。确定检索增强生成(RAG)和微调的最佳集成方式,无论是顺序、交替还是通过端到端联合训练,并且如何利用参数化和非参数化的优势,这些都是值得探索的领域。另一个趋势是将具有特定功能的小型语言模型(SLMs)引入检索增强生成(RAG),并通过检索增强生成(RAG)系统的结果进行微调。例如,CRAG训练了一个轻量级的检索评估器,用于评估查询的检索文档的整体质量,并根据置信度水平触发不同的知识检索操作。

扩展

端到端的检索增强生成(RAG)模型和基于检索增强生成(RAG)的预训练模型仍然是当前研究的焦点之一。这些模型的参数是其中的关键因素之一。虽然对于大型语言模型(LLMs)已经建立了扩展规律,但其适用性于检索增强生成(RAG)仍然不确定。像RETRO++这样的初步研究已经开始解决这个问题,但是检索增强生成(RAG)模型的参数数量仍然落后于大型语言模型(LLMs)。一个有趣的可能性是逆扩展规律,即较小的模型表现优于较大的模型,这值得进一步研究探索。

适用于生产环境的检索增强生成(RAG)

检索增强生成(RAG)的实用性和与工程需求的一致性促进了其应用。然而,提高检索效率,改进在大型知识库中的文档回收率,以及确保数据安全性(例如,防止大型语言模型(LLMs)无意中泄露文档来源或元数据)是尚待解决的关键工程挑战。

检索增强生成(RAG)生态系统的发展受到其技术栈的进展的极大影响。随着ChatGPT的出现,像LangChain和LLamaIndex这样的关键工具迅速受到欢迎,提供了广泛的与检索增强生成(RAG)相关的API,并成为大型语言模型(LLMs)领域中必不可少的工具。新兴的技术栈虽然在功能上不如LangChain和LLamaIndex丰富,但通过其专门化的产品而脱颖而出。例如,Flowise AI优先采用低代码方法,允许用户通过用户友好的拖放界面部署包括检索增强生成(RAG)在内的AI应用。其他技术,如HayStack、Meltano和Cohere Coral,也因其对该领域的独特贡献而受到关注。除了以AI为重点的供应商,传统的软件和云服务提供商也在扩大其产品范围,包括以检索增强生成(RAG)为中心的服务。Weaviate的Verba 11专为个人助理应用程序而设计,而亚马逊的Kendra 12提供智能企业搜索服务,使用户能够使用内置连接器浏览各种内容库。在检索增强生成(RAG)技术的发展中,有一个明显的趋势,即朝着不同的专业化方向发展,例如:

  • 定制化:调整检索增强生成(RAG)以满足特定需求
  • 简化:使检索增强生成(RAG)更易于使用,以减少初始学习曲线
  • 专业化:优化检索增强生成(RAG)以更好地服务于生产环境。

检索增强生成(RAG)模型和其技术栈的相互增长是显而易见的,技术进步不断为现有基础设施建立新的标准。反过来,技术栈的改进推动了检索增强生成(RAG)能力的发展。检索增强生成(RAG)工具包正在融合成一个基础技术栈,为先进的企业应用奠定基础。然而,一个完全集成、综合的平台概念仍然在未来,需要进一步的创新和发展。

多模态RAG

检索增强生成(RAG)已经超越了最初基于文本的问答范围,拥抱了多样化的模态数据。这种扩展催生了创新的多模态模型,将RAG的概念应用于各个领域:

  • 图像。RA-CM3是一种先驱性的多模态模型,可以检索和生成文本和图像。BLIP-2利用冻结的图像编码器和大型语言模型(LLMs)进行有效的视觉语言预训练,实现Zero-shot图像到文本的转换。"在写作之前可视化"方法利用图像生成来引导语言模型的文本生成,在开放式文本生成任务中显示出潜力。
  • 音频和视频:GSS方法检索和拼接音频片段,将机器翻译的数据转换为语音翻译的数据。UEOP通过整合外部的离线策略将语音转文本转换引入端到端的自动语音识别,实现了重大的进步。此外,基于KNN的注意力融合利用音频嵌入和语义相关的文本嵌入来改进ASR,从而加速领域适应。Vid2Seq通过专门的时间标记增强了语言模型,有助于预测事件边界和统一输出序列中的文本描述。
  • 代码:RBPS通过编码和频率分析,通过检索与开发人员目标相符的代码示例,在小规模学习任务中表现出色。这种方法在测试断言生成和程序修复等任务中表现出有效性。对于结构化知识,CoK方法首先从知识图谱中提取与输入查询相关的事实,然后将这些事实作为提示集成到输入中,在知识图谱问答任务中提高性能。

总结

本文总结如下图所示,强调了检索增强生成(RAG)通过将语言模型的参数化知识与外部知识库的大量非参数化数据相结合,显著提升了大型语言模型(LLMs)的能力。调查展示了检索增强生成(RAG)技术在许多不同任务上的应用和演变。分析概述了检索增强生成(RAG)框架内的三种发展范式:Naive RAG、Advanced RAG和Modular RAG,每一种都代表了对前身的渐进增强。检索增强生成(RAG)与其他AI方法(如微调和强化学习)的技术整合进一步扩展了其能力。尽管检索增强生成(RAG)技术取得了进展,但仍有研究机会来改进其鲁棒性和处理扩展上下文的能力。检索增强生成(RAG)的应用范围正在扩展到多模态领域,将其原则应用于解释和处理图像、视频和代码等各种数据形式。这种扩展凸显了检索增强生成(RAG)在AI部署中的重要实际影响,引起了学术界和工业界的兴趣。检索增强生成(RAG)生态系统的增长可由以检索增强生成(RAG)为中心的AI应用的兴起和支持性工具的不断发展所证实。随着检索增强生成(RAG)的应用领域不断扩大,有必要完善评估方法论,以跟上其演变的步伐。确保准确和代表性的性能评估对于充分捕捉检索增强生成(RAG)对AI研究和开发社区的贡献至关重要。
RAG生态系统总结

参考文献:
[1] Yunfan Gao, Yun Xiong, Xinyu Gao, Kangxiang Jia, Jinliu Pan, Yuxi Bi, Yi Dai, Jiawei Sun, Meng Wang, and Haofen Wang[arXiv]. Retrieval-Augmented Generation for Large Language Models: A Survey. 2312.10997v5.
[2] Penghao Zhao, Hailin Zhang, Qinhan Yu, Zhengren Wang, Yunteng Geng, Fangcheng Fu, Ling Yang, Wentao Zhang, Jie Jiang, Bin Cui[arXiv]. Retrieval-Augmented Generation for AI-Generated Content: A Survey. 2402.19473v4
[3] Yizheng Huang, Jimmy X. Huang[arXiv]. Survey on Retrieval-Augmented Text Generation for Large Language. 2404.10981v1
[4] Yucheng Hu, Yuxing Lug[arXiv]. RAG and RAU: A Survey on Retrieval-Augmented Language Model in
Natural Language Processing. 2404.19543v1
[5] Yujuan Ding, Wenqi Fan, Liangbo Ning, Shijie Wang, Hengyun Li, Dawei Yin, Tat-Seng Chua, Qing Li[arXiv]. A Survey on RAG Meets LLMs: Towards Retrieval-Augmented Large Language Models. 2405.06211v1

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

von Neumann

您的赞赏是我创作最大的动力~

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

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

打赏作者

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

抵扣说明:

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

余额充值