百度最新RAG综述:当RAG遇见LLM,面向检索增强的大语言模型

智能科技扫地僧 2024-06-24 05:40:25

本文为RAG相关的综述,合作者来自香港理工大学、百度以及新加坡国立大学。arXiv上提交时间为:2024年5月10日。文章标题与地址为:A Survey on RAG Meets LLMs: Towards Retrieval-Augmented LLM。文章主要内容基于原文。

背景介绍

检索技术是数据挖掘领域的一项基础技术,其核心功能是根据输入查询从外部数据源中提取相关信息。这项技术在多个领域,如搜索、问答和推荐系统等,都得到了广泛的应用。例如,Google、Bing 和百度等搜索引擎能够高效地过滤并检索与用户查询最相关的网页或文档,帮助用户快速找到所需信息。此外,检索模型通过维护外部数据库,为知识密集型任务提供了可信和及时的外部知识。在人工智能生成内容(AIGC)时代,检索技术与生成模型的结合催生了检索增强生成(RAG),这已成为生成 AI 领域的一项代表性技术。RAG 通过结合外部数据源的信息或知识,增强了生成过程,提高了文本内容生成的质量。RAG 技术在知识密集型任务和一般语言任务中展现出巨大的潜力,且在实践中应用广泛,几乎不需要额外的训练。

最近,大型语言模型(LLMs)在多种任务中表现出色,但它们也存在一些局限性,如缺乏领域特定知识、存在幻觉问题以及更新模型所需的巨大计算资源。为了解决这些问题,RAG 技术被用来增强 LLMs 的能力,尤其是在对最新和可靠知识要求较高的任务中。

本文旨在提供对检索增强大型语言模型(RA-LLMs)的全面概述,包括其在架构、训练和应用方面的代表性方法。文章首先介绍了 LLMs 的背景知识,然后从检索、生成和增强等角度回顾了现有 RA-LLMs 的研究,总结了 RA-LLMs 的主要训练技术和应用,并讨论了关键挑战和未来探索的潜在方向。

与本文同时进行的还有一些相关综述,它们对 RAG 和 LLMs 有不同的关注点。本文的不同之处在于,我们专注于技术视角,并根据 RA-LLMs 的架构和训练范式以及应用任务进行了系统性的回顾。

基于多模态的 RAG 技术综述:《Retrieving multimodal information for augmented generation: A survey[1]》RAG for AIGC:《RetrievalAugmented Generation for AI-Generated Content: A Survey[2]》RAG for LLM:《Retrieval-augmented generation for large language models: A survey[3]》背景

LLMs 因其在大规模数据上的预训练和十亿级参数量,已成为推动自然语言处理任务发展的关键技术。它们通过微调能够适应各种特定领域的任务,主要分为仅编码器、仅解码器和编码器-解码器三种类型,各有其独特的优势和应用场景。

提示学习作为利用 LLMs 功能的一种新方法,通过精心设计的输入来引导模型执行特定任务,避免了广泛的微调。它包括手工制作的模板和软提示调优技术,如 Prefix-Tuning,提供了生成提示的灵活性,但同时也面临缺乏领域特定知识的挑战。上下文学习(In-context Learning, ICL)是提示学习的一个分支,它通过在提示中提供任务示例来引导 LLMs 解决新任务,无需微调。ICL 依赖于示例的质量,但可能因信息不足而生成次优输出,这促使研究者探索结合检索的增强方法。检索增强生成(RAG)技术是为了解决 ICL 的局限性而引入的。RAG 通过结合检索和生成,为 LLMs 提供了一种提升性能和适应性的有效途径。

RA-LLMs

LLMs 时代, RAG 框架通常包括检索、生成和增强这三个主要过程,以及确定是否需要检索的机制。

▶Retrieval (检索)

在 RAG 中,检索过程的目标是根据 LLMs 的输入查询,从外部知识源中检索出相关信息,这些信息源可能是开源的或闭源的,如上图所示。

