大模型的检索增强生成--综述

前言

大语言模型虽然已经在很多方面表现得非常优秀,但是还存在一些其他的问题,如幻觉,知识过时等。检索增强生成(RAG)则是直接从外部的知识库里面读取相关的数据从而可以有效的解决上述的问题,这篇论文介绍了RAG发展的相关范式,介绍了RAG框架的基本内容。
论文链接:Retrieval-Augmented Generation for Large Language Models: A Survey
相关资源:https://github.com/Tongji-KGLLM/RAG-Survey

摘要

大模型虽然表现出了非常强大的能力,但也遇到了如幻觉、知识过时及推理过程不透明以及无法追踪等问题。而检索增强生成则可以通过整合来自外部知识库的知识从而有效的解决上述问题,并且可以提高生成的准确性和可信度,特别是对于知识密集型任务,能够允许持续的知识更新和特定领域信息的集成。RAG能够将大模型的内在知识与外部数据库的庞大的、动态的存储库结合起来,从而能够有效的解决上面的问题。

引言

大语言模型虽然已经取得了显著的成功,但仍然还面临着很大的局限性,特别是在特定领域或者知识密集型的任务中。在处理超出其训练数据或需要当前信息的查询时会产生“幻觉”。RAG可以通过语义相似度从外部知识库中检索相关的文档从而增强LLM对相应数据的处理能力。通过引用外部知识库,RAG能够有效地减少生成事实不正确的内容的答案。通过将RAG与LLM进行集成已经有了非常广泛的应用。RAG近年来发展非常迅速,具体的发展内容可以参照下图。
在这里插入图片描述
RAG的发展呈现出了几个不同的阶段特征,最开始,RAG的诞生与Transformer架构的兴起有关,主要专注于通过预训练模型整合额外的知识来增强语言模型,早期的特点是改进预训练技术;随着ChatGPT的到来标志着进入到了一个关键时期,因为大模型已经展现出了非常强大的上下文学习(ICL)能力,因此RAG的研究转向为LLM提供更好的信息,以回答推理阶段更复杂和知识密集型的任务,这导致了RAG研究的快速发展。而随着研究的进展,RAG的增强不再局限于推理阶段,而是开始更多的加入了LLM的微调技术。

这篇论文主要做了如下工作:

  • 首先对RAG方法进行了全面且系统的回顾,对发展过程进行了相应的总结,包括了简单RAG、高级RAG和模块化RAG
  • 确定并讨论了RAG过程的核心技术,特别关注“检索”、“生成”和“增强”等方面,并深入研究了它们的协同作用,阐明了这些组件如何复杂地协作形成一个有内凝聚力和有效的RAG框架
  • 总结了RAG当前的评估方法,概述了评估目标和指标,以及当前的评估基准和工具。此外,还对RAG未来的发展方向进行了评估,强调了潜在的增强,以及对当前的挑战。

RAG的背景

RAG发展目前经过了三个不同的阶段,分别为简单RAG、高级RAG和模块化RAG,具体内容可以参照下图。虽然简单RAG具有较低的成本效益并且性能超过了本地的LLM,但还是有一些局限性。高级RAG和模块化RAG的开发就是为了解决这些问题。
在这里插入图片描述

简单RAG

简单RAG是最早的研究方法,自从ChatGPT被广泛应用后不久就得到了重视,简单RAG遵循传统的流程,包括索引、检索和生成,也被称为“检索-阅读”框架。

索引:首先是清洗和提取不同格式的原始数据,然后将其转换为统一的纯文本格式。为了适应语言模型的上下文限制,文本被分割为更小的、可理解的块。然后使用嵌入模型将块编码成向量还表示,并存储到向量数据库当中。这一步对后续的检索阶段进行有效性的搜索至关重要。

检索:在收到用户查询后,RAG系统会使用索引阶段使用的相同编码模型,将查询转换为向量表示。然后系统会计算查询张量与索引语料库中语块向量之间的相似度得分。系统会优先所有与查询相似度最高的K个语块。这些语块随后会被用在提示符中作为扩展的上下文。

