背景
所謂的“多路召回”就是指採用不同的策略、特徵或者簡單模型,分別召回一部分候選集,然後再把這些候選集混合在一起後供後續排序模型使用的策略。
阿里雲開放搜尋(OpenSearch)是基於阿里巴巴自主研發的大規模分散式搜尋引擎搭建的一站式智慧搜尋業務開發平臺,目前為包括淘寶、天貓在內的阿里集團核心業務提供搜尋服務支援。目前開放搜尋提供文字檢索,透過對文字query進行分詞加上一些查詢分析處理,對query進行改寫後再查詢引擎,大大提高了搜尋的效果。但是對於一些對搜尋效果要求較高的場景,例如:教育搜題場景,教育拍照搜題相比傳統的網頁或者電商的搜尋存在明顯的差異,第一點是搜尋的Query特別長,第二點是搜尋的Query由拍照OCR識別之後得到的文字,其中關鍵TERM識別錯誤的話,就會嚴重影響召回排序。針對這些問題的解決方法,一種方案是繼續最佳化QP,增強QP對文字處理的能力。另一種方案是引入向量召回,透過計算向量空間的距離來召回文件,作為對文字召回的一種補充。
功能價值
在長Query、長尾Query、Query不規範等場景時,如果基於文字檢索出現召回不準確、結果不足等問題,補充向量召回可以有效地提高召回文字的效果,同時也可以提供擴召回的能力。
開放搜尋提供多路召回的演算法工程能力,賦予不同行業的使用者定製不同的多路召回功能需求,並且已經產品化,在多個行業的使用者中實踐應用。其優點有以下幾個方面:
1、提供靈活的演算法能力,支援根據不同行業的特點對文字向量化進行技術最佳化,兼顧效果和效能;
2、支援cava指令碼,提供更加靈活的定製排序算分能力;
3、支援帶模型的分析器和不帶模型的分析器,分別對無演算法能力的使用者和有演算法能力的使用者提供向量召回功能;
4、對比開源產品,開放搜尋搜尋準確性和搜尋延遲優勢更加明顯,搜尋延遲從開源秒級降到幾十ms。
多路召回架構圖
多路查詢
開放搜尋(OpenSearch)支援多路查詢功能。配置好查詢策略,可以同時查詢文字Query和向量Query。當然也支援只查詢文字Query或只查詢向量Query。如果配置了文字向量化功能,則文字查詢的時候開放搜尋會對文字向量化,生成向量Query,兩路結果召回後排序。
向量分析器
開放搜尋(OpenSearch)支援多種型別的向量分析器,主要是行業通用向量分析器、行業定製向量分析器、以及通用的向量分析器(向量-64維、128維、256維通用)。其中通用的向量分析器需要使用者自行將資料轉化為向量,並以DOUBLE_ARRAY型別儲存,這適用於演算法能力較強的客戶使用。
查詢分析
賦予演算法同學對不同行業的向量模型進行定製,根據以教育行業為例,
其中針對教育搜題做的特別最佳化有:
- BERT模型採用達摩院自研的StructBERT,並針對教育行業定製模型
- 向量檢索引擎採用達摩院自研的proxima引擎,準確性和執行速度遠超開源系統
- 訓練資料可以基於客戶的搜尋日誌不斷積累,效果持續提升
- 改寫出語義向量query, RANK上文字term, 只參與算分不參與召回,提升召回的top文字質量。
排序定製
開放搜尋(OpenSearch)開放了兩階段排序:基礎排序和業務排序,即粗排和精排。其中,精排支援cava指令碼,更靈活地支援使用者的排序需求。
多路召回流程中開放搜尋最終會進行統一排序,目前支援內部排序和精排模型打分排序。內部排序直接根據多路召回的結果按照返回的分數從高到低排序。精排模型打分需要使用者提供模型資訊,對多路召回的結果根據模型打分排序。
多路召回實踐案例
電商/零售搜尋
社群論壇搜尋
對比接入前後top title的不同效果
原文連結:https://developer.aliyun.com/article/788235?utm_content=g_1000314852
本文為阿里雲原創內容,未經允許不得轉載。