当前位置: 首页 > article >正文

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

人工智能咨询培训老师叶梓 转载标明出处

大模型(LLMs)在处理特定领域或知识密集型任务时,它们仍面临挑战,例如产生“幻觉”、知识过时以及推理过程不透明、难以追溯等问题。为了解决这些问题,检索增强生成(Retrieval-Augmented Generation, RAG)作为一种有前景的解决方案应运而生,它通过整合外部数据库的知识来增强模型的准确性和可信度。

本综述论文由来自同济大学上海智能自主系统研究所、复旦大学上海数据科学重点实验室以及同济大学设计创意学院的研究人员共同撰写。论文详细考察了RAG范式的进展,包括朴素RAG、高级RAG和模块化RAG。并分析了RAG框架的三个组成部分:检索、生成和增强技术。最后介绍了最新的评估框架和基准,并指出了当前面临的挑战和未来的研究方向。

想要掌握如何将大模型的力量发挥到极致吗?2024年10月26日叶老师带您深入了解 Llama Factory —— 一款革命性的大模型微调工具。

留言“参加”即可来叶老师的直播间互动,1小时讲解让您轻松上手,学习如何使用 Llama Factory 微调模型。互动交流,畅谈工作中遇到的实际问题。

RAG范式进展

图1展示了RAG研究的技术发展树,包括预训练、微调和推理三个主要阶段。随着大模型(LLMs)的出现,RAG研究最初集中在利用LLMs强大的上下文学习能力,主要关注推理阶段。随后的研究逐渐深入,开始更多地与LLMs的微调技术相结合。研究者也在探索如何通过检索增强技术来增强预训练阶段的语言模型。

检索增强生成(RAG)是为了解决大模型在特定领域或知识密集型任务中遇到的挑战而提出的一种方法。这些挑战包括产生幻觉、知识过时以及推理过程不透明、难以追溯等问题。RAG通过从外部数据库检索相关知识来增强大模型的准确性和可信度,特别是在需要大量知识的复杂任务中。

图 2 展示了RAG应用于问答任务的一个典型实例。在这个例子中,用户向ChatGPT提出了一个关于最近广泛讨论的新闻的问题。由于ChatGPT依赖于预训练数据,它最初缺乏提供最新进展的能力。RAG通过从外部数据库中检索和整合知识来弥补这一信息差距。在这种情况下,它收集了与用户查询相关的新闻文章。这些文章与原始问题结合起来,形成了一个全面的提示,使大模型能够生成一个见多识广的答案。

RAG研究范式不断发展,我们将其分为三个阶段:朴素RAG、高级RAG和模块化RAG,如图 3 所示。尽管RAG方法成本效益高,并且超过了原生大模型的性能,但它们也表现出了一些局限性。高级RAG和模块化RAG的发展是为了解决朴素RAG中的这些特定缺陷。

朴素RAG

朴素RAG研究范式代表了最早的方法,它在ChatGPT广泛采用后不久就获得了显著地位。朴素RAG遵循包括索引、检索和生成在内的传统过程,这也被描述为“检索-阅读”框架。索引从清洗和提取不同格式(如PDF、HTML、Word和Markdown)的原始数据开始,然后将其转换为统一的纯文本格式。为了适应语言模型的上下文限制,文本被分割成更小、更易于消化的块。这些块随后使用嵌入模型编码成向量表示,并存储在向量数据库中。这一步骤对于在后续检索阶段进行高效的相似性搜索至关重要。

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

在生成阶段,所提出的问题和选定的文档被合成为一个连贯的提示,大模型负责制定回应。模型的回答方式可能会根据特定任务的标准而有所不同,允许它利用其固有的参数知识,或者将其回应限制在所提供文件中包含的信息之内。在进行中的对话中,任何现有的对话历史可以被整合到提示中,使模型能够有效地进行多轮对话互动。然而,朴素RAG也遇到了显著的挑战,包括检索挑战、生成困难和增强障碍。

高级RAG

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

检索前过程的主要关注点是优化索引结构和原始查询。优化索引的目标是提高被索引内容的质量。这涉及到增强数据粒度、优化索引结构、添加元数据、对齐优化和混合检索等策略。而查询优化的目标是使用户的原始问题更清晰、更适合检索任务。常见的方法包括查询重写、查询转换、查询扩展等技术。