生成:所提出的查询和所选定的文档被合成为一个连贯的提示,而大模型的任务就是对此作出回应,模型回答的方法可根据特定任务的标准而有所不同,允许它利用其固有的参数知识或限制其UI所提供文档中包含的信息作出限制性回答。

简单RAG有如下比较明显的缺点:

  • 检索挑战:检索阶段经常需要提高精确度和召回率,导致选择错位或不想管的信息块、以及丢失关键信息
  • 生成困难:在生成响应时,模型可能会遇到幻觉问题,即生成的内容与检索到的上下文不符。这一阶段还可能在输出时也会出现不相关、毒性或者偏差,从而降低响应的质量和可靠性
  • 增强障碍:将检索到的信息与不同的任务进行整合可能具有一定的挑战性,有时会导致脱节或不连贯的输出。当从多个来源检索到类似信息时,这一过程也有可能会遇到冗余,从而导致重复性的回答。确定不同段落的意义和相关性,并确保风格和音调的一致性都增加了工作的复杂性。面对复杂地问题,基于原始查询的单词检索可能不足以获取足够的上下文信息。

此外,还有人担心生成模型可能会过度以来增强信息,导致输出结果只是重复检索到的内容,而没有增加有见地的或合成的信息。

高级RAG

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

  • 预检索过程:这一阶段重点是优化索引结构和原始查询。优化索引的目标是提高索引内容的质量。主要包括了以下策略:提高数据粒度、优化索引结构、添加元数据、优化排列和混合检索。而查询优化的目标是使用户的原始问题更清晰、更适合检索任务。常见的方法包括查询重写、查询转换、查询扩展等技术。
  • 后检索过程:在检索到相关的上下文后,将其与查询有效的整合至关重要。后检索过程的主要方法是重新排序信息块和压缩上下文。对检索到的信息重新排序,以将最相关的内容重新定位到提示符的边缘是一个关键的策略。将所有相关文档直接输入LLM可能会导致信息过载,稀释对不相关内容的关键细节的关注。为了减轻这种情况,所有的工作主要集中在选择基本信息、强调关键部分以及缩短要处理的上下文。

模块化RAG

模块化RAG架构超越了前两种RAG范式,具有更强的适应性和多功能性。采用了多种策略来改进其组件,例如为相似性搜索添加搜索模块,以及通过微调完善检索器。为应付特定挑战,还引入了重组RAG模块和重新安排RAG管道等方法。向模块化RAG方法的转变正在变得越来越普遍,这种方法既支持顺序处理,也支持各组成部分端到端进行训练。尽管模块化RAG与众不同,但它件立建立在简单RAG和高级RAG的基本原则上,表明了RAG系列的进步和完善。

(1)新模块:模块化RAG框架引入了额外的专用组件来增强检索和处理能力。搜索模块可适应特定场景,使用LLM生成的代码和查询语言,可以在搜索引擎、数据库和知识图谱等各种数据源之间进行直接搜索。RAGFusion通过使用多查询策略来解决传统的搜索限制,将用户查询扩展到不同的视角,利用并行向量搜索和只能重新排序来发现显性知识和变革性知识。记忆模块利用LLM的记忆来指导搜索,创建一个无限制的记忆库,通过迭代式自我增强,使文本域数据分布更加一致。RAG系统中的路由导航通过不同的数据源,为查询选择最佳路径。预测模块旨在通过LLM生成上下文,确保相关性和准确性,从而减少冗余和噪音。最后,任务适配器模块为各种下游任务定制RAG,自动对零样本学习的输入进行提示检索,并通过少样本学习生成特定任务的检索器。这种全面的方法不仅简化了检索过程,还提高了检索到的信息的质量和相关性,以更高的精度和灵活性满足各种任务和查询。

