Coggle数据科学 | 小白学RAG:架构、策略和应用

本文来源公众号“Coggle数据科学”,仅用于学术分享,侵权删,干货满满。

原文链接:小白学RAG:架构、策略和应用

大型语言模型(LLMs)在语言理解和生成方面展示了革命性的能力,但它们仍然面临着一些固有的局限性,比如幻觉和过时的内部知识。鉴于RAG在提供最新和有帮助的辅助信息方面的强大能力,检索增强型大型语言模型(Retrieval-Augmented Large Language Models, RA-LLMs)应运而生。RA-LLMs利用外部权威知识库,而不仅仅依赖模型的内部知识,来提高LLMs的生成质量。

本文全面回顾 RA-LLMs三个主要技术视角:架构、训练策略和应用。并详细说明了每个领域的挑战以及RA-LLMs的相应能力。

1 Large Language Models (LLMs)

LLMs通常在大量数据上进行预训练,具有数十亿参数,能够理解和生成类似人类的文本,从而在诸如文本生成和信息检索等自然语言处理任务中取得进展。LLMs可以通过在特定数据集上微调来适应各种下游任务,使它们能够专注于特定领域或应用。

现有的LLMs大致可以分为三类仅编码器(Encoder-only)、仅解码器(Decoder-only)和编码器-解码器(Encoder-Decoder)模型

  • 仅编码器模型,如BERT(Bidirectional Encoder Representations from Transformers),通过将输入文本编码到高维空间来处理文本。这类模型的关键是它们的双向特性,即在编码时可以同时考虑每个标记的左右上下文。这种双向性使得仅编码器模型能够更好地理解上下文中的词义,这对于情感分析、评论阅读和文本分类等任务至关重要。

  • 仅解码器模型,如GPT(Generative Pre-trained Transformer),以从左到右的方式生成文本。它们基于前一个标记提供的上下文预测序列中的下一个标记。这种架构使它们特别适用于语言生成、代码生成和创意写作等任务。

  • 编码器-解码器模型,如T5(Text-To-Text Transfer Transformer),独特地将各种自然语言处理任务转化为文本生成问题。具体来说,T5的编码器处理输入序列以捕获其含义,而解码器基于编码的信息生成输出序列。这种T5架构非常适合涉及将一个序列转换为另一个序列的任务,如机器翻译、摘要和对话响应生成。

2 提示学习(Prompt Learning)

2.1 提示学习

由于LLMs拥有庞大的参数量,提示学习作为一种范式出现,利用LLMs的能力来执行各种任务,而不是广泛地微调LLMs。

提示学习通过精心设计输入来引导模型在LLMs中执行下游任务。例如,早期方法提供手工制作的模板来处理自然语言处理(NLP)中的各种任务。编码器模型如BERT通常采用填空提示,因为它们非常符合其预训练任务的形式。

对于像GPT这样的其他模型,前缀提示更适合,因为它们与生成任务相吻合。然而,手工设计的提示依赖于人类经验,没有有效性保证。为了解决这个限制,发展了软提示调整,学习可训练的连续提示嵌入。

2.2 上下文学习(ICL)

为了克服传统提示学习的局限性,近期的研究发展了上下文学习。ICL是提示学习的一种特定方法,它在提示中给模型一些任务的示例。这种范式允许预训练的LLMs根据示例提供的模式来理解解决新任务,无需微调。例如,通过仔细选择一些示例,GPT-3已经展示了执行少次任务的能力。这一成功表明LLMs具有根据特定任务知识迅速适应新任务的显著能力。

3 Retrieval-Augmented Large Language Models, RA-LLMs

RAG框架由几个主要过程组成:检索、生成和增强,以及确定是否需要检索的机制。

3.1 Retrieval

给定LLMs的输入查询,RAG中的检索过程旨在从外部知识源提供相关信息,这些知识源可以是开源或闭源的。检索的具体流程进一步由是否包括预检索和后检索过程来确定。

