深度解析RAG技术在大模型时代的原理与实践

RAG 的概念

QCon 北京 2024 上涉及了很多大模型应用落地场景,出现比较多的应用模式关键词是:AI Agent 和 RAG(RAG 也常被在 Agent 的 Cot 或是 Mutil-Agent 协作的流程中)。本文将结合 Qcon 的见闻,基于 RAG 的核心组件、RAG 的常见范式,RAG 的应用场景及 RAG 的评估,介绍当前各大公司使用 RAG 进行相应应用落地实践情况。
在这里插入图片描述

01. 什么是 RAG?

在 LLM 时代,RAG 的具体定义指的是,当回答问题或生成文本时,首先从大量文档中检索相关信息。随后,利用这些检索到的信息来生成响应或文本,从而提高预测质量。一个通用的 RAG 管道 它主要由 3 个步骤组成:

  • 索引:文档被分割成块,编码成向量,并存储在向量数据库中;
  • 检索:根据语义相似性检索与问题最相关的前 k 个块;
  • 生成:将原问题和检索到的词块一起输入大语言模型中,生成最终答案。

img

RAG 文本问答

img

RAG 多模态问答

img

02. 为什么用 RAG?

大模型的挑战

大型语言模型展示了强大的能力,但也面临着幻觉、过时知识和不透明推理等挑战。检索增强生成(RAG)通过整合外部数据库的知识,提高了生成内容的准确性和可信度。RAG 将大型语言模型的内在知识与外部数据库融合,为知识密集型任务带来了前景。

img

RAG 与其它技术比较

在大语言模型的优化方法中,RAG 经常与 Fine-tuning(FT)和提示工程相比较。我们用象限图从外部知识需求和模型适配需求两个维度来说明三种方法的差异。

提示工程: 利用模型的固有功能,而对外部知识和模型适应的需求最少。

RAG: 可以比作为信息检索提供量身定制的教科书模型,非常适合精确的信息检索任务。早期阶段(Naive RAG),几乎不需要对模型进行修改

FT: 需要进一步训练模型,针对不同下游特定任务,需要重新训练整个庞大的模型;相当于学生随着时间的推移内化知识,适用于需要复制特定结构、风格或格式的场景。

img

有人提出过这个疑问,为什么要用 RAG 来做增强,而不选择比较容易想到的微调来做,这里提及了 RAG 的优势以及和微调的差异,在这里列出两者的对比,主要是为了让大家在进行问题定位和解决方案思考时能参考,权衡好什么时候该用哪些部分。

img

img

RAG 的分类

01. 从演进范式角度分类

RAG 研究范式在不断发展和演进,我们将其分为三个阶段:初级 RAG、高级 RAG 和模块化 RAG。虽然早期的 RAG 在成本效益上表现良好,并且性能优于传统的大语言模型 (LLM),但它仍面临着诸多挑战。高级 RAG 和模块化 RAG 的设计是为了解决原始 RAG (Naive RAG) 的特定不足。下面是三种开发范式解释和相应用组件部分示意图:

朴素 RAG: 主要由三部分组成:索引、检索和生成,直接将输入数据向量化,然后对向量数据库进行匹配,最后将输入数据与向量数据库匹配结果共同放入大模型中生成最终结果;

高级 RAG: 增加了对数据的预筛选,围绕预检索和后检索提出了多种优化策略,其过程与朴素 RAG 相似,仍然遵循链式结构。

模块化 RAG: 继承和发展了以前的范式,整体上显示出更大的灵活性。这体现在引入多个特定的功能模块和替换现有模块上。整个过程不仅限于顺序检索和生成,还包括迭代和自适应检索等方法。

img

02. 从检索与生成协同角度

根据检索器如何增强生成器,我们将 RAG 基础范式分为 4 个不同类别:

基于查询的 RAG:利用用户 query 检索得到相关文档,将检索结果跟用户 query 拼接到一起作为生成模型的输入。这种方式是直接利用外部检索知识来指导生成模型,是目前 RAG 的主流范式。

基于潜在表征的 RAG:利用用户 query 检索得到相关文档,并获取对应文档的向量表征,在生成模型生成阶段融入知识文档的表征信息。这是一种隐式利用外部检索知识指导生成模型的方式。

基于 Logit 的 RAG:生成模型在 decoder 阶段计算下一个 token 的 logit 时,同时考虑生成预测的结果跟检索模块返回的信息。这种方式将检索模块与生成模块视为两个独立的链路,再联合两者的 logit 值。

Speculative RAG:利用检索模块来替代生成模块的方式,主要用于节省资源跟加速文本生成。这种方式提供一段候选回复,让生

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值