检索的关键组件是检索器,它由多个部分组成,如上图进一步详述,这些程序共同工作以衡量查询和数据库中文档之间的相关性,实现有效的信息检索。 检索的具体流程还取决于是否包括检索前和检索后的流程。本小节介绍传统和基于 LLM 的 RAGs 检索中涉及的主要技术,包括检索器类型、检索粒度、检索前后增强以及数据库构建。

检索器类型:检索方法通常可以根据信息编码方式分为两类:稀疏和密集。稀疏检索主要基于词语,用于文本检索;而密集检索将查询和外部知识嵌入到向量空间,适用于各种数据格式。

稀疏检索是一种基于倒排索引和原始数据输入的直接检索方法,依赖于诸如 TF-IDF 和 BM25 这样的技术。它通过将段落表示为词袋,并根据词频和逆文档频率进行排名,广泛应用于段落级别的检索任务。尽管稀疏检索在某些情况下有效,但其主要限制在于缺乏训练能力,导致检索性能高度依赖于数据库构建和查询生成的质量。此外,稀疏检索主要支持基于相似性的检索,难以适应如多样性等 LLM 应用中的其他检索需求。稠密检索通过将查询和文档嵌入到连续的向量空间中,依据语义相似性等标准进行检索,通常具有可训练性,展现出更高的适应性和潜力。嵌入模型作为稠密检索器的关键组件,在 RAG 模型中扮演着多样化的角色。例如,Dense Passage Retriever(DPR)使用基于 BERT 的骨干结构,并通过问答对数据进行预训练,成功地提升了 LLM 在 OpenQA 任务中的表现。稠密检索器的设计,如双流编码器,增强了检索和生成过程之间的对齐。此外,单编码器结构的检索器,通过在大规模未对齐文档上进行对比学习预训练,表现出优异的多样性,能够更好地迁移和泛化到新领域或任务。这些检索器,如 Contriever 和 Spider,展示了在多种 RA-LLM 方法中的灵活性和有效性。研究表明,尽管通用预训练检索器在未微调的情况下性能与稀疏检索器相当,但针对特定任务和数据进行微调的模型,如 DPR,能够实现更优的检索性能。

检索力度:检索粒度在 RAG 中是一个关键概念,它决定了信息检索的单位大小,可以是文档、段落、词元或实体等不同层次。这种选择直接影响到模型的性能和效率,因为它涉及到数据库的存储需求和搜索时的计算成本。在早期的检索增强语言模型中,通常采用文档级检索,然后利用机器理解模型来确定答案的具体位置,这种方法侧重于对文档内容的深入阅读和关键信息的准确定位。而在生成语言模型中,段落或 Chunk 检索是一种常见做法,它在 REALM、RAG 和 Atlas 等传统和基于 LLM 的 RAG 模型中得到了应用。段落检索因其能够提供紧凑且信息完整的文本块而成为主流的检索文本粒度,尽管更细粒度的词元检索能够实现更快的搜索,但同时也会增加数据库的存储负担。

RAG 中的另一种重要检索粒度是实体检索,这与基于语言的检索粒度不同,它从知识的角度出发,而不是仅仅关注语言本身。Entities as Experts (EAE)模型就是一个例子,它根据实体的身份来划分语言模型的参数空间,并将知识以实体记忆的形式存储在数据库中,这种方法使得模型能够从文本中学习实体的表示。此外,还有研究提出通过学习和检索提及而不是实体来构建知识库,这种方法在处理以实体为中心的任务时更为有效,并且在存储空间的利用上比词元级别的检索更为高效。总体来看,实体或提及级别的检索为 RAG 提供了一种新颖的视角,有助于提升模型在特定任务上的性能。

检索前后增强:为了提高检索结果的准确性和相关性,研究者们已经开发了多种检索前和检索后策略来增强检索器的输入和输出。

