The Case Against Generation for Retrieval: Discriminative Language Models as Effective Retrievers
Zhe Xu, Prachi Agrawal, Kavosh Asadi, Tianyi Chen, Carl Hu, Justin Johnson, Wuwei Lan, Mingfu Liang, Xi Liu, Tik On Lui, Oladipo Ositelu, Sandeep Pandey, Ankit Peshin, Feng Qi, Anil Ramakrishna, Kaushik Rangadurai, Frank Shyu, Luke Simon, Yang Yang, Chiyu Zhang
cs.IR
2026-07-28
Meta 反对用 LLM 做生成式检索,改把 LLM 当双塔语义编码器;内部只用 0.5% 训练量追平生产基线,公测集合 R@10 比基线高 21%~64%。
用大模型做检索,最直觉的思路是生成式:让模型自回归地吐出 item 的标识符。这条路有两个硬伤。一是服务成本:逐 token 解码在 web 规模下又慢又贵;二是 grounding:模型生成的 token 不一定对应库里真实存在的 item,得额外做约束或重排。
Meta 这篇的立场直接写在标题里:别让 LLM 生成,让它当经典双塔(two-tower)检索架构里的语义编码器。双塔是检索侧的老结构(用户塔和物品塔各出一个向量,靠内积排序),速度快、可离线建索引,但表达能力受限于编码器。把 LLM 塞进去当编码器,既拿到 LLM 的语义理解,又保住双塔的服务效率。
整体是「交叉编码器(cross-encoder)当老师、双塔当学生」的蒸馏框架,两端都用 LLM 做共享编码器。
老师端的两个改进:
学生端(双塔)的几块拼图:
公开数据集(亚马逊 Beauty / Sports / Toys)上,交叉编码器老师刷到 SOTA,R@10 相对 ORT 基线的提升如下:
| 数据集 | CE 老师 R@10 | 相对 ORT |
| Beauty | 0.0957 | +21.0% |
| Sports | 0.0677 | +64.3% |
| Toys | 0.1223 | +53.5% |
双塔学生也跟得上:Sports R@10 0.0542(+31.6%)、Toys 0.1078(+35.3%)。
消融里最关键的是 CE2TT 蒸馏,去掉它,R@10 在三个集合上分别掉 13.3%、23.1%、8.0%。
最有说服力的是 Meta 内部生产数据:LLM 原生双塔只用 0.5% 的训练数据就追平了线上 DLRM 基线的 NE(normalized entropy);交叉编码器版本 NE 再降 2.25%。冻结模型还能稳住 +2.21%+2.25% 的 NE,而对比的 DLRM 一冻结就掉 -2.68%-4.30%,说明 LLM 编码器泛化明显更好。尾部物品 NE 提升 5.5%,头部用户 +2.3%。
这篇给「LLM 进推荐系统」指了一条工程上能落地的路:不碰生成式那条又慢又难 grounding 的路,把 LLM 当成更好的编码器,塞进现有的、服务得起的双塔里。对大厂检索团队,这意味着不用推翻现有检索基建就能吃下 LLM 的语义能力;0.5% 数据追平基线,也说明预训练知识迁移得很充分。
蒸馏是另一条主线:消融显示 CE2TT 蒸馏是双塔学生性能的最大来源。重头戏还是拿一个强老师(交叉编码器)把知识压进轻量学生,LLM 编码器提供好底座,蒸馏提供好监督。
作者自己说,双塔学生在 NDCG 上不如 R@10 稳,排序质量离交叉编码器老师还有距离。更大的配置(4B 参数、MoE、更多步隐式推理)虽然还有 headroom,但已经超出当前服务预算,论文里作为「未来空间」给出,而非已落地结果。一些尝试过的设计(解码器转编码器、L2 损失做 embedding 匹配、物品塔加 latent step)因为收益不稳定被砍掉,说明这套框架并非每个组件都经得起考验,组合上还靠经验调。