(2)新模式:模块化RAG允许模块替换或重新配置,以应对特定的挑战,因此具有出色的适应性。这超越了以简单的”检索“和”读取”机制为特征的原始和高级RAG的固定结构。此外,模块化RAG还可通过集成新模块或调整现有模块之间的交互流程来扩展这种灵活性,从而增强其在不同任务中的适应性。

重写-检索-阅读模型等创新技术利用LLM的能力,通过重写模块和LM反馈机制更新重写模型来完善检索查询,从而提高任务性能。同样,像生成-读这样的方法用LLM生成的内容取代了传统的检索,而生成-读强调从给模型权重中进行检索,增强了模型处理知识密集型任务的能力。混合检索策略集成了关键字、语义和向量搜索,以满足不同的查询需求。此外,使用子查询和假设文档嵌入试图通过关注答案与真实文档之间的相似度来提高检索相关性。

模块排列和交互的调整,如演示-搜索-预测框架和迭代生成的迭代检索-读取-检索-读取流程,展示了动态使用模块输出来增强另一个模块的功能,说明了对增强模块协同作用的深刻理解。模块化RAG流的灵活协调通过FLARE和Self-RAG等技术展示了自适应检索的优势。这种方法通过评估不同场景的检索的必要性,超越了固定的RAG检索路程。灵活架构的另一个好处是RAG系统可以更容易地与其他技术(如微调和强化学习)集成。例如,这可能包括微调检索器以获得更好的检索结果,微调生成器以获得更个性化的输出,或者参与协作微调。

RAG和微调

由于LLM的应用越来越普遍,因此增强LLM也引起了广泛关注。在LLM的优化方法中,RAG通常与微调和提示工程进行对比。每种方法都有不同的特征,因此可以使用象限图从外部知识要求和模型适应要求两个维度来说明三种方法之间的差异,具体的对比图如下所示。
在这里插入图片描述
提示工程是利用模型的固有功能,将外部知识和模型微调的必要性降到最低。RAG可以看做是为信息检索提供定制的教科书,是精确信息检索任务的理想选择。相比之下,微调好比随着时间的推移不断内化知识,适用于需要复制特定结构、风格和格式的场景。

RAG在动态环境中表现出色,可提供实时知识更新并有效利用外部知识源,具有很高的可解释性,不过它的延迟比较高,并且还会有一些道德问题。另一方面,微调则更为静态,需要进行训练更新,但可以对模型的行为和放个进行深度定制,需要大量的计算资源用于数据集的准备和训练。虽然可以减少幻觉问题,但在处理陌生数据时可能会面临挑战。

在对不同主题的各种知识密集型任务的性能进行的多次评估中,发现虽然无监督微调有一定的改进,但对于训练过程中遇到的现有知识还是全新的知识,RAG的性能始终由于无监督微调的方法。此外,研究发现LLM很难通过无监督的微调来学习新的事实信息。RAG和微调之间作出选择主要取决于应用环境中对数据动态、定制和计算能力的具体需求。RAG和微调并不是互相排斥的,它们之间可以相互补充,在不同层次上提高模型的能力。在某些情况下,两者结合使用可能会带来最佳的性能。涉及RAG和微调的优化过程可能需要多次迭代才能够获得令人满意的结果。

检索

对RAG而言,从数据源高效检索相关的文档是至关重要的。检索过程中主要包含了如下几个问题:检索源、检索粒度、检索预处理及相应模型的选择。

检索源

RAG依靠外部知识来增强LLM,而检索源的类型和检索单元的粒度都会影响最终生成结果。

(1)数据结构

最初,文本是检索的主流来源。随后,检索源扩展到半结构化数据(PDF)和结构化数据(知识图谱),以增强检索效果。除了从原始外部来源进行检索外,最近的研究趋向于利用LLM自身生成的内容进行检索和增强。

文本等非结构化数据是应用得最广泛的检索源,主要来自于语料库,如维基百科。除此之外,常见的非结构化数据还包括语言文本和特定领域数据(如医学和法律领域)。