检索前策略:- Query2doc,这是一种查询扩展技术,通过利用大型语言模型(LLM)生成伪文档来扩展查询,辅助查询消歧,并指导检索器;- 假设文档嵌入(HyDE)方法,该方法通过 LLM 为查询生成假设文档,并使用这些文档进行嵌入和密集检索,进一步增强了检索过程;- Query 重写,查询重写也是一类检索前策略。Rewrite-Retrieve-Read 框架通过 LLM 提示生成更适合检索的查询,以澄清检索需求并增强检索到的信息的相关性;- Query 增强,将原始查询与初步生成的输出结合,形成新的查询,以检索更多直接相关的信息,这种方法在生成答案时能更有效地利用检索到的知识;检索后增强则关注于处理已提取的文档,以更好地对齐检索和生成阶段:- 可插拔奖励驱动上下文适配器(PRCA)允许在特定数据集上微调适配器,并通过强化学习提取检索到的文档;- 检索-重排-生成(R2G)方法通过重排不同检索方法得到的文档,提高了检索结果的鲁棒性。然而,检索到的信息可能包含不相关或噪声数据;- BlendFilter 方法同时考虑检索前查询生成混合和检索后知识过滤,全面提高了性能;LLM 还被用于生成推理路径和计划,以增强基于 LLM 的生成:- 结合信息检索(IR)模块一起迭代检索知识;- 如果 IR 和 LLM 的输出质量不高,这种迭代指导可能会互相阻碍;- RECOMP 方法:考虑到现有 LLM 的输入令牌长度限制,在生成过程中增加了一个文本摘要的中间步骤,以增强上下文。

数据库构建:RAG 中检索过程依赖于外部知识源,这些知识源既包括闭源也包括开源的数据库。闭源数据库通常以键值对的形式存储知识,其中键用于通过相似性匹配来检索信息,可以是稀疏向量如 BM25 或者密集嵌入,而值则通常是原始文本或者作为单独项存储的令牌。例如,早期的 RAG 工作中,维基百科文章被拆分为 100 词块的文档,并用密集嵌入进行编码,存储在数据库中。此外,领域特定的数据库也被用于满足特定下游任务的需求,如代码生成任务中的 API 信息数据库。

搜索引擎的使用为 RAG 提供了一种避免维护搜索索引并访问最新知识的途径。与闭源数据库相比,搜索引擎提供了更广泛的知识库,并且已被证明在知识增强、事实核查和 LLM 代理增强等功能中有效。特别是,LLMs 利用其作为阅读器理解搜索结果的能力和使用工具处理这些文档的能力,使得互联网搜索在 RA-LLMs 中的应用更为广泛。现有研究表明,使用搜索引擎对于 LLMs 在零样本知识密集型任务中特别有效,如 OpenQA 和事实核查。

▶Generation(生成)

生成器的设计在很大程度上取决于下游任务。对于大多数文本生成任务来说,仅解码器(Decoder-only)和编码器-解码器(Encoder-Decoder)是两种主要的结构。最近商业闭源大型基础模型的发展使得黑盒生成模型在 RA-LLMs 中成为主流。

参数可访问的生成器(白盒):编码器-解码器的结构独立地使用不同的参数集处理输入和目标,在这一过程中发展了一个交叉注意力组件,将输入标记连接到目标标记。代表性的编码器-解码器模型包括 T5 和 BART。相比之下,仅解码器模型在连接输入和目标后进行处理,这使得两部分的表示在网络中逐层同时构建。这两种类型的生成器在现有的 RAG 工作中得到了广泛应用。例如,RAG 和 Re2G 采用 BART;FID 和 EMDR2 使用 T5。RAG 中的生成器通过整合检索到的数据来增强生成的准确性和相关性,与通用生成器不同。此外,白盒生成器允许参数优化,可以训练以适应不同的检索和增强方法,以提高生成性能。