检索后过程至关重要,一旦检索到相关上下文,就必须将其与查询有效整合。检索后过程的主要方法包括重新排列块和上下文压缩。重新排列检索到的信息,将最相关内容重新定位到提示的边缘,是一个关键策略。这一概念已在LlamaIndex、LangChain和HayStack等框架中得到实施。

模块化RAG

模块化RAG架构超越了前两个RAG范式,提供了增强的适应性和多功能性。它纳入了多种策略来改进其组件,如添加用于相似性搜索的搜索模块,并通过微调来完善检索器。模块化RAG方法的转变正在变得普遍,支持其组件的顺序处理和集成的端到端训练。尽管它具有独特性,但模块化RAG建立在高级和朴素RAG的基础原则上,展示了RAG家族内的进步和完善。

模块化RAG框架引入了额外的专业组件来增强检索和处理能力。搜索模块适应特定场景,使用大模型生成的代码和查询语言,直接在各种数据源(如搜索引擎、数据库和知识图谱)中进行搜索。RAGFusion通过采用多查询策略来解决传统搜索的局限性,将用户查询扩展到不同的视角,利用并行向量搜索和智能重新排名来发现显性和变革性知识。记忆模块利用大模型的记忆来指导检索,创建一个无界的记忆池,通过迭代自我增强使文本更紧密地与数据分布对齐。在RAG系统中进行路由,可以导航不同的数据源,为查询选择最佳路径,无论是涉及摘要、特定数据库搜索还是合并不同的信息流。预测模块旨在通过大模型直接生成上下文来减少冗余和噪声,确保相关性和准确性。最后,任务适配器模块使RAG适应各种下游任务,自动为零样本输入检索提示,并通过对少量样本查询生成来创建特定于任务的检索器。

模块化RAG提供了显著的适应性,允许模块替换或重新配置以应对特定挑战。这超越了朴素和高级RAG的固定结构,其特点是简单的“检索”和“阅读”机制。此外,模块化RAG通过整合新模块或调整现有模块之间的交互流程,扩大了这种灵活性,增强了其在不同任务中的适用性。创新,如重写-检索-阅读模型利用大模型的能力,通过重写模块和LM反馈机制来完善检索查询,更新重写模型,提高任务性能。同样,像生成-阅读这样的方法用大模型生成的内容替换了传统的检索,而ReciteRead强调从模型权重中检索,增强了模型处理知识密集型任务的能力。混合检索策略整合了关键词、语义和向量搜索,以满足多样化的查询。此外,采用子查询和假设文档嵌入(HyDE)通过关注生成答案和真实文档之间的嵌入相似性来提高检索相关性。

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

RAG与微调

大模型的增强因其日益普及而受到广泛关注。在大模型的优化方法中,RAG经常与微调(FT)和提示工程进行比较。每种方法都有其独特的特征,如图 4 所示。我们使用象限图来说明这三种方法在两个维度上的差异:外部知识需求和模型适应需求。提示工程利用模型的固有能力,对外部知识和模型适应的需求最小。RAG可以被比作为模型提供量身定制的教科书进行信息检索,非常适合精确的信息检索任务。相比之下,FT相当于学生随时间内部化知识,适合需要复制特定结构、风格或格式的场景。RAG在动态环境中表现出色,提供实时知识更新和有效利用外部知识源,具有高可解释性。然而,它伴随着更高的延迟和关于数据检索的伦理考虑。另一方面,FT更加静态,需要重新训练以更新,但能够深度定制模型的行为和风格。它需要大量的计算资源来进行数据集准备和训练,虽然可以减少幻觉,但可能面临不熟悉数据的挑战。在对他们在不同主题的各种知识密集型任务上的表现进行多次评估时,发现尽管无监督微调显示出一些改进,但RAG始终优于它,无论是在训练期间遇到的现有知识还是全新的知识。此外,发现大模型很难通过无监督微调学习新的事实上信息。选择RAG和FT取决于应用上下文中对数据动态性、定制化和计算能力的具体需求。RAG和FT不是相互排斥的,它们可以在不同层面上互补,增强模型的能力。在某些情况下,它们的联合使用可能导致最佳性能。涉及RAG和FT的优化过程可能需要多次迭代才能达到满意的结果。

RAG框架

检索

在检索(Retrieval)的背景下,对于RAG来说,从数据源高效检索相关文档是至关重要的。这一过程中涉及几个关键问题,包括检索源、检索粒度、检索的预处理以及相应嵌入模型的选择。表1总结了不同的RAG方法。

