Lewis P. and Perez E., et al. Retrieval-augmented generation for knowledge-intensive nlp tasks. NIPS, 2020.
概
RAG: 赋予模型检索的能力.
符号说明
- x, 输入序列;
- y, 输出序列, 长度为 N;
RAG
-
RAG 的思路其实很简单, 我们知道, 生成模型通过建模条件分布:
p(y|x),
并从中不断地采样序列.
-
不依赖检索的生成模型可以理解为 x→y 的过程, 现在我们希望赋予模型检索的能力, 即希望通过如下方式进行生成
x→(x,z)→y,
即模型需要先通过 x 检索得到 z 并一起生成最后的 y.
-
实际上, 就是 (此处的积分是勒贝格积分)
y∼p(y|x)=∫pθ(y|z,x)pη(z|x)dz,(1)
其中 pθ,pη 是我们构建的两个条件模型:

-
让我们接下来考虑两种实际的任务.
-
RAG-Sequence: 即通过检索后的文档生成完整的序列, 假设我们检索出 (相同的) Tok-k 最相关的文档 (注意这些文档), 我们可以用如下方式近似 (2)
p(y|x)≈∑z∈top-k(p(⋅|x))pη(z|x)pθ(y|x,z)=∑z∈top-k(p(⋅|x))pη(z|x)N∏i=1pθ(yi|x,z,y1:i−1).
-
RAG-Token: 采用的是一种迭代的方式, 对于第 i 个需要预测的 Token, 它
p(yi|x;y1:i−1)≈∑z∈top-k(p(⋅|x,y1:i−1))pη(z|x,y1:i−1)pθ(yi|x,z,y1:i−1),
于是
p(y|x)≈N∏i=1∑z∈top-k(p(⋅|x,y1:i−1))pη(z|x,y1:i−1)pθ(yi|x,z,y1:i−1).
这相当于, 每一个 Token 的生成我们进行一次文档的检索 (而 RAG-Sequence: 则是只检索一次).
Retriever: DPR
- 检索模型, 作者用的是 DPR, 其是一个 bi-encoder 的架构:
pη(z|x)∝exp(dT(x)q(x)),d(x)=BERTd(z),q(x)=BERTq(x).
Generator: BART
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?