介紹
OpenSearch的多路搜尋功能結合了文本搜尋和向量搜尋,做到了搜尋延遲和計算消耗低於OR邏輯情況下更高的準確性,並在搜題情境已經得到有效驗證。多路召回架構還可以使用到:圖片向量召回、公式召回、個人化召回等情境中。
純文字查詢與多路搜尋在搜題情境下的對比
為什麼搜題要做多路召回?教育拍照搜題情境相比網頁/電商的文本搜尋有顯著差異:
搜尋Query特別長:常規檢索term數上限30,搜題可能需要100
搜尋Query可能是由拍照OCR識別之後得到的文本,關鍵term的識別錯誤會嚴重影響召回排序
純文字查詢方案
1.OR邏輯查詢:
為了降低無結果率,搜題客戶常見的系統是基於ES預設的OR邏輯,搜尋延遲高,計算消耗大
OpenSearch也支援OR邏輯,針對搜尋延遲高可以通過並行搜尋的方式最佳化,但整體計算消耗仍然高
2.AND邏輯查詢
採用通用的Query分析模組,無結果率高,整體準確性不如OR邏輯
針對教育領域最佳化定製的Query分析模組,大幅提高效果,準確性接近OR邏輯
文本向量檢索
目標:通過文本向量檢索擴召回,結合AND邏輯查詢,做到搜尋延遲和計算消耗低於OR邏輯的情況下準確性更高向量召回採用BERT模型,其中針對教育搜題做的特別最佳化有:
BERT模型採用達摩院自研的StructBERT,並針對教育行業定製模型
向量檢索引擎採用達摩院自研的proxima引擎,準確性和運行速度遠超開源系統
訓練資料可以基於客戶的搜尋日誌不斷積累,效果持續提
效果:
召回率達到OR邏輯
準確性超出OR邏輯3%-5%
整體召回doc數量減少40倍,搜尋延遲降低10倍以上
教育行業模板的多路搜尋配置
1.配置教育行業模板,行業模板配置完成後檢查是否配置了對應的向量索引(這裡用的是“向量-教育向量k12”):2.建立查詢分析,增加一個“文本向量化”功能,並配置上1中設定的向量索引:3.設定排序策略,教育行業模板預設會建立兩個CAVA指令碼的業務排序(sys_text_rank-針對文本索引、sys_vector_rank- 針對向量索引):
4.建立多路召回策略,步驟為:設定策略名稱稱 --> 多路搜尋配置(向量索引,文本索引) --> 配置綜合排序(排序邏輯,參與排序的文檔數量) :
5.控制台測試:
假設查詢query為:搜尋測試,多路搜尋查詢策略為sys_strategy,查詢分析規則為sys_default注:圖中的三個參數,缺一不可(查詢分析如果設定為預設,這裡可以省略)。查詢請求格式:
query=default:'搜尋測試'&search_strategy=sys_strategy&raw_query=搜尋測試&qp=sys_default
SDK參數配置:(以Java為例)
...
//定義Config對象,用於設定config子句參數,用於分頁或設定資料返回格式
Config config = new Config(Lists.<String>newArrayList(appName));
config.setStart(0);
config.setHits(10);
//設定返回格式為json
config.setSearchFormat(SearchFormat.FULLJSON);
// 建立參數對象
SearchParams searchParams = new SearchParams(config);
//設定查詢需要傳入的參數
HashMap<String,String> paraMap=new HashMap<String,String>();
//設定raw_query
paraMap.put("raw_query","搜尋測試");
//設定多路搜尋
paraMap.put("search_strategy","sys_strategy");
searchParams.setCustomParam(paraMap);
//設定查詢分析
List<String> qpName = new ArrayList<String>();
qpName.add("sys_default"); //設定查詢分析名稱
searchParams.setQueryProcessorNames(qpName);
...
注意事項
多路召回功能目前只針對獨享型應用進行開放;
多路召回功能暫不支援aggregate、distinct子句;
每個應用最多建立10個多路召回的查詢策略;
多路搜尋配置中,文本搜尋和向量搜尋是必選項,並且二者的召回結果佔比和需為100%;
多路搜尋配置中,文本搜尋和向量搜尋的基礎排序從排序配置-基礎排序中選擇,業務排序從排序配置-業務排序中選擇;
綜合排序配置中,歸併排序從業務排式中選擇,必選,也可以選擇“無”,預設選擇“無”,排序文檔數量為必填,最多為5000,需填寫大於0的值;
非系統自動產生的向量索引,無法在查詢分析文本向量化功能中選擇。
如需使用自建向量索引的多路搜尋功能,請聯絡我們。