半结构化数据,通常是指包含文本和表格信息组合的数据,如PDF。处理半结构化数据会给传统的RAG系统带来挑战。首先,文本分割过程可能会无意中分离表格,导致检索过程中的数据损坏。其次,将表格纳入数据会使语义相似度搜索变得复杂。在处理半结构化数据时,一种方法是利用LLM的代码功能,对数据库当中的表格执行Text2SQL查询。或者也可以将表格转换为文本格式,以便使用基于文本的方法进行进一步分析。而这两种方法都不是最优的解决方案。

结构化数据,如知识图谱等通常都是经过验证能够提供更精确的信息。如KnowledGPT可以生成知识库所搜查询,并将知识存储在个性化的知识库中,从而提高RAG模型的知识丰富度。针对LLM在理解和回答文本图形问题方面的局限性,G-Retriever将图神经网络(GNNs)、LLM和RAG整合在了一起,铜鼓哦对LLM的软提示来增强图形理解和问题解答能力,并采用有奖励收集的斯坦纳树(PCST)优化问题进行目标图检索。相反,建立、验证和维护结构化数据库需要付出额外的努力。

LLM生成的内容:针对RAG中外部辅助信息的局限性,一些研究开始侧重于利用LLM的内部知识,如SKR将问题分类为已知和未知,有选择性地应用检索增强功能。GenRead使用LLM生成器取代了检索器,发现LLM生成的上下文往往包含更准确的答案,因为它与因果语言建模的预训练目标更一致。Selfmen通过检索增强生成器迭代创建一个无限制的记忆池,使用记忆选择器来选择原始问题的双重问题的输出,从而自我增强生成模型。这些方法强调了RAG创新数据源利用的广度,努力提高模型性能和任务效率。

(2)检索粒度

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

在文本中,检索粒度从细到粗可以分为词元(token)、短语(Phrase)、句子(Sentence)、命题(Proposition)、块(Chunks)、文档(Document)。其中DenseX提出使用命题作为检索单元的概念。命题被定义为文本中的原子表达式,每个表达式都包含一个独特的事实片段,并以简单、自足的自然语言格式呈现,这种方法旨在提高检索精度和相关性。在知识图谱上,检索粒度包括试题、三元组和子图。检索的粒度还可适应下游任务,如检索推荐项目中的句子对和项目ID。

索引优化

在索引阶段,将对文档进行处理、分割并将其转换为词嵌入的格式,然后存储到向量数据库当中。索引的构建质量决定了在检索阶段是否可以获得正确的上下文。

(1)分块策略

最常见的方法是先找固定的标记数(如100、256、512)将文档划分为若干块。较大的块可以捕捉到更多的上下文,但也会产生更多的噪声,同时需要更长的处理时间和更高的成本。虽然较小的数据块可能无法完全表达必要的上下文信息,但它们的噪声确实更小。然而,数据块会导致句子内部的阶段,促使对递归分割和滑动窗口方法进行优化,通过在多个检索过程中合并全局相关信息来实现分层检索。而这些方法仍然无法在语义完整性和上下文长度之间取得平衡。因此有人提出了Small2Big等方法,即以句子(小)作为检索单元,将前后句子作为(大)上下文提供给LLM。

(2)元数据附件

可以使用页码、文件名、作者、类别时间戳等元数据信息来丰富数据块。随后,可以根据这些元数据对检索进行过滤,从而限制检索的范围。在检索的过程中为文件时间戳分配不同的权重,可以实现具有时间感知能力的RAG,确保了知识的新鲜度,避免了过时的信息。除了从原始文件中提取元数据以外,还可以人为地构建元数据。如添加段落摘要,引入假设性的问题,这种方法也被称为反向HyDE。具体来时,使用LLM生成文档可以回答的问题,然后在检索过程中计算原始问题与假设问题之间的相似度,以减小问题和答案之间的语义差距。

(3)结构索引

增强信息检索的一种有效方法就是为文档建立层次结构。通过建立这种结构,RAG系统可以加快相关数据的检索和处理。

