大语言模型落地关键技术:检索增强生成 RAG
1、什么是 RAG?
RAG 是检索增强生成(Retrieval-Augmented Generation)的简称,是当前最火热的大语言模型应用落地的关键技术,主要用于提高语言模型的效果和准确性。它结合了两种主要的 NLP 方法:检索(Retrieval)和生成(Generation)。
检索(Retrieval):这一部分的工作是从大量的文本数据中检索出与输入问题最相关的信息。它通常使用一个检索系统,用于大规模的文档集合(例如维基百科或私有知识库)中寻找与输入相关的文段。
生成(Generation):生成部分则使用类似 GPT 的语言模型,它会根据检索到的信息来生成响应或回答。这个过程涉及理解检索到的内容,并在此基础上生成连贯、相关且信息丰富的文本。
RAG 模型的关键在于它结合了这两种方法的优点:检索系统能提供具体、相关的事实和数据,而生成模型则能够灵活地构建回答,并融入更广泛的语境和信息。 这种结合使得 RAG 模型在处理复杂的查询和生成信息丰富的回答方面非常有效。这种技术在问答系统、对话系统和其他需要理解和生成自然语言的应用中非常有用。
2、RAG 发展历程
RAG 于 2020 年中期由 Lewis 等人提出,是 LLMs 领域中的一种范式,可增强生成任务。具体而言,RAG 包括一个初始的检索步骤,LLMs 在此步骤中查询外部数据源以获取相关信息,然后才回答问题或生成文本。这个过程不仅为后续的生成阶段提供信息,还确保回答基于检索到的证据,从而显著提高了输出的准确性和相关性。
在推断阶段动态检索来自知识库的信息使 RAG 能够解决生成事实错误内容的问题,通常被称为'幻觉'。将 RAG 整合到 LLMs 中已经迅速被采用,并成为完善聊天机器人能力和使 LLMs 更适用于实际应用的关键技术。
RAG 的演进轨迹大致分为四个阶段:
- 创始阶段(2017 年左右):与 Transformer 架构的出现相一致,主要重点是通过预训练模型(PTM)来吸收额外的知识以增强语言模型。这个时代见证了 RAG 的基础工作主要集中在优化预训练方法上。
- 沉寂期:在这个初始阶段之后,出现了相对沉寂的时期,与 RAG 相关的研究进展较少。
- LLM 爆发期:随后 ChatGPT 的出现标志着 LLMs 领域的重要时刻,社区的重点转向利用 LLMs 的能力来实现更高的可控性和解决不断变化的需求。大部分 RAG 工作集中在推断上,只有少数工作致力于微调过程。
- 混合增强期:随着 LLMs 能力的不断提高,特别是 GPT-4 的推出,RAG 技术的格局发生了重大变化。重点转向了RAG 和微调的优势相结合的混合方法,同时也有少数人继续关注优化预训练方法。
3、RAG 的工作流
一个典型的 RAG 应用工作流程如下:
用户向大模型查询最近引起广泛关注的事件,这些事件引发了大量的公众讨论。作为最著名和广泛使用的 LLMs,受限于其预训练数据,模型缺乏对最新事件的了解。RAG 通过从外部知识库中检索最新的文档摘录来解决这一问题。在这种情况下,它获取了与查询相关的一些新闻文章。这些文章连同最初的问题被合并成一个丰富的提示,使模型能够合成一个知情的回答。
这个示例说明了 RAG 的过程,展示了它通过实时信息检索来增强模型的响应能力。从技术上讲,RAG 已经通过各种创新方法得到丰富,这些方法解决了关键问题,例如'要检索什么'、'何时检索'和'如何使用检索到的信息'。
关于'要检索什么'的研究已经从简单的标记检索和实体检索发展到更复杂的结构,如块和知识图。研究重点放在检索的粒度和数据结构的级别上。粗粒度带来更多的信息,但精度较低。检索结构化文本提供了更多信息,但效率较低。
关于'何时检索'的问题已经产生了各种策略,从单一检索到自适应检索和多次检索,再到高频率检索的方法。
4、RAG 增强检索的框架
RAG 研究范式不断发展,我们将其分为三种类型:基础 RAG(Naive RAG)、高级 RAG(Advanced RAG)和模块化 RAG(Modular RAG)。
4.1 基础 RAG
基础 RAG 是检索增强生成(RAG)范式的最早形式之一,其基本概念是将外部检索与大型语言模型(LLMs)的生成能力结合在一起。在基础 RAG 中,检索通常是基于查询的,并且用于检索外部知识库或数据源中的相关信息。 一旦获得了检索到的信息,它们可以与 LLMs 的内部知识结合在一起,以生成更准确和相关的文本或回答。
然而,基础 RAG 虽然在改善 LLMs 的性能方面取得了一定的成功,但也存在一些限制和不足之处。其中一些主要限制包括:


