Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks

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),

    并从中不断地采样序列.

  • 不依赖检索的生成模型可以理解为 xy 的过程, 现在我们希望赋予模型检索的能力, 即希望通过如下方式进行生成

    x(x,z)y,

    即模型需要先通过 x 检索得到 z 并一起生成最后的 y.

  • 实际上, 就是 (此处的积分是勒贝格积分)

    (1)yp(y|x)=pθ(y|z,x)pη(z|x)dz,

    其中 pθ,pη 是我们构建的两个条件模型:

  • 让我们接下来考虑两种实际的任务.

  • RAG-Sequence: 即通过检索后的文档生成完整的序列, 假设我们检索出 (相同的) Tok-k 最相关的文档 (注意这些文档), 我们可以用如下方式近似 (2)

    p(y|x)ztop-k(p(|x))pη(z|x)pθ(y|x,z)=ztop-k(p(|x))pη(z|x)i=1Npθ(yi|x,z,y1:i1).

  • RAG-Token: 采用的是一种迭代的方式, 对于第 i 个需要预测的 Token, 它

    p(yi|x;y1:i1)ztop-k(p(|x,y1:i1))pη(z|x,y1:i1)pθ(yi|x,z,y1:i1),

    于是

    p(y|x)i=1Nztop-k(p(|x,y1:i1))pη(z|x,y1:i1)pθ(yi|x,z,y1:i1).

    这相当于, 每一个 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

  • 生成器采用的是 BART-large.
posted @   馒头and花卷  阅读(367)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示