RAG框架的核心功能之一是检索过程,它的作用是从外部数据源中提取与用户查询相关的信息。这个过程需要一个关键的组件,即检索器,它的任务是评估查询与数据库中文档的相关性,并据此检索出有用的信息。

3.1.1 检索器类型

检索方法通常可以分为两种类型:稀疏(sparse)和密集(dense),这基于信息编码方式的不同。稀疏检索是基于词的,主要应用于文本检索;而密集检索则是将查询和外部知识嵌入到向量空间中,可以应用于各种数据格式。

稀疏检索(例如TF-IDF和BM25)通常依赖于倒排索引匹配以及原始数据输入。例如,许多研究直接应用BM25进行段落级别的检索以支持它们的RAG,其中段落被特别表示为词袋,并根据词项和逆文档频率进行排名。

密集检索与稀疏检索相反,它根据特定的标准(例如语义相似性)将查询和文档嵌入到连续的向量空间中。密集检索方法通常是可训练的,因此在适应性上具有更多的灵活性和潜力。

一种简单的设计是直接使用生成模型的一部分作为检索器的嵌入层,这可能能够增强检索和生成过程之间的一致性。基于BERT的结构在检索模型中得到了广泛应用。在RAG中常见的一种检索器设计是构建双流编码器,使用BERT结构(一个编码器用于查询,另一个用于文档),这也被称为双编码器。

3.1.2 检索粒度

检索粒度指的是在索引语料库时所使用的检索单位,例如文档、段落、标记或其他级别,如实体。对于RAG来说,选择检索粒度可以显著影响模型的整体性能,包括有效性和效率,因为它们决定了数据库的存储空间以及搜索的计算成本。

  1. 文档级检索:早期的检索增强型语言模型提出检索整篇文档,然后应用机器理解模型来检测文档中的答案段落,这种方法更侧重于语言阅读和文档中关键信息的定位。

  2. 段落级检索(Chunk retrieval):在生成性语言模型中很常见,被称为段落检索。段落可以包含紧凑且完整的信息,冗余和不相关信息较少,因此成为RAG中主流的检索文本粒度。

  3. 实体级检索(Entity retrieval):与上述类型的粒度不同,实体检索从知识而非语言的角度设计。

3.1.3 预检索和后检索增强

为了确保检索质量,即提高检索结果的准确性和相关性,已经提出了各种预检索和后检索策略,以进一步增强检索器的输入和输出。

  • 预检索增强:包括查询扩展、查询改写和查询增强等方法。

    • 查询扩展(Query Expansion):如Query2doc方法,通过少量提示LLMs生成伪文档,使用伪文档中的相关信息扩展查询,以提高查询消歧能力并引导检索器。这种方法可以提升稀疏和密集检索器在信息检索数据集上的性能。

    • 假设文档嵌入(HyDE):指导LLM生成给定查询的假设文档,然后将这些假设文档作为新查询进行嵌入和检索。

    • 查询改写:旨在缩小输入文本与检索所需知识之间的差距,将原始问题改写成更有利于检索的版本。例如,Rewrite-Retrieve-Read框架,提示LLM为检索功能生成查询。

  • 后检索增强:指在将检索到的前k个文档提供给生成器之前,对其进行处理的程序,以改善检索和生成阶段之间的对齐,特别是对于闭源生成器如LLMs。

    • PRCA:使用可插拔的奖励驱动上下文适配器,对特定数据集上的轻量级适配器进行微调,并通过生成器产生的奖励进行强化学习,提取检索文档。

    • R2G方法:将不同检索方法检索到的文档进行重新排序,以增强检索结果的稳健性。

    • 知识过滤:如BlendFilter方法,同时考虑预检索查询生成混合和后检索知识过滤,以解决复杂问题和检索知识噪声问题,从而全面提高RA-LLM性能。

3.1.4 外部数据库

RAG中的检索是基于外部知识源进行的,这些知识源可以是闭源或开源的。闭源数据库通常存储键值对形式的知识,这些数据库可以以各种方式构建。键主要用于相似性匹配,可以是稀疏向量,如BM25中的向量,或者是检索编码中的密集嵌入。

