你有没有过这样的经历——考试时脑子里闪过一个模糊的答案,虽然不确定对不对,但顺着这个线索一查,居然找到了正确答案?
扩散语言模型(Diffusion Language Model)也有类似的体验。只不过,它把那些"不确定的答案"直接扔掉了。
直到现在,才有人意识到:那些被扔掉的答案,才是最值钱的。
扩散模型的"废料回收站"
先说背景。扩散语言模型的工作方式和 GPT 完全不同。GPT 是一个字一个字往外蹦,而扩散模型是先把整段文字"打码"——每个位置都变成噪声——然后一步步去噪,每一步同时预测所有位置的内容。
关键来了:每一步去噪时,模型会对每个位置给出一个预测,但只保留"高置信度"的 token,低置信度的直接丢弃,等下一步重新猜。
这就像一个学生做填空题,先把所有空都填上自己觉得对的答案,然后只保留有把握的,没把握的擦掉重来。
SARDI 的核心发现是:那些被擦掉的答案,往往已经包含了关键信息。
蒙娜丽莎在哪个城市?
论文用了一个精妙的例子来说明。假设问题是:"收藏蒙娜丽莎的博物馆所在的城市是哪里?"
这个问题需要两步推理:
- 蒙娜丽莎在卢浮宫
- 卢浮宫在巴黎
传统的 RAG 只能用问题本身去检索,但问题里既没有"卢浮宫"也没有"巴黎",第一步的检索就卡住了。
而扩散模型在去噪过程中,即使还没确定最终答案,中间状态可能已经浮现出"卢浮宫"这个词——虽然置信度还不够高,不足以写进最终输出,但已经足够用来做检索了!
用"卢浮宫"去检索,立刻就能找到"卢浮宫在巴黎"的证据。这就是 SARDI 的核心思路:用中间状态的低置信度 token 作为检索查询,让模型"偷看自己的未来"。
两个发现,一个框架
SARDI 建立在两个实证发现之上:
发现一:中间状态是天然的"前瞻信号"。 在多跳问答中,扩散模型的中间去噪状态比自回归模型更早浮现出桥接实体(bridge entity)。自回归模型必须先写出"卢浮宫"才能检索下一步,而扩散模型在还没确定写不写"卢浮宫"的时候,就已经"感觉"到了它。
发现二:RAG 让并行解码变得可行。 扩散模型一直有个痛点——同时预测多个 token 容易产生冲突。但论文发现,一旦有了检索到的证据作为上下文,很多输出 token 其实是从证据中直接复制或改写的,彼此之间条件独立,冲突大幅减少。
这两个发现一拍即合:中间状态提供更好的检索信号 → 检索到的证据降低 token 间依赖 → 并行解码更顺畅 → 生成更快的中间状态 → 又能做更好的检索。
SARDI 就是在这个正循环中,把检索和去噪交织在一起:每一步去噪后,用部分去噪的序列构建查询,检索新证据,然后基于更新后的上下文继续去噪。
实验结果:又快又好
在五个多跳问答基准上,SARDI 在质量-延迟前沿上全面领先:
- 相比训练无关的扩散基线,SARDI 在相同延迟下质量更高
- 相比训练无关的自回归基线(包括 FLARE),SARDI 在更低延迟下达到相同甚至更好的质量
- 在 MuSiQue 数据集上,SARDI 用不到一半的延迟达到了与 FLARE 相当的准确率
而且 SARDI 完全不需要额外训练,即插即用,适配任何能产生推理轨迹的离散扩散语言模型。
为什么这件事重要?
SARDI 的意义不只是"又一种 RAG 方法"。它揭示了一个更深层的事实:扩散语言模型的架构特性——并行预测、渐进去噪——不只是速度优势,更是信息优势。
自回归模型的信息流是严格从左到右的,它永远只能基于已经写下的内容来决定下一步。而扩散模型的信息流是全局的、并行的,每个位置都能"感知"其他位置的倾向,即使这些倾向还不够确定。
这就像一个团队解题:自回归模型是一个人从头到尾一步步写,扩散模型是整个团队同时在不同位置尝试,然后汇总各自有把握的部分。SARDI 的贡献在于——它让团队里那些"不太确定但可能对"的成员,也能为整个团队的决策提供线索。
那些被丢弃的 token,不是废料,是先知。
📄 论文:Self-Augmenting Retrieval for Diffusion Language Models
💻 代码:github.com/pauljngr/SARDI
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。