SpeakGR把生成检索语言漂移砍81%到94%

Can Generative Retrievers Learn Semantic IDs Without Forgetting How to Speak?

Junchen Fu, Kleomenis Katevas, Vandana Rajan, Sofía Celi, Hamed Haddadi

cs.IR

2026-09-28

SpeakGR用学生自采样前缀上的前向KL保住说话,相对SFT将WikiText漂移降81%–94%,检索仍有效。

这篇在解决什么

生成检索把找文档改成自回归生成一段语义标识符。模型在词表里加入 SID token,查询进来就直接吐出文档编号,不再维护显式倒排索引。交互搜索需要同一模型先检索,再回答、追问、澄清。

问题是标准训练只优化 SID 生成,文本词表上的行为没有任何约束。格拉斯哥大学与 Brave 的实验把这件事量出来了。Qwen3-0.6B 在 MS MARCO 上做文档到 SID 的 indexing,WikiText-2 困惑度从 31.69 在 25 步内升到 6956。检索 Recall@10 还在涨,说话能力已经塌了。六个骨干与数据集组合里,纯监督微调的 WikiText 前向 KL 介于 5.545 与 13.005。先前生成检索论文几乎只报 Recall,语言侧损伤基本没人量。不把说话能力保住,后面那些「同一模型先检索再回答」的设想根本无从验证。

方法

SpeakGR 把同一套学生参数绑上两个目标。检索侧是带层级约束的 SID 交叉熵:每个位置只在该层合法码本里归一化,序列固定长度,结尾 EOS 只用来对齐格式、不算进检索损失。说话侧接近 on-policy distillation。学生把 SID logit 全部遮掉,只在原文本词表上采样续写;冻结的预训练模型不写句子,只在这些学生前缀上给出下一 token 分布;再用前向 KL 把学生拉回原分布。前向 KL 惩罚的是原模型看好的词学生给得不够。前缀由学生自己走出来,约束就落在 SID 专精过程中它实际会碰到的语言状态上。

固定版把两个损失等权相加。Adaptive SpeakGR 多一个控制器:每步用当前 preservation KL 的指数滑动平均去乘 λ,漂移大了加压、小了放松,并设死区与上下界。默认参考水平是每 token 1 nat。训练仍走三阶段:文档到 SID 的 indexing 2000 步、伪查询到 SID 8000 步、人工查询微调 2000 步。SID 用 RQ-VAE 把 Qwen3-Embedding 文档向量量化成 5 个 token,每层 256 个码本。语言正则的 prompt 池有 4096 条,一半 WikiText-2 训练前缀,一半指令风格;WikiText-2 测试集只用于评测。

结果

骨干是 Qwen3-0.6B、Qwen3-1.7B、Gemma-3-1B-IT,语料是处理后的 MS MARCO(319872 篇)和 Natural Questions(109739 篇)。语言指标在同一批 16384 个 WikiText-2 位置上计算,检索用 trie 约束解码。

相对纯 SFT,SpeakGR 把 WikiText 前向 KL 在 MS MARCO 上降 81.3% 到 93.8%,在 NQ 上降 81.2% 到 85.2%。PPL 从五位数甚至千万级回到两位数,Top-1 token 一致率从接近 0 回到约 46% 到 58%。SID 概率质量从最高 26.37% 压到 1% 上下。检索没有一起毁掉,但有代价:Qwen 在 NQ 上固定 SpeakGR 的 Recall 掉得更明显,Gemma 两边检索还略涨。Adaptive SpeakGR 在六组里有五组检索优于固定版,语言漂移仍远低于纯 SFT。

以 Qwen3-0.6B 加 MS MARCO 为例:

方法R@10FKLPPLTop-1
Basen/a031.69100%
SFT-only0.63868.103539670.13%
SpeakGR0.63491.51988.4846.15%
Adaptive0.64981.728105.8643.24%

同设置下,离线语言 replay 的 FKL 仍有 8.672,R@10 掉到 0.5903。ORBIT 式按参数符号差异回并,高度依赖阈值:松阈值 τ=0.10 时 R@10 为 0.6584、FKL 为 7.391;紧阈值 τ=0.007 时 FKL 降到 0.273,R@10 只剩 0.1980。SpeakGR 落在检索还在、分布没崩这一段。附录指出,SFT 多出来的负对数似然里只有 0.58% 来自概率漏到 SID token,真正坏掉的是文本词表内部的相对概率。固定 λ 取 0.1 到 1.5,都能把 FKL 从 8.103 压到约 1.43 到 1.53,正则本身不脆弱。ε=0.25 的过严自适应反而两边都差(R@10 0.5458,FKL 2.507);中等 ε 里最好的 R@10 是 0.6584(ε=1.5,FKL 1.566)。

为什么重要

想用同一个 LLM 既当生成式检索器又当对话模型的人,这篇把检索论文几乎不报的副作用写清楚了:SID 专精可以在 25 步内把语言模型变成只会吐标识符的机器。SpeakGR 的配方不花哨,就是检索交叉熵加上学生自采样前缀上的前向 KL,可以接到现有 DSI、NCI 式训练流水线上。Adaptive 变体省的是事先选定一个 λ 用完全程;论文也写明,选得好的固定权重并不弱于自适应。

别把这篇读成检索 SOTA。目标是联合可训练,不是榜单第一。WikiText KL 降下来,只说明 next-token 分布更接近预训练模型,不等于数学、代码或澄清式多轮对话都还在。

局限与存疑

论文自己划的边界很清楚。语言评测几乎全绑在 WikiText-2 的分布漂移上,没有 retrieve-resolve-generate 的端到端任务,也没有测数学推理和代码。骨干只有三个小模型,最大 1.7B;语料是 MS MARCO 与 NQ 子集;多数对照单一种子、一种 RQ-VAE 构造。replay 和 ORBIT 都只跑了一组工作点,不是扫出来的前沿。自适应相对固定权重的优势,还缺一组「平均 λ 相同的静态对照」。Figure 1 里 25 步时 PPL 是 6956,主表里同设置 SFT 训完后是 53967,早期崩塌和终点崩塌要分开看。

评测检索时,碰撞的 SID 桶还要用冻结的 Qwen3-Embedding-0.6B 再排序。语言能力保住的是「生成 SID,再另套编码器收尾」这一套,还不是纯单模型闭环。

术语

原文与代码

社区讨论

相关论文

全部论文解读