值取决于具体的检索目标,大多数情况下是原始文本。例如,维基百科的每篇文章被分割成不重叠的100词段落,形成早期RAG中的2100万个文档。每个文档由密集嵌入编码并作为值和键分别保存在数据库中。

使用互联网搜索引擎,如Bing和Google,避免了维护搜索索引的工作,并可以访问最新的知识。同时,它提供了比闭源数据库更广泛的知识库。经过数十年的调整,它还可以提供高质量的排名。

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

基于LLM的生成操作通常旨在补充知识以增强生成能力。尽管检索增强型模型显示出了很有前景的结果,但它们也因为并非万能解决方案而受到批评。不加选择地用不相关的段落增强LLM可能会覆盖LLM已经拥有的潜在正确知识,从而导致错误的响应。

检索增强的必要性

  • 大多数现有方法基于LLM的初步答案或其内部推理结果来确定检索的必要性。

  • 例如,Self-RAG引入特殊标记来评估检索的必要性并控制检索行为。

  • 其他方法设计迭代提示,在生成过程中决定是否需要额外信息,这就需要为LLM调用检索或其他操作。

检索频率

  • 在很少考虑检索必要性的传统RAG中,检索频率(也称为检索步长)是确定在生成中使用检索程度的重要设计方面,从而大大影响RAG模型的整体性能。

  • 检索频率控制了依赖检索结果的程度,从而影响模型的效率和效果。

  • 当不考虑检索必要性时,检索频率通常是预定义且固定的,有三种常见设置:一次性、每n个标记一次和每个标记一次。

    • 一次性检索:仅在生成过程的开始调用检索功能一次,并尝试在那次操作中找到所有所需信息。

    • 每n个标记一次检索:在生成过程中应用,以实现更好的增强。

    • 每个标记一次检索:在生成过程中为每个标记的预测检索信息。

不同的检索频率应用可以影响整个RAG方法的有效性和效率。例如,更频繁的检索可以带来更好的性能,但也会增加计算成本。选择检索频率几乎是在计算成本和性能之间的权衡。

通俗来说,检索增强是一把双刃剑,它能够为LLMs提供额外的知识来提升生成内容的质量,但也可能引入不相关的信息,干扰模型的判断。

4 RAG 各种应用

4.1 NLP应用

由于在文本生成方面的固有能力,RAG在NLP领域有多种应用,如问答(QA)系统、聊天机器人(ChatBot)和事实验证。

4.1.1 QA系统

QA系统旨在为用户提供查询的精确答案。然而,即使在大量数据上训练,这些系统也可能缺乏最新信息或特定领域知识,这些信息并未包含在它们的训练数据中。RAG集成了一个知识检索器,在预训练、微调和推理期间能够从大语料库中检索信息,这种方法允许REALM有效检索,从而提高其回答的准确性。

4.1.2 ChatBot

ChatBot旨在以自然和会话的方式与用户互动。与QA系统不同,ChatBot专注于与用户进行连贯且内容丰富的对话。为了增强这些能力,最近的方法专注于集成RA-LLMs,以增强ChatBot与用户进行更吸引人和内容丰富的互动的能力。

4.2 下游任务

4.2.1 推荐系统

推荐系统在模拟用户偏好和提供个性化推荐方面发挥着重要作用。最近,RA-LLMs通过整合检索和生成过程,展示了在提供个性化和上下文相关推荐方面的巨大潜力。

4.2.2 代码生成

RAG的出现影响了软件工程的许多方面。例如,一些研究提出了用于代码生成和程序修复的检索增强生成范式。RAG也可以应用在表格数据处理和Text-to-SQL人物中。

THE END !

文章结束,感谢阅读。您的点赞,收藏,评论是我继续更新的动力。大家有推荐的公众号可以评论区留言,共同学习,一起进步。

  • 20
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值