news 2026/8/31 18:00:15

论文阅读: MGDSPR, 淘宝向量召回方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
论文阅读: MGDSPR, 淘宝向量召回方案

Embedding-based Product Retrieval in Taobao Search

背景

在大型电商平台(比如淘宝)中,产品搜索已经成为用户购物的核心入口。搜索引擎通常分成多个阶段:

  • Match(召回):从海量商品中快速找出候选集合

  • Pre-Rank / Rank / Rerank:逐级提升候选商品的质量与排序

召回阶段候选商品的质量直接决定了后续整个搜索流程的效果。

传统倒排索引基于词匹配,在短 query 和商品 title 之间很难理解语义关系。电商搜索的 query 通常极短(仅几词),难以仅靠词匹配充分表达用户意图。

个性化需求:不同用户即使问相同 query,真正感兴趣的商品也不同。例如,有人更偏好鞋子的品牌或风格,另一人则更关注价格。传统检索方法难以满足这种个性化需求。

在淘宝的长期实践中,传统 EBR(Embedding-based Retrieval)系统具有两个明显问题:

  • 召回结果与 query 的相关性不足:尽管向量检索能捕捉语义相似性,但在实际工业场景中难以精确匹配查询关键词,相关性可控性低,导致用户投诉增多,以及难以修复的 Bad Case。

  • 训练目标与线上推理逻辑不一致:许多 embedding 检索模型在训练时采用对比损失(如 hinge loss、pairwise loss 等),而推理时基于近邻相似度排序,目标不匹配导致模型难以有效优化。

模型框架

MGDSPR(Multi-Grained Deep Semantic Product Retrieval)是一个 双塔(two-tower)嵌入模型,用于向量检索召回:

用户塔(User Tower)

• 输入:query 及用户行为(包括实时、短期和长期行为序列)

• 输出:用户语义向量(代表查询意图+个性化)

商品塔(Item Tower)

• 输入:商品标题(Item title)+ 商品 ID 表征。

• 输出:商品语义向量

检索时采用近似最近邻(Approximate Nearest Neighbor, ANN)算法,查找与用户向量最接近的一组商品向量。

用户塔

多粒度语义表示

由于电商 query 很短,切分后平均长度不超过 3,因此对每个 query 采用多粒度语义表示。

单粒度(1-gram):将 query 拆分为多个单字表示。

双粒度(2-gram):将 query 中相邻的两个字组合成词元进行表示。

词粒度:对 query 分词后得到的多个 term 进行向量表示。

分词序列建模(捕捉顺序关系):将词粒度序列输入 Transformer,取最后一层的输出向量。

历史序列建模:使用当前 query 的分词结果(q_seg)与历史 query 序列进行点积计算。

混合表示:将前五个表示相加,得到一个稳健化表示

最终多粒度矩阵: Concat所有的向量表示

\begin{align} q_{1\text{-gram}} &= \operatorname{mean\_pooling}(c_1, \ldots, c_m), \\ q_{2\text{-gram}} &= \operatorname{mean\_pooling}(c_1c_2, \ldots, c_{m-1}c_m), \\ q_{\mathrm{seg}} &= \operatorname{mean\_pooling}(w_1, \ldots, w_n), \\ q_{\mathrm{seg\_seq}} &= \operatorname{mean\_pooling}(\mathrm{Trm}(w_1, \ldots, w_n)), \\ q_{\mathrm{his\_seq}} &= \operatorname{softmax}\!\left(q_{\mathrm{seg}} q_{\mathrm{his}}^{\top}\right) q_{\mathrm{his}}, \\ q_{\mathrm{mix}} &= q_{1\text{-gram}} + q_{2\text{-gram}} + q_{\mathrm{seg}} + q_{\mathrm{seg\_seq}} + q_{\mathrm{his\_seq}}, \\ Q_{\mathrm{mgs}} &= \operatorname{concat}\!\left(q_{1\text{-gram}}, q_{2\text{-gram}}, q_{\mathrm{seg}}, q_{\mathrm{seg\_seq}}, q_{\mathrm{his\_seq}}, q_{\mathrm{mix}}\right). \end{align}

每个向量表示均需经过 Pooling 操作,将其统一映射至固定维度,使所有 Token 对最终表示的贡献趋于均衡。

历史行为序列表示

核心目标:基于当前 query 的语义,对用户历史行为进行筛选或聚合,生成个性化表示;同时允许模型在历史行为与当前 query 无关时,自动关闭个性化。

论文首先将用户在当前时刻之前的历史行为,按时间窗口划分为三段。

  • Real-time 序列 R_u:紧贴当前时刻 t 的行为(论文表述为 “before the current time step”)

对于实时用户行为序列,其演化性较强,因此采用 LSTM 建模行为随时间的动态变化,获得全部隐藏状态。R^{u}_{lstm}=\{h_1^u,\dots,h_T^u\}

  • Short-term 序列:10 天内、早于 R 的行为(‘before R and within ten days’)。