参数不可访问的生成器(黑盒):有些 LLM 在没有公开内部结构或参数可访问性的情况下发布,特别是那些特别大规模的模型,如 GPT 系列、Codex 和 Claude,这些被称为黑盒生成模型。这些生成器只允许输入查询(输入)和接收响应(输出)的操作,不允许更改内部结构或更新参数。从另一个角度来看,即使是开放微调的 LLM,规模也很大,难以仅用有限的数据量调整以适应特定领域的下游任务。因此,黑盒 RA-LLMs 更专注于检索和增强过程,尝试通过用更好的知识、指导或示例增强输入(在 LLMs 的上下文中也称为提示)来增强生成器。

▶召回信息集成

增强描述了整合检索和生成部分的技术过程,这是 RA-LLMs 的核心部分。本小节主要介绍了增强的三种主要设计,分别在生成器的输入层、输出层和中间层进行。

输入层整合:一个常见的整合检索信息/文档的方法是将它们与原始输入/查询结合起来,并共同输入到生成器中。例如,In-Context RALM 通过将原始输入和所有检索到的文档特定地连接成一个单一序列作为生成模型的新输入,应用了输入层整合。尽管这种方法有效,但这种整合受限于检索文档的数量,因为连接的新输入可能过长,生成模型无法处理。In-Context RALM 通过从新输入的开头删除标记,特别缓解了这一限制。

为了避免这种标记删除策略导致的信息丢失,FID 采用了不同的整合方法,在编码器中独立处理每个检索到的文档。这种策略可以扩展到大量上下文,因为在后续处理中,它仅对一个上下文执行自注意力。Atlas 和 REPLUG 通过每次将查询和一个检索到的文档连接在一起,应用了类似的并行整合方法。总体而言,大多数基于生成的黑盒 RAG 方法采用输入层整合,因为生成模型的中间层和输出分布都不可访问。

输出层整合:另一种增强方法是后处理,它将检索和生成结果结合在一起。例如,kNN-LM 在预测中插值两个下一个标记的分布:一个由语言模型(LM)引导,另一个由检索语料库中的最近邻引导。输出层线性集成应用灵活,因为它可以在无需额外训练的情况下插入大多数生成模型中。然而,输出层集成的简单性也限制了模型对检索文本进行推理的能力。为了解决这一限制,Yogatama 等人建议添加一个额外的门控网络来后处理检索到的数据,并实现相对较好的性能。

对于大型语言模型,输出层集成与输入层集成同样合理和自适应。REFEED 提出了一种答案优化机制,它应用 LLM 来评估检索到的信息,并相应地调整初始答案,以提高响应的准确性。类似地,COMBO 框架将 LLM 生成的段落与检索到的对应段落匹配成兼容对,基于预训练判别器进行匹配。这些段落对然后由基于 Fusion-in-Decoder 的模型处理,以得出最终答案。

▶检索增强的必要性和频率

尽管检索增强模型已经展现出潜力,但它们因为并非万能的解决方案。无差别地用不相关的段落增强 LLMs 可能会覆盖 LLMs 已经拥有的潜在正确知识,反而导致错误的回应。 Thakur 等(2023)提供了一个人工注释的数据集,用于评估 LLMs 在外部检索知识错误情况下的鲁棒性,并观察到在非相关的检索段落上,LLMs 的幻觉率可能会翻倍。因此,对于 RA-LLMs 来说,准确回忆先前知识并在必要时选择性地结合检索信息是至关重要的,这是实现鲁棒 RA-LLMs 的途径。

大多数现有方法根据 LLMs 的初步答案或其内部推理结果来确定是否需要检索。例如,Self-RAG 引入特殊标记来评估检索的必要性并控制检索行为。其他方法设计迭代提示以决定在生成过程中是否需要额外信息,从而需要调用检索或其他操作。传统 RAGs 也探索并提出了检索必要性判断的方法,如通过评估生成模型产生的 logits 的置信度来解决这一问题。这种解决方案同样适用于 RA-LLMs,例如 FLARE 在 logits 低于特定阈值时动态触发 RAG。更灵活地, SlimPLM,利用一个精简代理模型检测 LLMs 中缺失的知识,该模型生成“启发式答案”。“启发式答案”用于评估检索的必要性,并在必要时通过应用于查询重写来促进检索过程。

