中文精炼导读
核心观点
- Jay Alammar 图解 DeepMind 的 RETRO(Retrieval-Enhanced TRansfOrmer):通过给语言模型增加"检索"能力,大幅缩小模型却达到 GPT-3 级别的性能——RETRO 只有 75 亿参数,约为 GPT-3(1,850 亿参数)的 4%,性能却与之相当。
- 核心思想是"把语言信息与世界知识信息分离":语言建模本质是预测下一个词,有时需要事实知识(如"《沙丘》电影于____年上映")、有时只靠语言习惯就够;把所有知识都塞进模型参数对语言信息合理、对事实知识却极低效——用检索数据库承担"事实与常识的昂贵存储",模型就能小得多。
- 检索数据库是一个键值存储:键是标准 BERT 句子嵌入,值包含两部分——Neighbor(用于计算键的文本)与 Completion(原文中的后续文本);数据库基于 MassiveText 数据集、含 2 万亿多语言 token,Neighbor 与 Completion 块最长 64 个 token。
- 工作流程:输入 prompt 先经 BERT 得到上下文向量、平均成句子嵌入,用它做近似最近邻搜索(Google 的 ScaNN),取两个最近邻居及其续写拼进模型输入;RETRO 是 encoder-decoder 架构,encoder 处理邻居产生 K/V 矩阵,decoder 从第 9 层开始每三层一个 RETRO 块,用"分块交叉注意力"(Chunked Cross-Attention)让输入 attend 到邻居信息。
- 重要启示:把模型做得越来越大并不是提升性能的唯一路径——检索增强让训练更快(减少对训练数据记忆的需求)、让模型能部署在更小更便宜的 GPU 上、并可按需微调。

内容精讲
文章先回顾了 2017 年以来 LLM 的演进:原始 Transformer 刷新机器翻译纪录,BERT 普及"预训练 + 微调"流程并开始支撑 Google 搜索与 Bing,GPT-2 展示机器能写得像人类,T5/T0 把迁移学习推向极致(把各种任务建模成 text-to-text),GPT-3 则证明生成模型的规模放大能带来惊人的涌现应用。很长一段时间里,"把模型做得越来越大"似乎是提升性能的主要方式。而 DeepMind 的 RETRO 与 OpenAI 的 WebGPT 逆转了这一趋势:给较小的生成模型加上"搜索/查询信息"的能力,就能与巨型模型持平。
为什么这件事重要?关键在于"语言信息"与"世界知识信息"的分离。语言建模训练模型预测下一个词——本质是填空。填空有时需要事实知识(《沙丘》电影在哪年上映),有时只靠对语言的熟悉就够("其人气经口口相传扩散,让 Herbert 得以开始全职……")。这个区别很重要,因为 LLM 把知道的一切都编码在模型参数里——对语言信息合理,对事实与世界知识却低效。给语言模型加检索方法,就能减少它需要编码在参数里才能良好生成的信息量;训练变快(对训练数据记忆的需求减少)、任何人都能在更小更便宜的 GPU 上部署并随意微调。
机制上,RETRO 是一个与原始 Transformer 一样的 encoder-decoder 模型,只是用一个检索数据库增强输入序列:模型在数据库中找到最可能的序列并加入输入,再发挥魔力生成输出预测。数据库是一个键值存储:键是标准 BERT 句子嵌入,值包含两部分——Neighbor(用来计算键的文本)和 Completion(原文中该文本的延续)。数据库基于 MassiveText 数据集、包含 2 万亿多语言 token;Neighbor 与 Completion 块都最长 64 个 token。

检索流程很清晰:输入 prompt 在进入 RETRO 之前先经过 BERT,输出的上下文向量被平均成句子嵌入,用这个嵌入去查询数据库——用近似最近邻搜索(ScaNN)找到两个最近邻居,它们的文本(连同各自的 Completion)成为 RETRO 的输入。RETRO 会把输入 prompt 切成多个块(除第一块外每块都做检索增强),但文章为了直观只聚焦一个块的处理。
架构层面,RETRO 由一个 encoder 栈和一个 decoder 栈组成。encoder 处理检索到的邻居,输出后续注意力会用的 KEYS 和 VALUES 矩阵(由两个标准 Transformer encoder 块构成)。decoder 处理输入文本,就像 GPT 一样:对 prompt token 做因果自注意力(只能 attend 之前的 token),然后过 FFNN。关键在 RETRO 解码块:每三层有一个 RETRO 块(第 9、12、15…32 层;两个较小的 Retro 模型与 Retrofit 模型从第 6 层开始),它用"分块交叉注意力"(Chunked Cross-Attention)让输入能 attend 到之前检索到的邻居——正是在这一步,检索到的信息可以"瞥一眼"它完成 prompt 需要的日期等事实。文章结尾列出大量相关工作(Continuous Cache、Nearest Neighbor LMs、Meta 的 RAG 博客、REALM、DPR、FiD、BlenderBot 2.0 等),说明检索增强语言模型是研究社区长期活跃的方向。
阅读价值
适合 NLP 研究者、LLM 应用工程师以及对"如何用小模型达到大模型性能"感兴趣的读者:这篇文章把 RETRO 的数据库结构、BERT 嵌入检索、encoder-decoder 架构与 Chunked Cross-Attention 讲得直观易懂;它也提供了一个重要的思维框架——模型参数不该是"事实与常识的昂贵存储",把知识与推理解耦是通往更小、更快、更可部署模型的一条现实路径。
本文为中文精炼导读,由 AI 基于原文整理,内容与图片版权归原作者所有。原文: http://jalammar.github.io/illustrated-retrieval-transformer/