技術架構
整體可以分為 檢索召回、排序
搜索相關的策略大體分為如下:
- 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