搜索排序技术简介
目录
- 技术架构
- 方法概述
- 召回
- 排序
技术架构 整体可以分为 检索召回、排序
文章图片
搜索相关的策略大体分为如下:
- 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、评估等方面来进行区分。链接:https://www.zhihu.com/question/481531973/answer/2079580148
- 样本
- 召回正例是真实正例,负例通过采样(全局采样、batch内采样等)得到。
- 粗排正负例都是从用户的真实正负例中选取。
- 特征:无区别
- 网络结构:粗排和召回在网络结构的区别是:双塔的交互时机不同。
- 召回一般是通过双塔分别得到user emb和feed emb,然后简单进行cos/mul计算;为了效率以及使用近邻搜索组件来进行线上召回,双塔之间的交互只能在最后的emb层来做。
- 粗排可以在双塔的底层就可以对不同塔的特征进行交互得到交叉特征。
- Loss
- 召回一般是单目标模型,通过pointwise(sigmoid)或者pairwise(sample softmax)来计算loss。如果需要达到多目标的效果。一般业内有两种做法,一种根据多个目标训练多个召回模型,然后线上多路召回/融合;一种是不同行为做加权生成label权重,通过调节label权重来达到多目标的效果。
- 粗排一般是多目标模型,不同目标得分进行融合得到粗排分。
- 评估
- 召回使用的评估指标是hit rate等指标
- 粗排一般使用排序的评估指标auc、uauc等
references:
[1] WSDM Cup 2020检索排序评测任务第一名经验总结. https://mp.weixin.qq.com/s/k5wNtV057c7cMrjSdQAULw
[2] 爱奇艺搜索排序算法实践. https://mp.weixin.qq.com/s/gvFagKMgGKE2ZFic1znQWg
[3] 搜索算法一年总结. https://zhuanlan.zhihu.com/p/364281565?utm_source=wechat_session&utm_medium=social&utm_oi=768447476708438016&utm_campaign=shareopn
[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
推荐阅读
- 网络|【技术学习】一次Node.js站点渗透
- js|js 实现拖拽排序详情
- 基于区块链技术的超级账本(Hyperledger)|基于区块链技术的超级账本(Hyperledger) - 从理论到实战
- php实现归并排序算法的方法详解
- 又忙碌了一个月
- 读书笔记之智能指针广度搜索
- 递归——深度优先搜索(DFS)——以滑雪问题为例(自顶而下)
- 基于ElasticSearch的搜索平台在哈啰出行的应用
- 阿里云数据库开源重磅发布(PolarDB HTAP的功能特性和关键技术)
- 移动域全链路可观测架构和关键技术