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

文章探讨了电商搜索的关键技术,包括语义检索如何通过向量召回解决字面匹配问题,以及如何利用DPSR模型结合用户行为实现个性化推荐。双塔模型结构用于query和sku的独立建模,注意力损失函数优化多头查询的表示,负样本采样策略影响召回商品的相关性和流行度。
摘要由CSDN通过智能技术生成

今天想开一个新的系列,聊聊搜索场景中的两块技术, 语义检索与商品排序。

背景

电子商务搜索是淘宝、拼多多、京东等电商的重要组成部分, 用户通过搜索找到自己需要的商品, 然后下单购买。一个典型电商搜索引擎的架构, 包括三个重要组成部分:query 理解、召回和排序。

  • Query理解:包括query的纠错、改写、扩展、分词等。

  • 召回阶段:给定一个查询词, 从商品库中召回有效正确的商品候选集, 并将结果返回给排序。召回方式有很多种, 这里我们只介绍基于向量检索的召回。

  • 排序阶段:给定召回商品的候选集合, 根据众多因子对这些商品进行排序,挑选出最好的候选商品展示给用户。

向量召回

向量检索作为一种信息检索方式在工业界已经被广泛应用, 它能解决传统倒排检索不能解决的问题。倒排通过字面匹配方式召回商品, 这种方式存在一种缺陷, 不能召回字面不匹配但语义层面相近的商品, 如 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 ) 算法, 模型融合个性化和搜索语义信息。

检索系统

从整体看,离线模型是一个双塔模型结构,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。 

模型详细设计

1

Two tower model architecture

之前介绍了模型结构,一个query tower Q,一个 sku tower S,对于给定的query=q, sku=s,模型计算过程为: f(q,s)=G(Q(q),S(s)), 其中Q(q)表示query的embedding。S(s)表示sku的embedding,G 表示打分计算函数,常见的有比如inner product、L2 distance等,双塔模型训练完后,query和sku的模型相对独立,我们可以分别计算他们。所有的 sku embedding 都在离线计算, 以便快速构建向量检索索引。虽然 model 是相互独立的,但query和sku之间使用简单的点积计算,理论上query和sku embedding仍然在同一个几何空间中,具有可比性。

2

Query tower with multi heads

我们看到左侧的tower和右侧有两点不一样:Projection layer 和mutli heads,目的是为了丰富query侧的信息。如下图所示,不同的head可以捕获query不同的语义 (query=苹果,语义可以是手机和水果),捕获不同的品牌属性(query=手机,品牌可以是华为、小米 ), 捕获不同的产品属性 (query=三星,产品属性可以是笔记本、手机 ) 等等。

3

Attention Loss

Multi heads让query可以生成多个embedding与sku embedding计算score。我们采用 attenion loss做模型优化。我们标记query的多个embeding为Q(q)={e1,e2,...,em},其中ei∈Rd,Sku的embedding为 S(s)=g,Query和sku的打分计算如下:

其中β是softmax heat参数。假设D表示训练语料,r(qi,si+) 为正样本,r(qi,si-)为负样本,模型优化的 loss 可表示为:

4

Negative Sampling

我们采用的是用户点击数据, 数据量在10亿级作为正样本。负样本并未使用同session 未点击的样本,因为搜索手机,展示了小米和华为手机,不能说未点击就是不相关商品。负例分为两部分:random negatives、batch negatives。我们增加了一组超参来调整两者的比例,观察发现 random negatives 越多,召回商品的popularity 越高,更能吸引用户点击下单,但会降低商品与检索 query的相关性。

模型训练算法具体如下:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值