短期序列更长,但演化性不如实时序列充分,因此直接输入 Multi-head Self-attention 以捕获多个潜在兴趣点。

  • Long-term 序列:1 个月内、早于 S 的行为(‘before S and within one month’)。

长期行为序列仅包含四个维度:Item、shop、leaf category 和 brand;每个维度进一步细分为 click、buy、collect 三种行为类型。将各 embedding 直接��接后,经线性变换得到一个动作向量(以降低线上计算开销)。

论文强调:需在每个行为序列向量前插入一个全零向量。

  • 降噪

  • 赋予模型处理‘历史行为与当前 query 不相关’情况的能力:模型可将注意力分配至零向量,从而忽略历史行为(用户历史往往杂乱,而 query 通常简短且意图明确)。

物品塔

该方法将每个商品编码为一个适用于近似最近邻(ANN)召回的向量 H_{\text{item}},仅利用商品 ID 和标题文本两类信息构建表征。

  • 对商品 ID,通过查表获取其嵌入向量 e_i;

  • 对商品标题文本,先分词得到词序列,再对各词向量进行 Mean-Pooling,然后经线性变换和激活函数处理,最后与 [其他向量] 相加,得到商品表征向量。

H_{\text{item}} = e_i + \tanh!\left( W_t \cdot \frac{1}{N} \sum_{j=1}^{N} w_j \right)

作者指出,商品标题更接近“关键词堆叠”而非自然语言句子,因此相比 LSTM 或 Transformer 等上下文建模方法,Mean-Pooling 在效果和效率上更为简洁有效。

在线服务阶段,所有商品向量预先离线计算并构建 ANN 索引;召回时,以用户塔输出的向量与 H_{\text{item}} 进行内积打分,实现高效候选生成。

训练目标

训练采用 Softmax Cross-entropy(交叉熵),并且在工程上用 Sampled Softmax 来近似全量 Softmax;同时在 Softmax 里加入了 温度 \tau,并把生成的 I_{mix}​(先挑选出一些难度大的负样本 I_{hard}​, 再将正样本向量和负样本向量I_{hard}​做线性插值, 得到I_{mix}​)加入分母。

1) 概率

\hat y(i^+|q_u)= \frac{\exp(F(q_u,i^+)/\tau)} {\sum_{i'\in I\cup I_{mix}}\exp(F(q_u,i')/\tau)}

其中 F(\cdot) 是用户向量与商品向量的点积, I\cup I_{mix}其作用是让模型学会区分正样本和“正样本附近的相似向量”。

2) loss(交叉熵)

L = -\sum_{i\in I} y_i \log(\hat y_i)

在单正样本(one-hot)情况下基本就是这样-\log \hat y(i^+|q_u)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 12:54:49

【毕设】基于Spring Boot的宠物咖啡馆平台的设计与实现

💟博主:程序员俊星:CSDN作者、博客专家、全栈领域优质创作者 💟专注于计算机毕业设计,大数据、深度学习、Java、小程序、python、安卓等技术领域 📲文章末尾获取源码数据库 🌈还有大家在毕设选题…

作者头像 李华
网站建设 2026/8/20 10:26:10

简单说明,轻松搞懂 ,AI混剪,AI智能成片有什么区别

目前很多软件都打着AI的旗号,弄的大家眼花缭乱,今天给大家梳理下这几种视频创作模式,方便大家了解适合真正自己的模式需求。首先说下AI混剪,这种模式是通过调用AI大模型算法,对我们提供的原始视频素材、文案素材进行剪…

作者头像 李华
网站建设 2026/8/20 18:07:38

国内如何使用Gemini 3.1 Pro?

目录国内使用Gemini 3.1 ProGemini 3.1 Pro初体验1、版本号2、写作3、编程4、推理5、识别图片6、上传文件7、AI绘画 - 香蕉Nano Banana Pro谷歌发布最新旗舰模型Gemini 3.1 Pro。 在 ARC-AGI-2 基准测试 中与上一代 Gemini 3 Pro,以及行业内其他顶级竞争对手&#x…

作者头像 李华
网站建设 2026/8/30 13:36:24

QuickDesk:AI 原生远程桌面工具,开源免费解锁智能协作新体验

在 AI 与远程协作深度融合的开发时代,远程桌面工具已成为开发者跨设备开发、服务器管理、团队协作的核心工具,但行业现存工具却难以满足智能化开发需求: 传统远程桌面工具仅支持人工操作,无法对接 AI Agent 实现自动化任务&#x…

作者头像 李华
网站建设 2026/8/20 17:07:53

拒绝“魔术数字”:C++ 枚举(Enum)的工程化进阶指南

🚀 拒绝“魔术数字”:C 枚举(Enum)的工程化进阶指南摘要:在 C 开发中,你是否还在代码里到处写 if (status 0) 或 if (type 3)?这种“魔术数字”是维护的噩梦。本文将带你从基础的 enum class …

作者头像 李华