1. 问题与动机
CoGR 针对的是第一阶段检索里一个长期存在但常被分开处理的问题:query 端与 item 端的表示并没有围绕同一个线上目标共同演化。BM25 等词法方法兼容成熟倒排索引,但难以跨越字面差异;DPR、ANCE 等稠密方法能捕获语义,却需要额外的向量索引和近邻检索栈;DSI、RIPOR 一类生成式检索直接生成文档标识,又受标识设计、解码规模和新物品泛化限制。近年的 LLM 检索通常只生成 query expansion、伪文档或改写,再交给另一个检索器匹配,因此生成器只看到 query 侧反馈,item 表示始终固定。对于搜索与广告,这个断点尤其重要:漏召回在后续排序中无法挽回,而召回过宽又增加排序和竞价负担。
论文把问题改写为“双边生成”:两个 LLM 分别把 query 与 item 标题/描述压缩成关键词集合,集合重叠决定召回,BM25 决定顺序。难点是两套生成词表必须对齐,否则双方各自合理的词仍可能没有交集。作者因此先用监督数据建立可用的共同空间,再用共享的检索 F1 让两端交替协同进化。实验覆盖内部 App Marketplace(13,500 个训练 query、1,500 个评估 query、39,600 个应用,每个 query 约 1,000 个相关应用)和 WANDS(430/50 个训练/评估 query、42,994 个商品,每个 query 约 200 个相关商品),属于多相关项、强召回压力的工业式设置。
2. 方法详解
系统包含查询生成器 Gq 和物品生成器 Gi。输入 query q 或 item i 后,两者分别输出关键词集合 Sq 与 Si;只要“原始文本加生成关键词”的两侧集合存在交集,item 就进入召回集,随后把关键词当作 bag-of-words 用 BM25 排序。该设计没有生成语义 ID,也不需要自回归枚举整个 item 标识树,而是把 LLM 的语义能力落到现有倒排接口上。
第一阶段是 SFT 对齐初始化。作者先让基础 LLM 为每个 item 生成 M=10 个关键词;对于每个 query,汇总所有相关 item 的关键词为多重集合,再选择频率最高的 N=15 个词作为 query 侧监督目标。这样每个 query target 天然来自其相关 item,训练开始时就有足够关键词重叠和召回,避免 RL 从零探索时几乎总得零奖励。两个生成器分别做 SFT,而不是共享一个检查点,因为 query 是短意图表达,item 是标题加描述,两者的输入分布和职责不同。
第二阶段进行五轮交替 GRPO。更新 query 端时,Gi 生成的 item 倒排索引完全冻结;Gq 为同一 query 采样 8 组关键词,实际执行召回,以宏平均 precision 与 recall 的调和均值 F1 作为终局奖励。若关键词数超过 Kmax=30,奖励直接置零,防止模型靠无约束扩词刷 recall。更新 item 端时,冻结最新 query 索引,并对单个 item 的候选关键词构造反事实:只替换该 item 的关键词,其他 item 不变,奖励等于替换后所有 query 的 F1 总和减去替换前总和;超预算奖励为 -1。这个边际贡献奖励把 item 优化仍然锚定在“query 找 item”的业务方向,避免对称地让 item 去找 query 所带来的目标错位。
反事实奖励若朴素实现,需要为每个 rollout 重建索引并遍历全部 query。作者缓存每个 query 的召回数、真阳性数、相关项数,以及参考状态下每个 item 被哪些 query 命中。新关键词只需在冻结 query 索引中查一次,取候选命中集合与参考命中集合的对称差;只有这些受影响 query 的 F1 会变化,其余项在差分中抵消,因此每个 rollout 变成一次索引查询加若干常数时间计数更新。
训练采用 Qwen3-4B-Instruct 或 Qwen3-1.7B 两种规模,不使用思维链以控制推理开销,RL 由 verl 执行并使用 8 张 NVIDIA B200。query/item 学习率均为 1e-6,rollout.n=8;query 侧 batch 与 mini-batch 均为 512、每 GPU micro-batch 64、每轮 10 epochs,item 侧分别为 256、256、32、5 epochs。最大响应长度 512,不使用 KL loss;RL rollout 温度/top-p 为 1.0/1.0,初始化、评估和建索引为 0.7/0.8、top-k=20。每次更新都从当前策略生成新 rollout,保持 fully-online。
3. 核心技术贡献
第一,CoGR 把生成式检索从“单边改写 + 固定下游检索器”推进为“生成双边检索表示”。生成关键词直接成为索引内容,检索时仍走倒排与 BM25,既让两边共享语义化词表,又保留成熟系统的可解释性、过滤和更新能力。与 DSI/RIPOR 的标识符生成相比,它不要求维护 item ID 解码树;与 DeepRetrieval 相比,它没有把 item 侧锁死。
第二,论文提出非对称但同目标的奖励:query 端直接优化 F1,item 端优化自身关键词对全体 query F1 的反事实边际贡献。消融中将 item 奖励改成“item 反向检索相关 query”的 Transposed F1 后,内部集 F1 从 0.3963 降到 0.3743,说明方向一致性比形式对称更重要。缓存加对称差的计算方式又使这个全局边际奖励可实际训练。
第三,SFT 与交替冻结机制解决协同训练稳定性。去掉 SFT 后 F1 为 0.3751;共享生成器为 0.3798;完整模型为 0.3963。训练期间每一侧只面对固定索引,避免两个策略同时移动造成奖励环境剧烈漂移。五轮后内部集 F1 从约 0.16 增至 0.40,且最大提升发生在第一轮,后续两端更新继续稳定累积。
第四,生成词表呈现可解释的结构变化:unigram 占比从 37% 降到 13%,三词及以上短语从 12% 升到 31%;“mobile”“fun”等宽泛词被更具体的短语替代,query 词表扩张、item 词表先收缩,约三至四轮后规模趋近。这为“双边表示真的在对齐”提供了比单一终局指标更直观的证据。
4. 实验结果分析
主结果比较了 10 个稀疏、稠密和生成式基线。完整 CoGR-4B 在内部集取得 P=0.3976、R=0.4569、F1=0.3963,在 WANDS 取得 P=0.7940、R=0.6885、F1=0.6819;相对各自最强基线的 F1 分别提升 10.9% 与 36.1%。值得注意的是,优势不是简单来自 4B 参数:冻结 item 端的 CoGR-4B 在两集只有 0.2617 与 0.4662,甚至可能弱于更小但双边协同的 CoGR-1.7B(0.3527 与 0.5685)。
| 模型 | Internal F1 | WANDS F1 | Internal NDCG@100 | WANDS NDCG@100 |
|---|---|---|---|---|
| BM25 | 0.1056 | 0.4418 | 0.2654 | 0.7047 |
| SPLADE-v2 | 0.3019 | 0.4903 | 0.3365 | 0.7872 |
| ANCE-Qwen4B | 0.3575 | 0.5012 | 0.4879 | 0.7955 |
| DeepRetrieval-4B | 0.2750 | 0.4431 | 0.4437 | 0.7029 |
| CoGR-1.7B | 0.3527 | 0.5685 | 0.4456 | 0.6701 |
| CoGR-4B | 0.3963 | 0.6819 | 0.4930 | 0.7146 |
CoGR 在 WANDS 的整体 F1 最高,但 NDCG@100 仍低于 ANCE-Qwen4B 的 0.7955,也低于 SPLADE-v2 的 0.7872;这说明它主要改善“召回集合的 precision-recall 平衡”,未完全解决前 100 位的精排质量。内部集上 CoGR 的 NDCG@100 为 0.4930,略高于 ANCE-Qwen4B 的 0.4879,场景差异很明显。
训练设计消融中,完整模型 F1=0.3963;Transposed F1、共享生成器、无 SFT 分别为 0.3743、0.3798、0.3751,绝对下降 0.0220、0.0165、0.0212。信息消融同样有操作价值:去掉 item description 后 F1 从 0.3963 降至 0.3759;把现有搜索结果加入 query prompt,则升至 0.4379,绝对增加 0.0416。案例分析表明收益集中在歧义、拼写错误、实体型和非英语 query,说明 CoGR 可与当前检索系统互补,而非必须一次性替换。
证据也有两点需要谨慎。内部相关性由内部 LLM-as-judge 五级评分二值化,未标注样本一律视为不相关,标签噪声可能影响宏 F1;WANDS 评估 query 仅 50 个,规模偏小。论文没有报告线上 A/B、延迟、索引大小、关键词生成成本或增量更新时延,因此离线显著提升还不能直接等同于生产收益。
5. 局限与未来方向
作者在结论中明确给出两条后续方向。其一,当前奖励只有相关性 F1,未来应扩展到无关广告比例、收入增益等下游业务目标;其二,生成关键词后仍只用 BM25 排名,更强的召回后排序可能继续提升质量。实验本身还暴露出排名侧短板:WANDS 的 CoGR NDCG@100 未超过强稠密/稀疏基线。
论文未单列限制章节,但从设置看还有若干未解决问题:训练依赖 query-item 相关标注,内部数据又由 LLM judge 生成;只验证应用与商品搜索,尚未覆盖 UGC 短文本、高频热点更新或多模态内容;双 4B 生成器和 8×B200 的训练成本不低;全文没有量化离线 item 关键词生成、在线 query 生成、倒排膨胀、敏感词与品牌词污染、模型更新期间双索引切换等工程风险。这些不是否定结果,而是上线前必须补齐的验证项。
6. 工业实践意义
对已有倒排体系的团队,CoGR 最值得采用的是“LLM 生成可控词法表示”这一接口,而不是立刻复刻完整双 4B RL。可以先离线为帖子生成不超过 10—30 个短语,写入独立字段;query 端用较小模型或蒸馏模型生成扩展词,并继续复用分词、布尔过滤、BM25、权限和新鲜度逻辑。初始 SFT target 可按论文方法从点击/满意交互对应内容的高频生成词构造,这比人工定义 query 标签成本低。
第二步再做离线闭环:冻结内容索引优化 query 生成器,随后冻结 query 日志索引优化内容生成器。奖励不应机械照搬标准 F1,可按业务目标使用 F-beta,把短文本搜索更看重的 recall、误召回成本、CTR 或长点击纳入;item 侧仍应计算对“query 找内容”指标的边际贡献,避免优化方向翻转。论文的缓存方案很实用:存储每个 query 的召回数/真阳性数以及每个 item 的命中 query,训练 rollout 只更新对称差中的受影响 query,能显著减少反事实评估成本。
部署时建议保留原召回通道做并联与兜底。先对长尾、错拼、实体和非英语 query 灰度,因为加入已有搜索结果使 F1 从 0.3963 提至 0.4379,说明让生成器看到传统检索候选可能比纯端到端替换更稳。监控除 nDCG、Recall、CTR 外,还应包含每 query 生成词数、无结果率、倒排 postings 膨胀、宽泛词占比、三词以上短语占比以及 query/item 词表重叠漂移。论文没有线上延迟数据,在线 query LLM 必须通过蒸馏、缓存或异步预生成压缩成本;内容侧可离线批量更新,新内容则需快速增量生成。
不应直接照搬的部分包括:把未标注样本全当负例、只以宏 F1 驱动所有业务、未经安全过滤把模型关键词写入索引,以及在没有强排序器的情况下期待 BM25 自动获得最佳头部排序。更现实的路线是把 CoGR 当作新增生成式召回源,与稠密/词法召回融合,再由现有排序模型控制最终曝光。