层次索引结构:文件以子关系排列,块链接到他们。数据摘要存储在每个节点上,有助于快速遍历数据,并帮助RAG系统确定提取那些块。这种方法还能减少因块提取问题造成的错觉。

知识图谱索引:利用知识图谱构建文件的层次结构有助于保持一致性。它可以勾勒出不同概念与实体之间的练习,显著的减少产生错觉的可能性。另一个优点是将信息检索过程转化为LLM可以理解的指令,从而提高知识检索的准确性,使LLM能够产生上下文一致的相应,从而提高了RAG系统的整体效率。为了获取文档内容和结构之间的逻辑关系,KGP提出了一种利用知识图谱在多个文档之间建立索引的方法。这种知识图谱由节点(表示文档中的段落或结构,如页面和表格)和边(表示段落之间的语义/词汇相似性和文档结构中的关系)组成,可以有效的解决多文档环境中的知识检索和推理问题。

查询优化

简单RAG的主要挑战之一是直接依赖用户的原始查询作为检索的基础,提出一个准确而清晰的问题是很困难的,不谨慎的查询会导致检索效果不佳。有时,问题本身是很复杂的,语言的组织也不严谨。另一个困难在于语言复杂性的模糊性。语言模型在处理专业词汇或具有多重含义的模糊缩略语时往往会很困难。

(1)查询扩展

将单个查询扩展为多个查询可丰富查询呢绒,提供进一步的上下文,以解决缺乏具体细微差别的问题,从而确保生成的答案具有最佳相关性。

多重查询:通过使用提示工程通过LLM扩展查询,这些查询就可以并行执行。查询的扩展不是随机的,而是经过精心设计的。

子查询:子问题规划过程是指生成必要的子问题,以便结合上下文全面回答原问题。通过添加相关上下文的过程原则上类似于查询扩展。具体来说,一个复杂的问题可以用从少到多的提示方法,将一个复杂的问题分解成一系列较简单的子问题。

验证链:扩展查询通过LLM验证,已达到减少幻觉的效果。经过验证的扩展查询通常具有更高的可靠性。

(2)查询转换

核心理念是根据转换后的查询而不是用户的原始查询来检索数据块。

查询重写:对于LLM的检索而言,原始查询并不总是最优的查询,尤其是在现实场景中。因此可以提示LLM重写查询。除了使用LLM进行查询重写之外,还可以使用专门的小语言模型,如RRR在淘宝上实现的查询重写方法被称为BEQUE,显著提高了对长尾查询的召回效果,导致GMV上升。

另一种查询转换的方法是使用提示工程,让LLM基于原始查询生成一个查询,用于后续的检索。如HyDE构造了假设文档(原始查询的假定答案)。它侧重于答案与答案之间的嵌入相似度,而不是寻求答案或查询的嵌入相似性。使用后退提示方法,对原始查询进行抽象,生成一个高级概念问题(后退问题)。在RAG系统中,回溯问题和原始查询都用于检索,检索结果都将作为语言模型答案生成的基础。

(3)查询路由

根据不同的查询,路由到不同的RAG管道,这适用于针对不同场景而设计的通用RAG系统。

元数据路由器/过滤器:第一步是从查询中提取关键字(实体),然后根据关键字和块中的元数据进行过滤,从而缩小搜索范围。

语义路由器是另一种利用查询语义信息进行路由的方法。当然也可以采用混合路由方法,将语义方法和基于元数据的方法结合起来,增强查询路由功能。

词嵌入

在RAG中,检索是通过计算问题和文档快的嵌入之间的相似度来实现的,其中嵌入模块的语义表达能力起着关键作用。这主要包括一个稀疏编码器和一个密集的检索器。近期的研究 引入了注明的嵌入模型,如AngIE、Voyage、BGE等,这些模型都受益于多任务指令微调。不管那种嵌入模型,都没有放之四海而皆准的答案。不过,一些特定的模型更适合特定的用例。

