大型语言模型(LLMs)在语言理解和生成方面展示了革命性的能力,但它们仍然面临着一些固有的局限性,比如幻觉和过时的内部知识。鉴于RAG在提供最新和有帮助的辅助信息方面的强大能力,检索增强型大型语言模型(Retrieval-Augmented Large Language Models, RA-LLMs)应运而生。RA-LLMs利用外部权威知识库,而不仅仅依赖模型的内部知识,来提高LLMs的生成质量。
本文全面回顾 RA-LLMs三个主要技术视角:架构、训练策略和应用。并详细说明了每个领域的挑战以及RA-LLMs的相应能力。
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架构非常适合涉及将一个序列转换为另一个序列的任务,如机器翻译、摘要和对话响应生成。
提示学习(Prompt Learning)
提示学习
由于LLMs拥有庞大的参数量,提示学习作为一种范式出现,利用LLMs的能力来执行各种任务,而不是广泛地微调LLMs。
提示学习通过精心设计输入来引导模型在LLMs中执行下游任务。例如,早期方法提供手工制作的模板来处理自然语言处理(NLP)中的各种任务。编码器模型如BERT通常采用填空提示,因为它们非常符合其预训练任务的形式。
对于像GPT这样的其他模型,前缀提示更适合,因为它们与生成任务相吻合。然而,手工设计的提示依赖于人类经验,没有有效性保证。为了解决这个限制,发展了软提示调整,学习可训练的连续提示嵌入。
上下文学习(ICL)
为了克服传统提示学习的局限性,近期的研究发展了上下文学习。ICL是提示学习的一种特定方法,它在提示中给模型一些任务的示例。这种范式允许预训练的LLMs根据示例提供的模式来理解解决新任务,无需微调。例如,通过仔细选择一些示例,GPT-3已经展示了执行少次任务的能力。这一成功表明LLMs具有根据特定任务知识迅速适应新任务的显著能力。
Retrieval-Augmented Large Language Models, RA-LLMs
RAG框架由几个主要过程组成:检索、生成和增强,以及确定是否需要检索的机制。
Retrieval
给定LLMs的输入查询,RAG中的检索过程旨在从外部知识源提供相关信息,这些知识源可以是开源或闭源的。检索的具体流程进一步由是否包括预检索和后检索过程来确定。
RAG框架的核心功能之一是检索过程,它的作用是从外部数据源中提取与用户查询相关的信息。这个过程需要一个关键的组件,即检索器,它的任务是评估查询与数据库中文档的相关性,并据此检索出有用的信息。
检索器类型
检索方法通常可以分为两种类型:稀疏(sparse)和密集(dense),这基于信息编码方式的不同。稀疏检索是基于词的,主要应用于文本检索;而密集检索则是将查询和外部知识嵌入到向量空间中,可以应用于各种数据格式。
稀疏检索(例如TF-IDF和BM25)通常依赖于倒排索引匹配以及原始数据输入。例如,许多研究直接应用BM25进行段落级别的检索以支持它们的RAG,其中段落被特别表示为词袋,并根据词项和逆文档频率进行排名。
密集检索与稀疏检索相反,它根据特定的标准(例如语义相似性)将查询和文档嵌入到连续的向量空间中。密集检索方法通常是可训练的,因此在适应性上具有更多的灵活性和潜力。
一种简单的设计是直接使用生成模型的一部分作为检索器的嵌入层,这可能能够增强检索和生成过程之间的一致性。基于BERT的结构在检索模型中得到了广泛应用。在RAG中常见的一种检索器设计是构建双流编码器,使用BERT结构(一个编码器用于查询,另一个用于文档),这也被称为双编码器。
检索粒度
检索粒度指的是在索引语料库时所使用的检索单位,例如文档、段落、标记或其他级别,如实体。对于RAG来说,选择检索粒度可以显著影响模型的整体性能,包括有效性和效率,因为它们决定了数据库的存储空间以及搜索的计算成本。
-
文档级检索:早期的检索增强型语言模型提出检索整篇文档,然后应用机器理解模型来检测文档中的答案段落,这种方法更侧重于语言阅读和文档中关键信息的定位。
-
段落级检索(Chunk retrieval):在生成性语言模型中很常见,被称为段落检索。段落可以包含紧凑且完整的信息,冗余和不相关信息较少,因此成为RAG中主流的检索文本粒度。
-
实体级检索(Entity retrieval):与上述类型的粒度不同,实体检索从知识而非语言的角度设计。
预检索和后检索增强
为了确保检索质量,即提高检索结果的准确性和相关性,已经提出了各种预检索和后检索策略,以进一步增强检索器的输入和输出。
-
预检索增强:包括查询扩展、查询改写和查询增强等方法。
-
查询扩展(Query Expansion):如Query2doc方法,通过少量提示LLMs生成伪文档,使用伪文档中的相关信息扩展查询,以提高查询消歧能力并引导检索器。这种方法可以提升稀疏和密集检索器在信息检索数据集上的性能。
-
假设文档嵌入(HyDE):指导LLM生成给定查询的假设文档,然后将这些假设文档作为新查询进行嵌入和检索。
-
查询改写:旨在缩小输入文本与检索所需知识之间的差距,将原始问题改写成更有利于检索的版本。例如,Rewrite-Retrieve-Read框架,提示LLM为检索功能生成查询。
-
后检索增强:指在将检索到的前k个文档提供给生成器之前,对其进行处理的程序,以改善检索和生成阶段之间的对齐,特别是对于闭源生成器如LLMs。
-
PRCA:使用可插拔的奖励驱动上下文适配器,对特定数据集上的轻量级适配器进行微调,并通过生成器产生的奖励进行强化学习,提取检索文档。
-
R2G方法:将不同检索方法检索到的文档进行重新排序,以增强检索结果的稳健性。
-
知识过滤:如BlendFilter方法,同时考虑预检索查询生成混合和后检索知识过滤,以解决复杂问题和检索知识噪声问题,从而全面提高RA-LLM性能。
外部数据库
RAG中的检索是基于外部知识源进行的,这些知识源可以是闭源或开源的。闭源数据库通常存储键值对形式的知识,这些数据库可以以各种方式构建。键主要用于相似性匹配,可以是稀疏向量,如BM25中的向量,或者是检索编码中的密集嵌入。
值取决于具体的检索目标,大多数情况下是原始文本。例如,维基百科的每篇文章被分割成不重叠的100词段落,形成早期RAG中的2100万个文档。每个文档由密集嵌入编码并作为值和键分别保存在数据库中。
使用互联网搜索引擎,如Bing和Google,避免了维护搜索索引的工作,并可以访问最新的知识。同时,它提供了比闭源数据库更广泛的知识库。经过数十年的调整,它还可以提供高质量的排名。
检索增强的必要性和频率
基于LLM的生成操作通常旨在补充知识以增强生成能力。尽管检索增强型模型显示出了很有前景的结果,但它们也因为并非万能解决方案而受到批评。不加选择地用不相关的段落增强LLM可能会覆盖LLM已经拥有的潜在正确知识,从而导致错误的响应。
检索增强的必要性:
-
大多数现有方法基于LLM的初步答案或其内部推理结果来确定检索的必要性。
-
例如,Self-RAG引入特殊标记来评估检索的必要性并控制检索行为。
-
其他方法设计迭代提示,在生成过程中决定是否需要额外信息,这就需要为LLM调用检索或其他操作。
检索频率:
-
在很少考虑检索必要性的传统RAG中,检索频率(也称为检索步长)是确定在生成中使用检索程度的重要设计方面,从而大大影响RAG模型的整体性能。
-
检索频率控制了依赖检索结果的程度,从而影响模型的效率和效果。
-
当不考虑检索必要性时,检索频率通常是预定义且固定的,有三种常见设置:一次性、每n个标记一次和每个标记一次。
-
一次性检索:仅在生成过程的开始调用检索功能一次,并尝试在那次操作中找到所有所需信息。
-
每n个标记一次检索:在生成过程中应用,以实现更好的增强。
-
每个标记一次检索:在生成过程中为每个标记的预测检索信息。
不同的检索频率应用可以影响整个RAG方法的有效性和效率。例如,更频繁的检索可以带来更好的性能,但也会增加计算成本。选择检索频率几乎是在计算成本和性能之间的权衡。
通俗来说,检索增强是一把双刃剑,它能够为LLMs提供额外的知识来提升生成内容的质量,但也可能引入不相关的信息,干扰模型的判断。
RAG 各种应用
NLP应用
由于在文本生成方面的固有能力,RAG在NLP领域有多种应用,如问答(QA)系统、聊天机器人(ChatBot)和事实验证。
QA系统
QA系统旨在为用户提供查询的精确答案。然而,即使在大量数据上训练,这些系统也可能缺乏最新信息或特定领域知识,这些信息并未包含在它们的训练数据中。RAG集成了一个知识检索器,在预训练、微调和推理期间能够从大语料库中检索信息,这种方法允许REALM有效检索,从而提高其回答的准确性。
ChatBot
ChatBot旨在以自然和会话的方式与用户互动。与QA系统不同,ChatBot专注于与用户进行连贯且内容丰富的对话。为了增强这些能力,最近的方法专注于集成RA-LLMs,以增强ChatBot与用户进行更吸引人和内容丰富的互动的能力。
下游任务
推荐系统
推荐系统在模拟用户偏好和提供个性化推荐方面发挥着重要作用。最近,RA-LLMs通过整合检索和生成过程,展示了在提供个性化和上下文相关推荐方面的巨大潜力。
代码生成
RAG的出现影响了软件工程的许多方面。例如,一些研究提出了用于代码生成和程序修复的检索增强生成范式。RAG也可以应用在表格数据处理和Text-to-SQL人物中。
如何学习大模型 AI ?
由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。
但是具体到个人,只能说是:
“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。
这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
第一阶段(10天):初阶应用
该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。
- 大模型 AI 能干什么?
- 大模型是怎样获得「智能」的?
- 用好 AI 的核心心法
- 大模型应用业务架构
- 大模型应用技术架构
- 代码示例:向 GPT-3.5 灌入新知识
- 提示工程的意义和核心思想
- Prompt 典型构成
- 指令调优方法论
- 思维链和思维树
- Prompt 攻击和防范
- …
第二阶段(30天):高阶应用
该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。
- 为什么要做 RAG
- 搭建一个简单的 ChatPDF
- 检索的基础概念
- 什么是向量表示(Embeddings)
- 向量数据库与向量检索
- 基于向量检索的 RAG
- 搭建 RAG 系统的扩展知识
- 混合检索与 RAG-Fusion 简介
- 向量模型本地部署
- …
第三阶段(30天):模型训练
恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。
到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?
- 为什么要做 RAG
- 什么是模型
- 什么是模型训练
- 求解器 & 损失函数简介
- 小实验2:手写一个简单的神经网络并训练它
- 什么是训练/预训练/微调/轻量化微调
- Transformer结构简介
- 轻量化微调
- 实验数据集的构建
- …
第四阶段(20天):商业闭环
对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。
- 硬件选型
- 带你了解全球大模型
- 使用国产大模型服务
- 搭建 OpenAI 代理
- 热身:基于阿里云 PAI 部署 Stable Diffusion
- 在本地计算机运行大模型
- 大模型的私有化部署
- 基于 vLLM 部署大模型
- 案例:如何优雅地在阿里云私有部署开源大模型
- 部署一套开源 LLM 项目
- 内容安全
- 互联网信息服务算法备案
- …
学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。
如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。