Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks
Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks - 中文验证版
英文原文卡片:rag_2020.md
状态:已翻译。
元数据
- Reading status: read complete
- 年份:2020
- 计算范式:推理阶段计算与后训练 (
inference_time_compute_post_training) - PDF:2020-rag_2020.pdf
- 抽取文本:2020-rag_2020.txt
- PDF URL:https://arxiv.org/pdf/2005.11401.pdf
- OpenAlex:
- 引用计数来源/日期:
- 引用计数:
- 阅读卡创建日期:2026-06-15
计算设置
论文明确说明了设备拆分。作者在 Fairseq 中训练所有 RAG 模型和 BART 基线,使用混合精度浮点运算,分布在 8 块 32GB NVIDIA V100 GPU 上。他们还指出训练和推理可在单块 GPU 上运行。神经生成器和可训练查询编码器驻留在 GPU 上,而文档内存不必驻留于加速器内存。
非参数内存是 2018 年 12 月 Wikipedia 转储上的密集向量索引。Wikipedia 拆分为不重叠的 100 词块,产生 21M 文档。文档编码器为每个块计算嵌入,FAISS 使用分层可导航小世界近似执行最大内积搜索。作者报告 FAISS MIPS 在 CPU 上足够快,因此他们将文档索引向量存储在 CPU 上,需要约 100GB CPU 内存存储所有 Wikipedia。投稿后,他们压缩 FAISS 索引,将 CPU 内存需求降至 36GB。
可训练参数设置也是明确的。BART-large 贡献 406M 可训练参数,论文报告总共 626M 可训练参数。DPR 文档编码器用于构建索引,但在 RAG 训练期间保持固定,避免对 21M 文档语料重复重新嵌入。
瓶颈
瓶颈是加速器约束下的事实性记忆。闭卷 seq2seq 模型必须将知识压缩到参数中,因此更新事实意味着更多神经训练和部署更大的模型。但将所有 Wikipedia 存储为 GPU 上的密集向量将浪费资源,而重新训练文档编码器将迫使对 21M 块定期重建索引。设备权衡是清晰的:使用 CPU RAM 存储大型外部记忆,保留 GPU 计算用于密集神经评分。
还存在测试时瓶颈。RAG 检索 top-K 文档并对生成进行边缘化,可以是每序列一次或每个 token 一次。增加 K 可以提高答案召回率和事实性,但会增加 CPU 搜索、主机-设备移动、更大的编码器输入和更多的生成器工作。因此该方法位于参数缩放和经典检索之间:其性能取决于检索质量,但其延迟取决于生成器条件化于多少已检索段落。
方法适配
RAG 使 seq2seq Transformer 适配这种异构内存层次结构。检索器是 DPR 式:查询编码器将输入映射为密集向量,FAISS 在固定文档索引中搜索 top-K Wikipedia 块。生成器是 BART-large。对于每个已检索文档,输入和文档文本拼接后,BART 生成条件化于该对输出。RAG-Sequence 假设一个潜在文档解释整个输出;RAG-Token 允许不同的已检索文档解释不同的生成 token。
最重要的工程选择是冻结文档编码器。作者微调查询编码器和 BART 生成器,但不微调用于构建索引的文档编码器。这使 CPU 索引在训练期间保持有效。它牺牲了一些端到端适配,但避免了每当文档表示改变时重建和重新分布 21M 向量索引。
Top-K 边缘化也是一种批处理适配。已检索文档为同一输入创建多个生成器上下文,但这些上下文可以在 V100 上以混合精度由同一 BART 模型处理。检索在 CPU 上足够快,可以包含在训练和推理路径中,这正是该方法使用比模型权重自然容纳的多得多的实际记忆的原因。
证据
基准证据与内存拆分直接关联。在开放域 QA 上,RAG-Sequence 在 Natural Questions 上达到精确匹配 44.5,对比同表中 DPR 41.5 和 REALM 40.4。RAG-Token 在 NQ 上达到 44.1,WebQuestions 上 45.5,RAG-Sequence 在 CuratedTrec 上达到 52.2。这些收益是以比闭卷 T5-11B 系统少得多的可训练参数实现的;原文对比了 RAG 的 626M 可训练参数与 11B 参数的纯参数模型。
对于生成,RAG 改进的是事实性而非仅抽取精度。在 Jeopardy 问题生成中,人类评估者仅 7.1% 的成对案例中判断 BART 比 RAG 更事实,而 RAG 在 42.7% 中更事实,另有 17% 两者均事实。RAG 还改进了多样性:Jeopardy 生成的不同 trigram 比例,RAG-Token 为 46.8%,RAG-Sequence 为 53.8%,对比 BART 为 32.4%。
CPU 内存作为可编辑设备原语的最清晰证据是世界领导人索引替换。匹配索引和查询年份时,RAG 对 2016 年领导人正确回答 70%,对 2018 年领导人 68%。索引不匹配时,准确率降至 12% 和 4%。知识可以通过替换非参数记忆来更新,而非重新训练 BART。
历史影响
RAG 使检索成为神经生成的明确计算设备原语。它将事实性知识视为不必存储在加速器驻留参数中的东西,而是分离出一个大型 CPU 内存和一个 GPU 生成器,并训练模型条件化于检索到的文本。这种分离塑造了后来的 LLM 系统:向量数据库、检索管线和生成器重排序成为花费 CPU 内存和推理延迟而非仅增加参数量的常规方式。
历史影响不仅是"检索改进 QA"。论文演示了一种实用架构,其中一个中等规模的生成器加上一个巨大的外部记忆可以在知识密集型任务上与更大的闭卷模型竞争。它还表明知识新鲜度是一种系统属性:替换索引可以在不改变神经权重的情况下改变答案。
局限
设备拆分产生了自身的局限。CPU FAISS 搜索据报告足够快,但 top-K 检索仍为每个查询增加延迟和额外的内存子系统。100GB 未压缩索引(或 36GB 压缩索引)小于巨大的 GPU 驻留模型,但仍是可观的服务对象。保持文档编码器固定避免了重建,但也阻止了文档表示适配下游生成损失。
质量仍受检索约束。如果相关段落缺失、排名靠后、过时或不在 Wikipedia 中,生成器无法可靠恢复。论文还指出某些 MS-MARCO 问题无法仅从 Wikipedia 回答。RAG 在报告任务中相对于 BART 减少了幻觉,但并未消除它,并将某些失败模式从神经生成转移到语料覆盖、分块、索引和检索校准中。
链接
- 计算范式:
history/compute_regimes/inference_time_compute_post_training/README.md - 来源 PDF 和抽取文本见上方元数据。
- 队列状态:
read_complete。 - 方法索引:rag
- Ledger 更新:compute bottlenecks