(1)Mix/hybrid 检索:稀疏和密集嵌入方法捕捉不同的相关性特征,并通过利用互补的相关性信息相互受益。例如,稀疏检索模型可用于为模型训练密集检索模型提供出驶搜索结果。此外,还可以利用预训练语言模型来学习术语权重,以增强稀疏检索能力。具体来说,还证明了稀疏检索模型可以增强密集检索模型的零样本检索能力,并帮助密集检索器处理包含函件实体的查询,从而提高模型的鲁棒性。

(2)微调嵌入模型:在上下文与预训练预料严重不符的情况下,可以在自己对应领域数据集上对嵌入模型进行微调就变得至关重要,这样可以减少这种差异。除了补充领域知识外,微调的另一个目的是对齐检索器和生成器。如,使用LLM的结果作为微调的监督信号,称为LSR(LM监督检索器)。同时利用LLM可以作为少样本查询生成器,用来创建特定任务检索器,就可以解决监督微调方面的难题,特别是在数据缺失的领域。另一个方法可以利用LLM生成多个下游任务的奖励信号。检索器通过两种监督信号进行微调:数据集的硬标签和LLM的软奖励。这种双信号方法促进了更有效的微调过程,使嵌入模型可以适应各种下游应用。此外,收到RLHF的启发,利用基于LM的反馈,可以通过强化学习来对检索器进行增强。

适配器

微调模型可能会带来挑战,如通过API集成功能或者解决由有限的本地计算资源产生的约束。因此,一些方法选择采用外部适配器来帮助其对齐。

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

生成

在检索之后,直接将检索到的信息输入LLM以回答问题并不是一个好的做法。下面将从两个方面介绍相关的调整:调整检索内容和调整LLM。

语境整理

冗余的信息可能会干扰LLM的最终生成,过长的上下文也会导致LLM出现“迷失在中间”的问题。和人类一样,LLM往往只关注长文本的开头和结尾,而忘记中间部分。因此,在RAG系统中,我们通常需要进一步处理检索到的内容。

(1)重新排序

重新排序从根本上对文档块进行了排序,首先突出最相关的结果,从而有效减少整个文档库,实现信息检索的双重目的,即充当增强器,又充当过滤器,为更精确的语言模型提供加更精细化的输入信息。重新排序既可以使用基于规则的方法,也可以使用基于模型的方法。

(2)语境选择/压缩

在RAG的流程中,一个常见的误解是认为检索尽可能多的相关文件并将它们串联起来形成一个冗长的检索提示是有意的。而过多的上下文会带来更多噪音,削弱LLM对关键信息的感知。

可以使用小语言模型来检测和去除不重要的表级,将其转化为一种人类难以理解但LLM却能够很好理解的形式。这种方法提供了一种直接而实用的即时压缩方法,无需对LLM进行额外的训练,同时兼顾了语言完整性和压缩率。PRCA通过训练一个信息提取器解决了这个问题。同时RECOMP采用了一种类似的方法,使用对比学习荀兰一个信息凝聚器。每个训练数据点由一个正样本和五个负样本组成,编码器在整个过程中使用对比损失进行训练。

除了压缩上下文以外,减少文档数量也有助于提高模型答案的准确性。如“过滤-重排”范式,结合了大模型和小模型的优点。在这种模式中,小模型充当过滤器,大模型则用作重新排序代理。研究表明,指示大模型对小模型识别出的具有挑战性的样本进行排序,可以有效改善各种信息抽取任务。另一种直接有效的方法是让LLM在生成最终答案之前对检索内容进行评估。这可以让LLM通过LLM评判过滤掉相关性较差的文档。

大模型微调

根据场景和数据特征对LLM进行有针对性的微调,可以取得更好的效果。这也是使用内部LLM的最大优势之一。当LLM缺乏待定领域的数据时,可以通过微调为LLM提供额外的知识。微调的另一个好处是能够调整模型的输入和输出。例如,它可以使LLM适应特定的数据格式,并按照提示生成特定样式的响应。对于设计结构化数据的检索任务,SANTA框架实现了一个三方训练的方案,以有效囊括结构和语义的细微差别。初始阶段侧重于检索器,利用对比学习来完善查询和文档嵌入。

