大型语言模型(LLMs)已成为我们生活和工作的重要组成部分,它们以惊人的多功能性和智能化改变了我们与信息的互动方式。
然而,尽管其能力令人印象深刻,但并非无懈可击。这些模型可能会产生误导性的'幻觉',依赖的信息可能过时,处理特定知识时效率不高,缺乏专业领域的深度洞察,同时在推理能力上也有所欠缺。
在现实世界的应用中,数据需要不断更新以反映最新的发展,生成的内容必须是透明可追溯的,以便控制成本并保护数据隐私。因此,简单依赖于这些'黑盒'模型是不够的,我们需要更精细的解决方案来满足这些复杂的需求。
正是在这样的背景下,检索增强生成技术(Retrieval-Augmented Generation,RAG)应时而生,成为 AI 时代的一大趋势。RAG 通过在语言模型生成答案之前,先从广泛的文档数据库中检索相关信息,然后利用这些信息来引导生成过程,极大地提升了内容的准确性和相关性。RAG 有效地缓解了幻觉问题,提高了知识更新的速度,并增强了内容生成的可追溯性,使得大型语言模型在实际应用中变得更加实用和可信。
01 RAG 是什么?
一个典型的 RAG 案例如图所示。如果我们向 ChatGPT 询问 OpenAI CEO Sam Altman 在短短几天内突然解雇随后又被复职的事情。
由于受到预训练数据的限制,缺乏对最近事件的知识,ChatGPT 则表示无法回答。RAG 则通过从外部知识库检索最新的文档摘录来解决这一差距。在这个例子中,它获取了一系列与询问相关的新闻文章。
这些文章,连同最初的问题,随后被合并成一个丰富的提示,使 ChatGPT 能够综合出一个有根据的回应。

02 RAG 技术范式发展
RAG 的概念首次于 2020 年被提出,随后进入高速发展。RAG 技术的演进历程如图所示,相关研究进展可以明确地划分为数个关键阶段。
在早期的预训练阶段,研究的焦点集中在如何通过预训练模型注入额外的知识,以此增强语言模型的能力。
随着 ChatGPT 的面世,对于运用大型模型进行深层次上下文学习的兴趣激增,这推动了 RAG 技术在研究领域的快速发展。
随着 LLMs 的潜力被进一步开发,旨在提升模型的可控性并满足不断演变的需求,RAG 的研究逐渐聚焦于增强推理能力,并且也探索了在微调过程中的各种改进方法。
特别是随着 GPT-4 的发布,RAG 技术经历了一次深刻的变革。研究重点开始转移至一种新的融合 RAG 和微调策略的方法,并且持续关注对预训练方法的优化。

在 RAG 的技术发展过程中,我们从技术范式角度,将其总结成如下几个阶段:
1. 朴素(Naive RAG)
前文案例中展示了经典的 RAG 流程,也被称为 Naive RAG。 主要包括三个基本步骤:
- 索引 — 将文档库分割成较短的 Chunk,并通过编码器构建向量索引。
- 检索 — 根据问题和 chunks 的相似度检索相关文档片段。
- 生成 — 以检索到的上下文为条件,生成问题的回答。
2. 进阶的 RAG(Advanced RAG)
Naive RAG 在检索质量、响应生成质量以及增强过程中存在多个挑战。 Advanced RAG 范式随后被提出,并在数据索引、检索前和检索后都进行了额外处理。
- 数据索引优化:通过更精细的数据清洗、设计文档结构和添加元数据等方法提升文本的一致性、准确性和检索效率。
- 检索前处理:可以使用问题的重写(Query Rewriting)、路由(Routing)和扩充(Augmentation)等方式对齐问题和文档块之间的语义差异。
- 检索后处理:可以通过将检索出来的文档库进行重排序(Re-ranking)避免'Lost in the Middle'现象的发生。或是通过上下文筛选与压缩的方式缩短窗口长度,保留最相关的信息。