检索源(Retrieval Source)是RAG利用外部知识增强大模型的基础,检索源的类型和检索单元的粒度都影响最终的生成结果。

  • 数据结构:最初,文本是检索的主要来源。随后,检索源扩展到包括半结构化数据(如PDF)和结构化数据(如知识图谱,KG)以增强检索效果。除了从原始外部源检索,最近的研究也趋向于利用大模型自身生成的内容进行检索和增强。
    • 未结构化数据,如文本,是最广泛使用的检索源,主要从语料库中收集。对于开放域问答(ODQA)任务,主要的检索源是维基百科转储,包括HotpotQA和DPR等当前主要版本。
    • 半结构化数据,通常指包含文本和表格信息的数据,如PDF。传统RAG系统处理半结构化数据面临挑战,原因有二:文本分割过程可能会不小心分割表格,导致检索过程中数据损坏;将表格纳入数据可能会使语义相似性搜索复杂化。
    • 结构化数据,如知识图谱(KG),通常经过验证,能提供更精确的信息。例如,KnowledGPT生成知识库搜索查询,并将知识存储在个性化库中,增强了RAG模型的知识丰富度。
    • 大模型生成的内容。为了解决RAG中外部辅助信息的局限性,一些研究专注于利用大模型的内部知识。例如,SKR对问题进行已知或未知分类,有选择地应用检索增强;GenRead用大模型生成器替换检索器,发现大模型生成的上下文通常包含更准确的答案。

检索粒度(Retrieval Granularity)是另一个重要因素,它决定了检索数据的详细程度。粗粒度检索单元理论上可以为问题提供更多相关信息,但也可能包含冗余内容,这可能会分散检索器和下游任务中语言模型的注意力。另一方面,细粒度检索单元粒度增加了检索的负担,并不能保证语义完整性和满足所需知识。在推理过程中选择合适的检索粒度可以是一个简单而有效的策略,以提高密集检索器的检索和下游任务性能。在文本中,检索粒度从细到粗,包括Token、Phrase、Sentence、Proposition、Chunks、Document。例如,DenseX提出了使用命题作为检索单元的概念。在知识图谱(KG)上,检索粒度包括Entity、Triplet和sub-Graph。

索引优化(Indexing Optimization)在索引阶段,文档将被处理、分割并转换为嵌入(Embeddings),存储在向量数据库中。索引构建的质量决定了检索阶段是否能够获得正确的上下文。

  • 分块策略(Chunking Strategy):最常见的方法是根据固定数量的标记将文档分割成块。较大的块可以捕获更多上下文,但它们也会产生更多噪声,需要更长的处理时间和更高的成本。较小的块可能无法完全传达必要的上下文,但它们的噪声较少。
  • 元数据附件(Metadata Attachments):块可以丰富元数据信息,如页码、文件名、作者、类别时间戳。随后,检索可以根据这些元数据进行过滤,限制检索范围。
  • 结构化索引(Structural Index):增强信息检索的一个有效方法是为文档建立层次结构。通过构建结构,RAG系统可以加快检索和处理相关数据的速度。

查询优化(Query Optimization)是针对朴素RAG直接依赖用户原始查询作为检索基础的主要挑战之一。制定一个精确而清晰的问题很困难,不谨慎的查询会导致检索效果不佳。有时,问题本身很复杂,语言组织不佳。另一个困难在于语言复杂性模糊性。语言模型在处理专业词汇或具有多种含义的模糊缩写时常常遇到困难。

  • 查询扩展(Query Expansion):将单个查询扩展为多个查询,丰富了查询内容,提供了进一步的上下文,以解决任何特定细微差别的缺失,从而确保生成答案的最佳相关性。
  • 查询转换(Query Transformation):核心概念是根据转换后的查询而不是用户的原始查询来检索块。查询重写、使用提示工程让大模型基于原始查询为后续检索生成查询等都是查询转换的方法。
  • 查询路由(Query Routing):根据不同的查询,路由到不同的RAG管道,这适用于为适应多样化场景而设计的多功能RAG系统。

嵌入(Embedding)在RAG中,通过计算问题和文档块的嵌入之间的相似性(例如余弦相似性)来实现检索,其中嵌入模型的语义表示能力起着关键作用。这主要包括稀疏编码器(如BM25)和密集检索器(如BERT架构预训练语言模型)。最近的研究表明,AngIE、Voyage、BGE等嵌入模型能够从多任务指令调整中受益。Hugging Face的MTEB排行榜评估了跨8个任务的嵌入模型,涵盖了58个数据集。此外,C-MTEB专注于中文能力,涵盖了6个任务和35个数据集。

适配器(Adapter)微调模型可能会带来挑战,例如通过API集成功能或解决有限的本地计算资源带来的限制。因此,一些方法选择加入外部适配器来帮助对齐。为了优化大模型的多任务能力,UPRISE训练了一个轻量级提示检索器,可以自动从预建的提示池中检索适合给定零样本任务输入的提示。AAR引入了一个通用适配器,旨在适应多个下游任务。而PRCA增加了一个可插拔的奖励驱动的上下文适配器,以增强特定任务的性能。BGM保持检索器和大模型固定,并在中间训练一个桥接Seq2Seq模型。桥接模型的目标是将检索到的信息转换成大模型可以有效处理的格式,允许它不仅重新排名,而且动态选择每个查询的段落,并可能采用更高级的策略,如重复。

生成

检索之后,直接将所有检索到的信息输入大模型(LLM)以回答问题并不是一个好做法。接下来将从两个角度介绍调整:调整检索内容和调整大模型。

上下文策展(Context Curation)

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

  1. 重新排名(Reranking):重新排名基本上重新排序文档块,首先突出最相关的结果,有效减少整体文档池,在信息检索中既充当增强器也充当过滤器,为更精确的语言模型处理提供精炼的输入。重新排名可以使用基于预定义指标如多样性、相关性和MRR的规则方法进行,也可以使用基于模型的方法,如BERT系列中的编码器-解码器模型(例如SpanBERT)、专门的重新排名模型如Cohererank或bge-raranker-large,以及像GPT这样的通用大模型。

  2. 上下文选择/压缩(Context Selection/Compression):RAG过程中的一个常见误解是认为检索尽可能多的相关文档并将它们连接起来形成一个漫长的检索提示是有益的。然而,过多的上下文可能会引入更多噪声,减少大模型对关键信息的感知。LLMLingua利用小型语言模型(SLMs)如GPT-2 Small或LLaMA-7B来检测和移除不重要的标记,将其转化为对人类来说难以理解但对大模型来说却很好理解的形式。这种方法为提示压缩提供了直接而实用的方法,无需额外训练大模型,同时平衡了语言完整性和压缩比率。PRCA通过训练信息提取器来解决这个问题。同样,RECOMP通过使用对比学习训练信息压缩器采用了类似的方法。每个训练数据点包括一个正样本和五个负样本,编码器在此过程中使用对比损失进行训练。除了压缩上下文,减少文档数量也有助于提高模型答案的准确性。Ma等人提出了“过滤器-重新排名”范式,结合了LLMs和SLMs的优势。在这个范式中,SLMs作为过滤器,而LLMs作为重新排序代理。研究表明,指导LLMs重新排列由SLMs识别出的具有挑战性的样本,可以在各种信息提取(IE)任务中取得显著改进。另一种直接而有效的方法是由大模型在生成最终答案之前评估检索到的内容。这允许大模型通过大模型批评来过滤掉相关性差的文档。例如,在Chatlaw中,大模型被提示对参考的法律条款进行自我建议,以评估其相关性。

大模型微调(LLM Fine-tuning)

基于场景和数据特征对大模型进行针对性微调可以取得更好的结果。这也是使用本地大模型的最大优势之一。当大模型在特定领域缺乏数据时,可以通过微调向大模型提供额外的知识。Huggingface的微调数据也可以作为初始步骤。微调的另一个好处是能够调整模型的输入和输出。例如,它可以使得大模型适应特定的数据格式,并按照指示以特定风格生成响应。对于涉及结构化数据的检索任务,SANTA框架实施了三分法训练机制,有效封装了结构和语义细微差别。初始阶段专注于检索器,利用对比学习来优化查询和文档嵌入。通过强化学习使大模型输出与人类或检索器偏好对齐是一种潜在的方法。例如,手动注释最终生成的答案,然后通过强化学习提供反馈。除了与人类偏好对齐外,还可以与微调模型和检索器的偏好对齐。当情况阻止访问功能强大的专有模型或参数较大的开源模型时,一个简单有效的方法是对更强大的模型进行蒸馏(例如GPT-4)。大模型的微调也可以与检索器的微调协调以对齐偏好。一种典型的方法,如RA-DIT,使用KL散度对齐检索器和生成器之间的评分函数。

