京东电商搜索中的语义检索与商品排序

导读:本文将介绍京东搜索场景中的两块技术,语义检索与商品排序 。在业界检索算法基础上,我们提出一系列更适用于电商场景的检索排序算法,在业务上取得了显著收益 。其中的多篇论文已被 KDD/SIGIR 等收录 。
01
背景介绍
电子商务搜索是京东等电商重要组成部分,用户通过搜索找到自己需要的商品,然后下单购买 。一个典型电商搜索引擎的架构,包括三个重要组成部分:query 理解、召回和排序 。

京东电商搜索中的语义检索与商品排序

文章插图
 
  • Query 理解:包括 query 的纠错、改写、扩展、分词等 。
  • 召回阶段:给定一个查询词,从商品库中召回有效正确的商品候选集,并将结果返回给排序 。召回方式有很多种,这里我们只介绍基于向量检索的召回 。
  • 排序阶段:给定召回商品的候选集合,根据众多因子对这些商品进行排序,挑选出最好的候选商品展示给用户 。
下面我们分别介绍,基于向量检索召回和商品排序:
02
向量召回
向量检索作为一种信息检索方式在工业界已经被广泛应用,它能解决传统倒排检索不能解决的问题 。倒排通过字面匹配方式召回商品,这种方式存在一种缺陷,不能召回字面不匹配但语义层面相近的商品,如 query='2-3周岁宝宝玩具'是无法召回 sku='托马斯小火车'的 。
京东电商搜索中的语义检索与商品排序

文章插图
 
通俗的讲就是训练一个模型,该模型通过将 query 和 sku 映射到统一维度空间,在该空间中,相似的商品距离近,不相近的商品距离较远 。如上图例子,query=奶粉,在高纬空间里,相对鞋子、服装、手机,奶粉商品距离 query 更近 。这是建模过程,生成 query 和 sku 的向量数据 。
我们得到了 query 和 sku 的向量,接下来就是做检索,返回与 query 距离近的 topK 个 sku 。而数据库的商品量非常多,通常是十亿级,不可能做线性遍历,考虑到时效性,会引入快速向量近似检索方法,如 KDTree、TDM、LSH、PQ、HNSW 等等,我们采用的是 PQ 算法,这里不再赘述,网上有很多材料介绍其算法 。下面重点介绍我们的模型及在线检索框架 。
模型方面不仅要考虑 query-sku 的相关性,我们也对用户行为进行建模,同一 query 针对不同用户、同一用户不同时刻检索出更具有个性化的商品 。我们使用的是 DPSR ( Deep Personalized and Semantic Retrieval ) 算法,模型融合个性化和搜索语义信息,我们的论文已被 SIGIR2020 收录 。
1. 检索系统 overview
京东电商搜索中的语义检索与商品排序

文章插图
 
从整体看,离线模型是一个双塔模型结构,query 和 sku 分别有一个 model tower 。Query 端包括了 query 包括 query tokens、user profile、user history events 等特征 。Sku 端包括 title tokens、brand、category、shopid 等特征 。
离线索引 ( offline indexing ),使用的是 sku tower,导出 sku 的 embedding 构建 QP 索引 。
在线服务 ( online serving ) 使用的是 query tower,模型加载在 tensorflow service,在线 predict query 的 embedding 。
2. 模型详细设计
① Two tower model architecture
上面介绍了模型结构,一个 query tower Q,一个 sku tower S,对于给定的 query=q,sku=s,模型计算过程为:
f(q,s)=G(Q(q),S(s))
Q(q)∈Rd×m 表示 query 的 embedding
S(s)∈Rd×m 表示 sku 的 embedding
G 表示打分计算函数,比如 inner product、L2 distance 等
双塔模型训练完后,query 和 sku 的模型相对独立,我们可以分别计算他们 。所有的 sku embedding 都在离线计算,以便快速构建向量检索索引 。虽然 model 是相互独立的,但 query 和 sku 之间使用简单的点积计算,理论上 query 和 sku embedding 仍然在同一个几何空间中,具有可比性 。
② Query tower with multi heads
我们看到左侧的 tower 和右侧有两点不一样:Projection layer 和 mutli heads,目的是为了丰富 query 侧的信息 。如下图所示,不同的 head 可以捕获 query 不同的语义 ( query=苹果,语义可以是手机和水果 ),捕获不同的品牌属性 ( query=手机,品牌可以是华为、小米 ),捕获不同的产品属性 ( query=三星,产品属性可以是笔记本、手机 ) 等等 。
京东电商搜索中的语义检索与商品排序

文章插图
 
③ Attention Loss
Multi heads 让 query 可以生成多个 embedding 与 sku embedding 计算 score 。我们采用 attenion loss 做模型优化 。


推荐阅读