通过强化学习是LLM输出与人类或者检索器的偏好相一致是一种可行的方法。例如,人工标注最终生成的答案,然后通过强化学习提供反馈。除了与人类偏好保持一致外,还可以与微调模型与检索器的偏好保持一致。当无法获得功能强大的专有模型或参数较大的开源模型是,一种简单有效的方法是提炼功能更强大的模型(如GPT-4)。LLM的微调看也可以与检索器的微调协同进行,以调整偏好。

RAG的增量过程

在RAG领域,标准的做法往往是先进行单一检索(一次),然后再生成,这可能会导致效率低下,有时对于需要多步推理的复杂问题来说通常是不够的,因为它提供的信息范围有限。针对这一问题,许多研究对检索过程进行了优化,具体的内容可以参照下图。
在这里插入图片描述

迭代检索

迭代检索是一个根据初始查询和迄今为止生成的文本反复搜索知识库的过程,为LLM提供更全面的知识库。这种方法可以通过多次检索提供额外的上下文参考,从而增强后续答案生成的稳健性。不过,这种方法可能会受到语义不连贯和无关信息积累的影响。ITERRETGEN采用了一种协同方法,利用“检索增强生成”和“生成检索增强”来完成需要再现特定信息的任务。该模型利用作为检索相关知识的上下文基础,这反过来又有利于再后续迭代中生成改进的响应。

循环检索

循环检索通常用于信息检索和NLP,以提高搜索结果的深度和相关性。这一过程包括根据以前的搜索结果和反复改进搜索查询。循环检索的目的是通过反复循环逐步收敛于最相关的信息来增强搜索体验。IRCoT使用思维连来指导搜索过程,并根据获得的检索结果完善思维连。ToC创建了一个澄清树,系统地优化了查询中的模糊部分。在复杂的搜索场景中特别有用,即用户的需求从一开始就不完全明确,或者所搜索的信息是高度专门化或者细微差别较大。这个过程中循环的性质允许不断学习和调整以适应用户的需求,从而提高搜索结果的满意度。
针对特定的数据场景,循环检索和多跳检索技术通常结合起来一起使用。循环检索采用结构化索引,以分层方式处理和检索数据,其中可能包括在根据摘要进行检索前,对文档或冗长的PDF文件的内容进行总结。随后,文档中的二次检索会完善搜索,体现了这一过程的循环性质。相比之下,多跳检索的设计是为了深入研究图结构的数据源,提取相互关联的信息。

自适应检索

自适应检索方法能够使LLM主动确定检索的最佳时机和内容,从而提高获取信息的效率和相关性。LLM在其操作过程中采用主动判断是更广泛的一个趋势。如Graph-Toolformer将其检索过程划分为不同的步骤,其中LLMs会主动使用检索器、应用Self-Ask技术并使用少量提示来启动搜索查询。这种主动的姿态允许LLM决定合适搜索必要信息,就像agent如何使用工具一样。

WebGPT集成了一个强化学习的框架,在文本生成过程中自主使用搜索引擎训练GPT-3模型。在这个过程中使用特殊的标记来进行导航,以方便搜索引擎查询、浏览结果和引用参考文献等操作,从而通过使用外部搜索引擎扩展GPT-3的功能。Flare通过监控生成过程的可信度来自动进行时序检索。当概率低于某个阈值时,检索系统就会启动,收集相关信息,从而优化检索周期。Self-RAG引入了“反思标记”,允许模型反思其输出。这些标记有两种类型“检索”和“批评”。模型可自主决定何时激活检索,或者由预定义的阈值触发器检索过程。在检索过程中,生成器会对多个片段进行片段级约束搜索,以得出最连贯的序列。批评分数用于更新细分分数,在推理过程中可以灵活调整这些权重,从而调整模型的行为。Self-RAG的设计无需额外的分类器,也无需以来自然语言推理模型,从而简化了何时使用检索机制的决策过程,并提高了模型在生成准确回复时的自主判断能力。