RAG中的增强过程

在RAG领域,标准做法通常涉及单一(一次)检索步骤,然后进行生成,这可能导致效率低下,有时对于需要多步推理的复杂问题通常是不够的,因为它提供的信息范围有限。许多研究已经针对这一问题优化了检索过程,在图 5中总结了这些研究。

迭代检索(Iterative Retrieval)

迭代检索是一个过程,其中基于初始查询和迄今为止生成的文本,反复搜索知识库,为大模型提供更全面的知识库。这种方法已经显示出通过多次检索迭代提供额外的上下文参考,从而增强后续答案生成的鲁棒性。然而,它可能受到语义不连续性和无关信息积累的影响。ITERRETGEN利用了一种协同方法,结合了“检索增强生成”和“生成增强检索”,用于需要再现特定信息的任务。该模型利用解决输入任务所需的内容作为检索相关知识的上下文基础,这反过来又促进了在后续迭代中生成改进的响应。

递归检索(Recursive Retrieval)

递归检索通常用于信息检索和自然语言处理(NLP)中,以提高搜索结果的深度和相关性。该过程涉及根据以前搜索获得的结果迭代细化搜索查询。递归检索旨在通过反馈循环逐渐汇聚到最相关的信息上,从而增强搜索体验。IRCoT使用链式思考指导检索过程,并使用获得的检索结果细化链式思考。ToC创建了一个澄清树,系统地优化了查询中模糊的部分。它在复杂的搜索场景中特别有用,其中用户的需求从一开始就不完全清楚,或者所寻求的信息非常专业或微妙。该过程的递归性质允许持续学习和适应用户的需求,通常导致对搜索结果的满意度提高。为了解决特定的数据场景,递归检索和多跳检索技术一起使用。递归检索涉及结构化索引以分层方式处理和检索数据,可能包括在执行基于此摘要的检索之前总结文档或冗长的PDF的部分。随后,在文档内进行二次检索,细化搜索,体现了过程的递归性质。相比之下,多跳检索旨在深入到图结构化数据源中,提取相互连接的信息。

自适应检索(Adaptive Retrieval)

自适应检索方法,如Flare和Self-RAG,通过使大模型能够主动确定检索的最佳时机和内容,从而增强RAG框架,提高检索信息的效率和相关性。这些方法是一种更广泛的趋势的一部分,其中大模型在操作中采用主动判断,如AutoGPT、Toolformer和GraphToolformer等模型代理中所见。例如,Graph-Toolformer将其检索过程划分为不同的步骤,其中大模型主动使用检索器,应用自我提问技术,并使用少量样本提示来启动搜索查询。这种主动姿态允许大模型决定何时搜索必要信息,类似于代理使用工具的方式。WebGPT集成了一个强化学习框架,在文本生成期间训练GPT-3模型自主使用搜索引擎。它使用特殊标记来导航此过程,这些标记促进了搜索引擎查询、浏览结果和引用参考等操作,从而通过使用外部搜索引擎扩展了GPT-3的功能。Flare通过监控生成过程的信心来自动定时检索,如生成术语的概率所示。当概率低于某个阈值时,将激活检索系统以收集相关信息,从而优化检索周期。Self-RAG引入了“反思标记”,允许模型自省其输出。这些标记有两种类型:“检索”和“批评”。模型可以自主决定何时激活检索,或者由预设的阈值触发该过程。在检索期间,生成器在多个段落中进行片段级别的束搜索,以得出最连贯的序列。批评分数用于更新细分分数,并在推理过程中灵活调整这些权重,以定制模型的行为。Self-RAG的设计消除了对额外分类器或依赖自然语言推理(NLI)模型的需求,从而简化了何时启动检索机制的决策过程,并提高了模型在生成准确响应中的自主判断能力。

评估框架和基准

自然语言处理(NLP)领域中RAG的快速发展和日益增长的应用推动了对RAG模型评估的研究。评估的主要目标是理解和优化RAG模型在不同应用场景中的表现。

下游任务

RAG的核心任务仍然是问答(Question Answering, QA),包括传统的单跳/多跳QA、多项选择、特定领域的QA以及适合RAG的长形式场景。除了QA,RAG还在不断地扩展到多个下游任务中,如信息抽取(Information Extraction, IE)、对话生成、代码搜索等。表 II总结了RAG的主要下游任务及其对应的数据集。

