搜索排序技术简介
技术架构
整体可以分为 检索召回、排序
搜索相关的策略大体分为如下:
- query 理解->分词,纠错,意图识别,term weight 等
- 召回-> bool检索,倒排索引, bm25, tf-idf, 语义相似度 等
- 排序-> learning to ranking,深度模型 等
尽快划分为不同阶段,但总体任务可以概括为匹配。针对不同阶段,使用不同的方法,使全流程达到最优。
爱奇艺搜索排序架构
其中有运营配置模块,这里我们支持人工定义,在特定的Query和场景下,吐出相应的Doc。
预测服务采用Lambda架构,索引部分主要分为两大块——全量索引和实时索引,均匹配对应的召回、粗排、精排流程
方法概述
召回
指标:召回率
经典的双塔模型
召回的种类,如常规、结构化、语义的倒排索引以及向量召回等。向量召回包括DSSM召回、Bert召回等,线上采用ANN计算方式
基于文本语义向量表征
基于空间向量模型 + Bag-of-Ngram
F1EXP、DFR、F2EXP、BM25、TFIDF等多种检索算法
排序
Learning to Rank
Pointwise模式下模型使用的Cross Entropy Loss作为损失函数,优化目标是提升分类效果,而Pairwise模式下模型使用Hing Loss作为损失函数,优化目标是加大正例和负例在语义空间的区分度
语义匹配
-
基于词向量的隐语义文本表示(如:词向量的avg/max pooling作为文本向量、Doc2vec等)
-
表示型语义匹配方法将query和item内容通过encoder网络分别表示成隐语义向量,并通过向量距离度量二者之间相似度。如DSSM。
-
交互型语义匹配则通过query和item的early fusion(query-item特征交互融合)来实现细粒度语义的匹配,如ARC-II、ESIM。
双塔模型用于粗排和用于召回的区别有哪些?
大概可以从样本、特征、网络结构、Loss、评估等方面来进行区分。
样本
- 召回正例是真实正例,负例通过采样(全局采样、batch内采样等)得到。
- 粗排正负例都是从用户的真实正负例中选取。
特征:无区别
网络结构:粗排和召回在网络结构的区别是:双塔的交互时机不同。
- 召回一般是通过双塔分别得到user emb和feed emb,然后简单进行cos/mul计算;为了效率以及使用近邻搜索组件来进行线上召回,双塔之间的交互只能在最后的emb层来做。
- 粗排可以在双塔的底层就可以对不同塔的特征进行交互得到交叉特征。
Loss
- 召回一般是单目标模型,通过pointwise(sigmoid)或者pairwise(sample softmax)来计算loss。如果需要达到多目标的效果。一般业内有两种做法,一种根据多个目标训练多个召回模型,然后线上多路召回/融合;一种是不同行为做加权生成label权重,通过调节label权重来达到多目标的效果。
- 粗排一般是多目标模型,不同目标得分进行融合得到粗排分。
评估
- 召回使用的评估指标是hit rate等指标
- 粗排一般使用排序的评估指标auc、uauc等
链接:https://www.zhihu.com/question/481531973/answer/2079580148
references:
[1] WSDM Cup 2020检索排序评测任务第一名经验总结. https://mp.weixin.qq.com/s/k5wNtV057c7cMrjSdQAULw
[2] 爱奇艺搜索排序算法实践. https://mp.weixin.qq.com/s/gvFagKMgGKE2ZFic1znQWg
[4]《搜索与推荐中的深度学习匹配》之搜索篇. https://zhuanlan.zhihu.com/p/38296950?utm_source=wechat_session&utm_medium=social&utm_oi=768447476708438016&utm_campaign=shareopn
[5] Deep Learning for Matching in Search and Recommendation. Jun Xu, Xiangnan He and Hang Li.
[6] 深度学习在搜索业务中的探索与实践. https://mp.weixin.qq.com/s/A7Qg1gd66aksA6npJl3dNQ
[7] KDD Cup 2020多模态召回比赛亚军方案与搜索业务应用. https://zhuanlan.zhihu.com/p/258949239