任务和评估

RAG在nlp领域的快速发展和日益增长的应用,推动了RAG模型的评估成为LLM社区研究的前沿。评估的主要目的是理解和优化RAG模型在不同应用场景中的性能。本章主要介绍RAG、数据集的主要下游任务以及如何评估RAG系统。

下游任务

RAG的核心任务是问答(QA),包括传统的单项/多项QA,多选、特定领域QA以及适合RAG的长格式场景。除了问答以外,RAG还可以不断地扩展到多种下游任务,如信息抽取、对话生成、代码搜索等。

评估目标

以往,对RAG模型的评估主要集中在其特定下游任务中的执行情况,这些评估采用适合当前任务的既定指标。如问答评估可依赖于EM和F1分数,而事实检查任务通常以准确性为主要指标。BLEU和ROUGE指标也常用于评估答案质量。专为自动评估RAG应用程序而设计的RALLE等工具也同样基于这些特定任务指标进行评估。尽管如此,专门对RAG模型的特有特征进行评估的研究却还是比较缺乏的,主要评价目标包括:

检索质量:评估检索质量对于确定检索器组件提供的语境是否有效是至关重要的。采用来自搜索引擎、推荐系统和信息检索系统的标准来衡量RAG检索模块的性能。命中率、MRR和NDCG等指标也通常用于这个目的。

生成质量:对生成质量的评估主要集中在生成器从检索到的上下文中综合连贯而相关的答案的能力上。这种评估可以根据内容的目标进行分类:无标签和有标签数据。对于无标签内容,评估包括生成答案的重视性、相关性和无害性。相比之下,对于有标签的内容,重点在于模型生成信息的准确性。此外,检索和生成质量评估都可以通过人工或自动评估方法进行。

评估方面

当前RAG系统的评估主要强调三种主要质量分数和四项基本能力,它们共同为RAG系统的两个主要目标(检索和生成)的评估提供信息。

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

上下文相关性可评估检索上下文的准确性和具体性,确保相关性并最大限度地降低与无关内容相关的处理成本。

答案忠实性确保生成的答案与检索到的上下文保持真实,保持一致性和避免矛盾。

答案相关性要求生成的答案与所提到的问题直接相关,有效解决核心问题。

(2)所需能力:RAG评估还包括四种表明其适应性和效率的能力:噪声鲁棒性、负排斥、信息整合和反事实鲁棒性。这些能力对模型在各种挑战和复杂情况下的表现至关重要,从而影响质量得分。

噪声鲁棒性评估模型管理与问题相关但缺乏实质性信息的噪声文件的能力。

负排斥评估的是当检索到的文档不包含回答问题所需要的知识时,模型是否有判断力避免做出回应。

信息整合评估该模型在多个文档中合成信息已解决复杂问题方面的熟练程度。

反事实鲁棒性测试模型识别和忽略文档中已知的不准确性的能力,即使在收到被告知潜在的错误信息时也是如此。

上下文相关性和噪声鲁棒性对评价检索指令很重要,而答案忠实性、答案相关性、负排斥、信息整合和反事实鲁棒性对评价生成质量很重要。

下面这个表格汇总了每个评估方面的具体指标,必须认识到,这些来自相关工作的度量是传统度量标准,并不代表量化RAG评估方面的成熟或标准化方法,一些评估研究还开发了针对RAG模型细微差别的定制指标,这些还不包括在内。
在这里插入图片描述

评估基准和工具

这些工具提供了量化指标, 不仅能衡量RAG模型的性能,还能增强对模型在各个评估方面的能力的理解。RGB、RECALL和CRUD等基准侧重于评估RAG模型的基本能力。与此同时,RAGAS、ARES和TruLens等最先进的自动工具也采用LLM来裁定质量分数。这些工具和基准共同构成了系统评估RAG模型的强大框架,具体的内容可参照下表。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

nlp_xiaogui

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

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

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

打赏作者

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

抵扣说明:

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

余额充值