评估目标

历史上,RAG模型的评估主要集中在它们在特定下游任务中的执行上。这些评估采用了适合手头任务的既定指标。例如,问答评估可能依赖于精确度(EM)和F1分数,而事实核查任务通常以准确度作为主要指标。BLEU和ROUGE指标也常用于评估答案质量。像RALLE这样为RAG应用设计的自动评估工具,同样基于这些特定任务的指标进行评估。尽管如此,专门评估RAG模型的独特特征的研究还相对缺乏。主要的评估目标包括:

  • 检索质量(Retrieval Quality):评估检索质量对于确定检索组件获取的上下文的有效性至关重要。搜索引擎、推荐系统和信息检索系统的标准指标用于衡量RAG检索模块的性能。常用的指标包括命中率(Hit Rate)、MRR(Mean Reciprocal Rank)和NDCG(Normalized Discounted Cumulative Gain)。
  • 生成质量(Generation Quality):生成质量的评估集中在生成器从检索到的上下文中合成连贯且相关答案的能力上。这一评估可以根据内容的目标分为未标记和已标记内容。对于未标记内容,评估包括生成答案的忠实度、相关性和无害性。相比之下,对于已标记内容,重点是模型产生的信息的准确性。

评估方面

当前的RAG模型评估实践强调三个主要的质量得分和四个基本能力,这些共同构成了对RAG模型两个主要目标:检索和生成的评估。

  1. 质量得分(Quality Scores):

    • 上下文相关性(Context Relevance):评估检索到的上下文的精确度和特异性,确保相关性并最小化与无关内容相关的处理成本。
    • 答案忠实度(Answer Faithfulness):确保生成的答案忠于检索到的上下文,保持一致性并避免矛盾。
    • 答案相关性(Answer Relevance):要求生成的答案直接与提出的问题相关,有效解决核心查询。
  2. 所需能力(Required Abilities):

    • 鲁棒性(Noise Robustness):评估模型处理与问题相关的但缺乏实质信息的噪声文档的能力。
    • 负拒绝(Negative Rejection):评估模型在检索到的文档不包含回答一个问题所必需的知识时,抑制回应的能力。
    • 信息整合(Information Integration):评估模型从多个文档中合成信息以回答复杂问题的能力。
    • 反事实鲁棒性(Counterfactual Robustness):测试模型识别并忽略文档中已知不准确性的能力,即使在被告知潜在的误导信息时。

评估基准和工具

为了促进RAG的评估,已经提出了一系列的基准测试和工具。这些工具提供了定量指标,不仅衡量RAG模型的性能,还增强了对模型在不同评估方面能力的理解。著名的基准如RGB、RECALL和CRUD专注于评估RAG模型的基本能力。同时,像RAGAS、ARES和TruLens这样的最先进的自动化工具使用大模型来评判质量得分。这些工具和基准共同构成了一个健全的框架,用于系统地评估RAG模型,如表 IV所总结。

挑战和未来展望

尽管RAG技术取得了显著进展,但仍存在一些挑战,需要深入研究。

RAG与长上下文

随着相关研究的深入,大模型的上下文不断扩展。目前,大模型能够轻松处理超过200,000个标记的上下文。这种能力意味着,以前依赖RAG的长文档问答任务,现在可以将整个文档直接纳入提示中。这也引发了关于在大模型不受上下文限制时,RAG是否仍然必要的讨论。实际上,RAG仍然扮演着不可替代的角色。一方面,一次性向大模型提供大量上下文会显著影响其推理速度,而分块检索和按需输入可以显著提高操作效率。另一方面,基于RAG的生成可以快速定位原始参考资料,帮助用户验证生成的答案。整个检索和推理过程是可观察的,而仅依赖长上下文的生成仍然是一个黑箱。相反,上下文的扩展为RAG的发展提供了新的机会,使其能够解决更复杂的问题和需要阅读大量材料才能回答的综合或总结性问题。在超长上下文中开发新的RAG方法是未来研究趋势之一。

RAG的鲁棒性

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

混合方法

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

RAG的扩展规律

端到端RAG模型和基于RAG的预训练模型仍然是当前研究者关注的焦点之一。这些模型的参数是关键因素之一。虽然已经为大模型建立了扩展规律,但它们对RAG的适用性仍然不确定。初步研究如RETRO++已经开始解决这个问题,但RAG模型的参数数量仍然落后于大模型。较小的模型在某些情况下表现优于较大的模型的逆扩展规律特别引人注目,值得进一步研究。

