為滿足更加多元化和複雜的業務情境,OpenSearch推出了向量檢索功能。在特定業務情境下,特別是在教育搜題和圖片搜尋情境中,結合多路搜尋功能可以顯著提升搜尋結果的準確性。本文將對向量索引的文法說明及其注意事項進行詳細介紹。
文法說明
query = vector_index:'向量'&vector_search={"vector_index":{"namespaces":[],"threshold":0.5,"top_n":10,"search_params":{}}}
其中vector_search為選擇性參數,用於向量索引查詢配置。整體是一個字典格式,key為查詢的向量索引,value為具體的查詢配置。value常用配置項包括:
參數名 | 類型 | 預設值 | 說明 |
namespaces | list<string> | 通過命名空間將向量索引進行分區,查詢請求可被限制在索引的不同分區中;命名空間數不建議超過10000個;配置了命名空間後,查詢時必須指定命名空間。 | |
threshold | float | 向量召回最低分閾值。 | |
top_n | uint32 | 向量召回topN。 | |
search_params.qc_scan_ratio | float | 0.01 | QC索引查詢時掃描文檔數量比例,掃描的文檔數=總文檔數 * scan_ratio |
search_params.hnsw_ef | uint32 | 500 | HNSW索引查詢時掃描的文檔數,值越大,召回率越高,相應耗時越大。 |
vector_search參數在多路召回情境同樣有效。
樣本:查詢64維的向量索引
vector: '0.377796,-0.958450,0.409853,-0.238177,-1.293826,0.356797,-0.295727,0.847301,-1.220337,0.148032,-1.128458,0.903187,0.509352,0.293686,-1.005852,-0.488839,0.888227,-0.555556,-0.658025,0.267552,-0.567601,0.003045,0.591734,-0.515983,-1.316453,-1.462450,0.091946,1.554954,0.384802,0.720498,0.144338,1.217826,0.724039,0.044212,0.571332,-1.425430,0.618965,0.481887,-1.617787,1.505416,-0.683652,1.030900,0.562021,0.162437,0.816546,0.112229,-0.739288,-0.342643,-0.199292,0.508368,-1.384887,-1.842170,0.952622,-1.699499,0.199430,-0.232464,-0.273227,-0.383696,-0.511302,0.005458,1.873572,-0.926169,-0.417587,-0.660156'使用樣本
設定最低分閾值
功能說明:控制向量分值低於某個閾值時,不參與召回。
舊版參數格式:&sf=number
新版參數格式:vector_search={"vector_index":{"threshold":0.8}}
使用樣本:
// 舊版
query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&sf=0.8'
// 新版
query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6'&vector_search={"index_name":{"threshold":0.8}}指定top n 查詢
功能說明:指定向量檢索返回的top結果數。
舊版參數格式:&n=number
新版參數格式:vector_search={"vector_index":{"top_n":10}}
使用樣本:
// 舊版
query=vector_index:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&n=10'
// 新版
query=vector_index:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6'&vector_search={"index_name":{"top_n":10}}擷取向量得分排序
功能說明:通過在業務排序運算式中設定proxima_score() 函數擷取向量得分進行排序。
配置步驟:
建立業務排序策略:

注:proxima_score函數的參數為向量索引名稱。
搜尋測試頁面引用,建立的業務排序策略進行測試:

系統預設使用歐式距離(l2)。
內積距離(ip),向量得分越大,文檔相關性越高。
歐式距離(l2),向量得分越小,文檔相關性越高。
注意事項
系統預設在構建索引時的向量距離方式為歐式距離(l2),如需內積距離(ip),需要將內積距離的向量歸一化後再傳入引擎。
向量索引對應的欄位必須為DOUBLE_ARRAY類型。
向量分詞器目前支援的維度有64維、128維、256維、512維,每個維度對應的DOUBLE_ARRAY類型的欄位中的元素也必須為64維、128維、256維、512維,必須精準對應。
向量索引的長度限制為編碼前4K,一般一個query裡面最多支援查詢2個向量索引。