CoGR让查询与商品关键词共进化,F1比最强基线高10.9%

It Takes Two to Match: Co-Evolving Generative Retriever with Reinforcement Learning

Runpeng Dai, Kaili Huang, Changsung Kang, Ciya Liao

cs.IR, cs.CL

2026-09-01

两台LLM分别给查询和商品生成关键词,经倒排索引直接匹配。内部App搜索F1达到0.396,较最强稠密基线相对高出10.9%。

这篇在解决什么

搜索和广告的第一阶段是检索:从巨大商品池里捞候选,后面的排序和竞价救不回漏掉的条目。BM25靠词面重合,稠密检索靠向量近邻,生成式检索则直接生成文档ID。最近一批工作用大模型做查询扩写、伪文档或检索反馈训练,但生成器几乎只动查询一侧,真正匹配仍交给下游检索器。

问题很具体:能不能让大模型同时给查询和商品造出可直接匹配的检索表示,并且还能接上现成的倒排索引。广告系统里广告主本来就按关键词出价,换一套ANN并不便宜。

方法

CoGR训练两台独立的关键词生成器。查询侧输出一组词,商品侧也输出一组词,两边词集有交集就算命中,命中集合再用BM25排序。训练分两段。

两边盯的是同一个查询到商品的F1。商品侧不能偷懒改成「把商品当查询去捞相关查询」那种对称目标,消融里这种转置F1会掉点。骨干是Qwen3-4B-Instruct和Qwen3-1.7B,两边各一份,交替五轮,每轮查询侧10个epoch、商品侧5个。解码时直接出逗号分隔关键词,不加思维链,免得检索延迟涨上去。

结果

两套数据。内部App商店:训练/验证查询13500/1500,应用39600个,每查询大约1000个相关项。公开产品检索WANDS:430/50查询,42994个商品,每查询大约200个相关。对照覆盖稀疏、稠密、生成式共10个基线。

数据集方法F1
InternalANCE-Qwen4B(最强基线)0.3575
InternalCoGR-4B0.3963
WANDSANCE-Qwen4B0.5012
WANDSCoGR-4B0.6819

相对最强基线,F1分别高10.9%和36.1%。只训查询侧、冻结商品侧的CoGR-4B在Internal上F1只有0.2617,DeepRetrieval-4B是0.2750,单边优化明显不够。去掉SFT、共用一个生成器、或把商品侧奖励改成转置F1,F1分别落到0.3751、0.3798、0.3743。

共进化五轮后验证F1从大约0.16升到0.40,第一轮涨幅最大。词表从宽泛单词变成更具体的多词短语:单词占比37%降到13%,三词及以上从12%升到31%。给查询侧再塞现有搜索结果,F1还能到0.4379,主要靠消歧、纠错和实体查询。

为什么重要

这是一套能接现有关键词检索基建的方案。已经有倒排和关键词出价的业务,不必先换成向量检索。共进化比「只改查询扩写」更对症:商品侧表示不跟着动,查询侧再聪明也匹配不上。

增益是实打实的,但仍是渐进改进。排序还是BM25,工业里真正卡点往往在下游业务指标,这篇还没接到那些指标上。

局限与存疑

作者自己列出两条:奖励还没接到广告不相关率和收入;排序只用BM25。内部集每查询大约1000个相关项,和常见信息检索标注的稀疏程度差很远,换到稀疏标注任务未必还能拉开36%这种差距。WANDS验证查询只有50条,波动会偏大。商品侧反事实奖励要对每个采样隔离单条商品的贡献,工程不简单。生成关键词直接当索引,也还没讨论词表膨胀和索引更新成本。

术语

原文与代码

社区讨论

相关论文

全部论文解读