适用于生产的RAG

RAG的实用性和与工程要求的一致性促进了它的采用。然而,提高检索效率、改善大型知识库中的文档召回以及确保数据安全(例如,防止大模型无意中披露文档来源或元数据)仍然是需要解决的关键工程挑战。RAG生态系统的发展受到其技术栈进展的极大影响。随着ChatGPT的出现,像LangChain和LLamaIndex这样的关键工具迅速流行起来,提供了广泛的RAG相关API,并成为大模型领域的重要组成部分。虽然新兴的技术栈没有LangChain和LLamaIndex那样丰富的功能,但通过其专业产品脱颖而出。例如,Flowise AI优先考虑低代码方法,允许用户通过用户友好的拖放界面部署包括RAG在内的AI应用。其他技术如HayStack、Meltano和Cohere Coral也因其对该领域的独有贡献而受到关注。除了专注于AI的供应商外,传统的软件和云服务提供商也在扩展其产品,以包括以RAG为中心的服务。Weaviate的Verba旨在用于个人助理应用,而Amazon的Kendra提供智能企业搜索服务,使用户能够使用内置连接器浏览各种内容库。在RAG技术的发展中,有一个明显的趋势是朝着不同的专业化方向发展,例如:1)定制化-根据特定要求定制RAG。2)简化-使RAG更易于使用,减少初始学习曲线。3)专业化-优化RAG以更好地服务于生产环境。RAG模型及其技术栈的相互增长是显而易见的;技术进步不断为现有基础设施建立新的标准。反过来,技术栈的增强推动了RAG能力的发展。RAG工具包正在汇聚成一个基础技术栈,为高级企业应用奠定基础。然而,一个完全集成的、全面平台的概念仍在未来,需要进一步的创新和发展。

多模态RAG

RAG已经超越了最初的基于文本的问答限制,拥抱了多样化的模态数据。这种扩展催生了创新的多模态模型,这些模型在各个领域整合了RAG概念:

  • 图像(Image):RA-CM3是一个开创性的多模态模型,可以同时检索和生成文本和图像。
  • 音频和视频(Audio and Video):GSS方法检索并拼接音频剪辑,将机器翻译数据转换为语音翻译数据。UEOP在端到端自动语音识别方面取得了显著进展,通过整合外部离线策略进行语音到文本的转换。
  • 代码(Code):RBPS在小规模学习任务中表现出色,通过编码和频率分析检索与开发人员目标一致的代码示例。这种方法在测试断言生成和程序修复等任务中显示出了效果。对于结构化知识,CoK方法首先从知识图中提取与输入查询相关的事实,然后将这些事实作为提示集成到输入中,增强了知识图谱问答任务的性能。

通过这项研究,我们可以看到RAG在提升LLMs能力方面取得的重要进展,以及它在多种不同任务中的应用。尽管RAG技术取得了显著进步,但仍存在改进其鲁棒性和处理扩展上下文的能力的研究机会。RAG的应用范围正在扩展到多模态领域,将其原理适应于解释和处理各种数据形式,如图像、视频和代码。

https://arxiv.org/pdf/2312.10997


http://www.kler.cn/news/359881.html

相关文章:

  • 利用TLP185光耦合器增强电路隔离和信号完整性
  • (AtCoder Beginner Contest 375) 题解(下)
  • 408 10——42题
  • [英语单词] sk_under_memory_pressure
  • MySQL 初阶——多版本控制 MVCC
  • Tkinter -- python GUI学习与使用
  • 1.前提配置 关防火墙 关selinux
  • 每日一题|910.最小差值II|数组排序思路、单调性
  • 深入理解Python函数
  • SAP B1 账套锁定解决方案
  • 【渗透测试】-红日靶场-获取web服务器权限
  • Linux -- 命名管道
  • ansible——ansible的变量
  • Typescript中的Required,Partial,Pick,Omit辅助类型
  • Python爬取站长素材图片【爬虫学习day.01】
  • Android Framework关闭触摸振动
  • Vue笔记-浏览器窗口改变时,重新计算表格高度并设置
  • 【OpenCV】人脸识别方法
  • 32.第二阶段x86游戏实战2-遍历技能2(技能二叉树基址)
  • WPF中的<Style.Triggers>