在传统 RAGs 中,检索频率(也称为检索步幅)是决定生成中使用检索程度的重要设计方面,从而极大地影响 RAG 模型的整体性能。检索频率控制了对检索结果的依赖程度,从而影响模型的效率和效果。当不考虑检索必要性时,检索频率通常是预定义且固定的,有三种常见设置:一次性、每 n 个 token 和每个 token。一次性检索只调用一次检索功能,并尝试在一次操作中找到所有所需信息。一次性检索通常在生成过程开始时进行,然后将所有检索到的文档与原始输入一起提供给生成模型,如 REALM 。一次性检索更适用于 LLMs 能明显知道外部数据库信息需求的情况。然而,对于需要长篇输出的语言任务,如开放域摘要,在生成过程中考虑输出 token 之间的依赖性更加重要。在这些情况下,预检索的文档(通过一次性检索)可能不足以支持整个输出序列的生成,这就需要在生成过程中进行检索操作。为此,In-Context RALM 和 RETRO 在生成过程中应用每 n 个 token 检索以获得更好的增强效果。相比之下,kNN-LM 采用了更频繁的检索策略,在生成过程中为每个 token 的预测检索信息。总之,应用不同频率的检索会影响整个 RAG 方法的效果和效率。例如,更频繁的检索会带来更好的性能,但也会增加计算成本。选择检索频率几乎是计算成本与性能之间的权衡。

RA-LLMs Training

根据是否需要训练,现有的 RAG 方法可以分为两大类:无需训练的方法和基于训练的方法。无需训练的方法通常在推理时直接利用检索到的知识,通过将检索到的文本插入提示中,而不需要额外的训练,这在计算上是高效的。然而,一个潜在的挑战是检索器和生成器组件并未针对下游任务进行专门优化,这可能容易导致对检索知识的次优利用。 为了充分利用外部知识,微调检索器和生成器的方法被提出,从而引导大型语言模型有效适应和整合检索到的信息。

根据训练策略,这些基于训练的方法分为以下几类:

无需训练方法:可分为Prompt Engineering-based Methods 和Retrieval-Guided Token Generation Methods:前者通过直接将检索到的知识整合到原始提示中来增强 LLMs 的生成性能。检索到的文本通常作为上下文信息,并与原始提示结合,以指导 LLMs 的生成。除了将外部知识直接整合到原始提示中外,辅助信息还可以用来调整标记生成过程。需要训练方法 - Independent Training:独立训练方法涉及将检索器和大型语言模型(LLMs)作为两个完全独立的进程进行训练,在训练过程中检索器和 LLMs 之间没有交互。与无需训练的方法相比,通过训练 LLMs 以利用检索到的知识,或训练检索器以弥合信息检索和语言生成之间的差距,可以有效地提升 RAG 模型的性能。- Sequential Training:为了提高检索器和生成器的协同效率,研究者们提出了顺序训练方法,这些方法通常从独立预训练的检索器或 LLMs 开始,然后固定其中一个模块,对另一个模块进行训练。这种方法允许使用现有的模型,如 BERT、CLIP、T5 等,作为固定的检索器或生成器,避免了重复预训练的需要。顺序训练分为两个主要方向:一是先训练检索器再训练 LLMs,二是先训练 LLMs 再调整检索器,以便两者更好地协同工作。- Joint Training:联合训练方法采用了端到端的范式来同时优化检索器和生成器。与传统的顺序训练不同,联合训练通过同步调整两个模块,有效提升了检索器定位外部知识以供生成使用的能力,同时也增强了生成器有效利用检索到的信息的能力。

这些不同训练方法的比较如下所示:

应用

本为了清晰地概述 RA-LLMs 的应用,本文将从三个角度进行回顾:自然语言处理(NLP)应用、下游任务以及特定领域的应用。

自然语言处理应用(NLP Applications):RA-LLMs 在文本生成方面的能力使其在 NLP 应用中表现突出,包括问答系统(QA)、聊天机器人(ChatBot)和事实验证(Fact Verification)。QA 系统通过 RA-LLMs 检索最新和特定领域的信息,解决了传统训练数据的局限性,提高了答案的准确性。ChatBot 利用 RA-LLMs 集成外部知识,以更自然和对话的方式与用户互动。事实验证任务中,RA-LLMs 通过检索外部信息增强了验证信息的准确性。下游任务(Downstream Tasks):RA-LLMs 也被应用于推荐系统和软件工程等下游任务。在推荐系统中,RA-LLMs 结合检索和生成过程,提供个性化和情境相关的推荐。软件工程方面,RA-LLMs 用于代码生成、程序修复、表格数据处理和 Text-to-SQL 语义解析,推动了软件开发的自动化和智能化。

领域特定应用(Domain-specific Applications):在科学和金融等特定领域,RA-LLMs 的应用同样广泛。在科学领域,RA-LLMs 帮助识别分子属性、预测新分子,推动药物发现。金融领域中,RA-LLMs 从新闻和社交媒体等来源检索信息,增强金融情绪分析和问答系统的准确性,提升了金融决策的质量。

机遇与挑战

尽管目前 RAG 发展如火如荼,其依然面临着以下几个角度的机遇与挑战。

可信赖的 RA-LLMs:RA-LLMs 作为一种新兴技术,尽管具有巨大潜力,但也存在被恶意操纵的风险,可能对人类社会造成不利影响。确保 RA-LLMs 的可靠性、公平性、可解释性和隐私性是未来研究的关键方向。这包括提高系统对恶意输入的鲁棒性,确保决策过程中的公正无偏,使系统工作机制透明可解释,以及保护私有信息不被泄露。

多语言 RA-LLMs:在全球化的背景下,开发能够理解和使用多种语言的 RA-LLMs 对于促进跨文化交流和知识共享至关重要。这不仅能帮助模型访问更广泛的信息资源,还能为语言资源较少的群体提供更好的服务。研究应关注如何有效整合不同语言的知识,提升模型在多语言环境下的性能。多模态 RA-LLMs:多模态数据的融合为 RA-LLMs 提供了更丰富的上下文信息,有助于生成更准确和细致的内容。研究应探索如何有效结合图像、视频、音频等多种数据模态,以及如何利用这些信息提升模型对用户需求的理解,从而在医疗、药物发现等领域产生更有价值的应用。

外部知识的质量:高质量的外部知识库对 RA-LLMs 的性能至关重要。研究需要关注如何提升知识库的准确性和可靠性,包括开发有效的机制来筛选和过滤低质量或不可靠的信息。通过提升外部知识的质量,可以增强 RA-LLMs 生成的准确性和可靠性,进而提高其在现实世界任务中的应用效果。

总结

检索增强生成(Retrieval-augmented generation,简称 RAG)是一种前沿的人工智能技术,在多个应用领域中取得了显著成功。本文从架构、训练策略和应用的角度,全面回顾了 RA-LLMs,为研究人员提供了深入的理解。此外,由于 RA-LLMs 的研究仍处于早期阶段,本文还讨论了当前的局限性和未来研究的几个潜在方向。

参考资料

[1]

Retrieving multimodal information for augmented generation: A survey: https://arxiv.org/abs/2303.10868

[2]

RetrievalAugmented Generation for AI-Generated Content: A Survey: https://arxiv.org/abs/2402.19473

[3]

Retrieval-augmented generation for large language models: A survey: https://arxiv.org/abs/2312.10997

0 阅读:0

智能科技扫地僧

简介:感谢大家的关注