全部產品
Search
文件中心

OpenSearch:電商行業模板-多路搜尋

更新時間:Jul 13, 2024

介紹

OpenSearch的多路搜尋功能結合了文本搜尋和向量搜尋,做到了搜尋延遲和計算消耗低於OR邏輯情況下更高的準確性,並在搜題情境已經得到有效驗證。多路召回架構還可以使用到:圖片向量召回、公式召回、個人化召回等情境中。image

為什麼要多路召回 ?

  • 解決分詞、同義字、錯誤修正等無法覆蓋而導致漏召回的符合搜尋意圖的情況;

  • 緩解長尾query零少召回情況。

舉例

假設使用者的query=利根川,分詞==>利根 川。

如果doc內容=利根川大自然牛肉乾,分詞==>利根 川大 自然 牛肉乾,此時無法通過文本分詞的方式將該doc召回,如果使用向量召回方式,則不強依賴於文本的分詞結果,向量召回是通過語義匹配召回的,則可以通過“利根川”召回“利根川大自然牛肉乾”。

電商行業模板的多路搜尋配置

1.配置電商行業模板,行業模板配置完成後檢查是否配置了對應的向量索引(這裡用的是“向量-電商向量通用”):

001

2.建立查詢分析,增加一個“文本向量化”功能,並配置上1中設定的向量索引:

002

3.設定排序策略,電商行業模板預設會建立兩個排序策略(sys_first_default-基礎排序、sys_second_default- 針對業務排序):

003

4.建立多路召回策略,步驟為:設定策略名稱稱 --> 多路搜尋配置(向量索引,文本索引) --> 配置綜合排序(排序邏輯,參與排序的文檔數量) :

004

5.控制台測試

假設查詢query為:搜尋測試,多路搜尋查詢策略為sys_strategy,查詢分析規則為sys_defaultimage:圖中的三個參數,缺一不可(查詢分析如果設定為預設,這裡可以省略)。查詢請求格式:

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的值;

  • 非系統自動產生的向量索引,無法在查詢分析文本向量化功能中選擇。

  • 如需使用自建向量索引的多路搜尋功能,請聯絡我們。