同济大学王昊奋研究员团队联合复旦大学熊赟教授团队发布检索增强生成(RAG)综述,从核心范式,关键技术到未来发展趋势对 RAG 进行了全面梳理。这份工作为研究
人员绘制了一幅清晰的 RAG 技术发展蓝图,指出了未来的研究探索方向。同时,为开发者提供了参考,帮助辨识不同技术的优缺点,并指导如何在多样化的应用场景中最有效地利用这些技术。
大型语言模型(LLMs)已经成为我们生活和工作的一部分,它们以惊人的多功能性和智能化改变了我们与信息的互动方式。
然而,尽管它们的能力令人印象深刻,但它们并非无懈可击。这些模型可能会产生误导性的 “
幻觉
”,依赖的信息可能
过时
,处理特定知识时
效率不高
,
缺乏专业领域
的深度洞察,同时在推理能力上也有所欠缺。
在现实世界的应用中,数据需要不断更新以反映最新的发展,生成的内容必须是透明可追溯的,以便控制成本并保护数据隐私。因此,简单依赖于这些 “黑盒” 模型是不够的,我们需要更精细的解决方案来满足这些复杂的需求。
正是在这样的背景下,检索增强生成技术(Retrieval-Augmented Generation,RAG)应时而生,成为 AI 时代的一大趋势。
RAG 通过在语言模型生成答案之前,先从广泛的文档数据库中检索相关信息,然后利用这些信息来引导生成过程,极大地提升了内容的准确性和相关性。RAG 有效地
缓解了幻觉问题
,提高了
知识更新的速度
,并增强了内容生成的
可追溯性
,使得大型语言模型在实际应用中变得更加
实用和可信
。RAG 的出现无疑是人工智能研究领域最激动人心的进展之一。
本篇综述将带你全面了解 RAG,深入探讨其
核心范式
、
关键技术
及
未来趋势
,为读者和实践者提供对大型模型以及 RAG 的深入和系统的认识,同时阐述检索增强技术的最新进展和关键挑战。
-
论文原文:https://arxiv.org/abs/2312.10997
-
官方仓库:https://github.com/Tongji-KGLLM/RAG-Survey
一个典型的 RAG 案例如图所示。如果我们向 ChatGPT 询问 OpenAI CEO Sam Atlman 在短短几天内突然解雇随后又被复职的事情。由于受到预训练数据的限制,缺乏对最近事件的知识,ChatGPT 则表示无法回答。RAG 则通过从外部知识库检索最新的文档摘录来解决这一差距。在这个例子中,它获取了一系列与询问相关的新闻文章。这些文章,连同最初的问题,随后被合并成一个丰富的提示,使 ChatGPT 能够综合出一个有根据的回应。
RAG 的概念首次于 2020 年被提出,随后进入高速发展。RAG 技术的演进历程如图所示,相关研究进展可以明确地划分为数个关键阶段。在早期的预训练阶段,研究的焦点集中在如何通过预训练模型注入额外的知识,以此增强语言模型的能力。随着 ChatGPT 的面世,对于运用大型模型进行深层次上下文学习的兴趣激增,这推动了 RAG 技术在研究领域的快速发展。随着 LLMs 的潜力被进一步开发,旨在提升模型的可控性并满足不断演变的需求,RAG 的研究逐渐聚焦于增强推理能力,并且也探索了在微调过程中的各种改进方法。特别是随着 GPT-4 的发布,RAG 技术经历了一次深刻的变革。研究重点开始转移至一种新的融合 RAG 和微调策略的方法,并且持续关注对预训练方法的优化。
在 RAG 的技术发展过程中,我们从技术范式角度,将其总结成如下几个阶段:
前文案例中展示了经典的 RAG 流程,也被称为 Naive RAG。
主要包括包括三个基本步骤:
1. 索引 —
将文档库分割
成较短的 Chunk,并通过编码器构建向量索引。
2. 检索 — 根据问题和 chunks 的相似度检索相关文档片段。
3. 生成 — 以检索到的上下文为条件,生成问题的回答。
Naive RAG 在检索质量、响应生成质量以及增强过程中存在多个挑战。Advanced RAG 范式随后被提出,并在数据索引、检索前和检索后都进行了额外处理。通过更精细的数据清洗、设计文档结构和添加元数据等方法提升文本的一致性、准确性和检索效率。在检索前阶段则可以使用问题的重写、路由和扩充等方式对齐问题和文档块之间的语义差异。在检索后阶段则可以通过将检索出来的文档库进行重排序避免 “Lost in the Middle ” 现象的发生。
或是通过上下文筛选与压缩的方式缩短窗口长度。
随着 RAG 技术的进一步发展和演变,
新的技术
突破了传统的 Naive RAG 检索 — 生成框架,基于此我们提出模块化 RAG 的概念。
在结构上它更加自由的和灵活,引入了更多的具体功能模块,例如查询搜索引擎、融合多个回答。
技术上将检索与微调、强化学习等技术融合。
流程上也对 RAG 模块之间进行设计和编排,出现了多种的 RAG 模式。
然而,模块化 RAG 并不是突然出现的,三个范式之间是继承与发展的关系。
Advanced RAG 是 Modular RAG 的一种特例形式,而 Naive RAG 则是 Advanced RAG 的一种特例。
RAG 系统中主要包含三个核心部分,分别是 “检索”,“增强” 和 “生成”。正好也对应 RAG 中的三个首字母。想要构建一个好的 RAG 系统,增强部分是核心,则需要考虑三个关键问题:
检索什么?什么时候检索?怎么用检索的内容?
检索增强的阶段
:在预训练、微调和推理三个阶段中都可以进行检索增强,
这决定了外部知识参数化程度的高低,对应所需要的计算资源也不同。
检索增强的数据源
:增强可以采用多种形式的数据,包括非结构化的文本数据,如文本段落、短语或单个词汇。此外,也可以利用结构化数据,比如带有索引的文档、三元组数据或子图。另一种途径是不依赖外部信息源,而是充分发挥 LLMs 的内在能力,
从模型自身生成的内容中检索。
检索增强的过程
:最初的检索是一次性过程,在 RAG 发展过程中逐渐出现了迭代检索、递归检索以及交由 LLMs 自行判断
检索时刻
的自适应检索方法。