Target 混合搜索上线:点击率升 0.97%,零结果约减半

Retail Product Search: A Practical Approach at Target

Darshan Sonagara, Qujiaheng Zhang, Ankit Singh, Alex Li

cs.IR, cs.LG

2026-09-26

Target 并行 Solr 词检索与微调 e5-small 向量检索,再用加权交错合并两路结果;相对纯词检索 CTR 升 0.97%、下单转化升 0.98%、人均需求升 1.10%。

这篇在解决什么

零售搜索的查询从「有机牛奶半加仑」这种精确规格,到「鸡尾酒派对用品」这种逛。词检索在品牌和规格上准,但同义词、错拼、自然语言对不上货架文案。纯向量检索会捞来属性错了的近邻,搜食品给到宠物粮。两边分数还不可比,BM25 和余弦没法直接加。

Walmart、淘宝、京东都走过混合检索。Target 这篇把三件工程写清楚:互动日志怎么变成训练标签,向量通道怎么卡精度,两路结果怎么并。系统跑在网页和 App 上,每天服务数百万查询。

方法

两路并行。词路走 Solr 倒排,带纠错、改写、facet。向量路把同一查询送进双塔,商品向量躺在 AlloyDB 的 ScaNN 索引里。双塔从 e5-small-v2 微调,约 3300 万参数、384 维。商品侧拼接 title、brand、itemtype、category,每段前面加字段标记 token;训练时随机丢掉若干字段,避免模型死盯某一列元数据。

正样本来自周粒度的转化、加购、点击加权分,跨周稳定过阈值才算正,权重大小保密。负样本两路:曝光够却零互动,以及检索 top-K 里经常出现但不是正例的近错。损失用双向改进对比损失,batch 内 query–query、item–item 也当负例。语料约 2000 万 query–product 对,先随机负再难负。

精度控制用 NER 抽性别、品牌、尺码,用分类器推断品类,五维过滤后再进排序。融合对比了 Reciprocal Rank Fusion 和加权交错。两路重叠少,RRF 靠「两路都出现」加分,信号弱;交错按权重轮流取下一项,线上更好。嵌入服务跑在 CPU 上的 TorchServe,生产 p99 低于 50 毫秒,p75/p95 大约 25–30 毫秒。

结果

人工标注的 5000 查询、每查询 200 候选上,零样本 NDCG:e5-large-v2 为 0.7825,e5-small-v2 为 0.7757,只差 0.0068,选小模型换延迟。

离线互动 golden set(同样约 5000 查询)上,数据从 700 万扩到 2000 万,NDCG@5 从 0.8200 到 0.8661;再加难负到 0.8794,MRR 到 0.9822。精度过滤把向量通道 P@1 从无过滤的 0.890 抬到 NER+行为过滤的 0.929。

四周线上 A/B,对照是纯词检索,p<0.05:

变体CTR下单转化人均需求
零样本 e5−4.20%−6.57%−7.14%
Finetuned v1 + RRF−0.85%−1.20%+0.49%
Finetuned v1 + 交错+0.40%+0.74%+1.11%
Finetuned v2 + 交错+0.97%+0.98%+1.10%

Finetuned v2 把零结果搜索大约砍掉一半。通道权重和过滤阈值按公司政策不公布。

为什么重要

领域微调比换更大 encoder 值钱。零样本 e5 直接上线,点击、加购、转化全线下跌;同一小模型用互动标签微调,转化转正。RRF 在两路几乎不重叠时会伤 CTR 和转化,交错更合适。33M 模型在 CPU 上 p99 50 毫秒内,是可以抄的服务形态。

这是可部署的渐进工程,不是新的检索范式。个性化还没进检索阶段。

局限与存疑

只报相对 lift,没有绝对 CTR 或转化率。离线评估在约 200 个候选里排序,不是全库召回,作者用线上结果为这一跳跃背书。精度过滤会把向量候选滤光,零结果不会到零。当前系统对同一查询返回同一候选集,没有用户侧信号。权重用 explore-then-commit 的连续 A/B 选定,多重检验风险在。对照是词检索,不是别家已经在跑的混合系统。

术语

原文与代码

社区讨论

相关论文

全部论文解读