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 选定,多重检验风险在。对照是词检索,不是别家已经在跑的混合系统。