向量檢索介紹
為了滿足更多元化、更複雜的業務情境,OpenSearch推出向量檢索功能,在特定的業務情境下(特別是教育搜題情境、圖片搜尋情境),可以結合多路搜尋功能,提升搜尋結果的準確率。下面將介紹向量索引的文法說明和注意事項。
文法說明
query = vector_index:'向量'
樣本:查詢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
使用樣本:
query=index_name:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&sf=0.8'
指定top n 查詢
功能說明:指定向量檢索返回的top結果數
參數格式:&n=number
直接拼接在向量之後
使用樣本:
query=vector_index:'0.1,0.2,0.98,0.6;0.3,0.4,0.98,0.6&n=10'
擷取向量得分排序
功能說明:通過在業務排序運算式中設定proxima_score()
函數擷取向量得分進行排序。
配置步驟:
建立業務排序策略:
注:proxima_score函數的參數為向量索引名稱。
搜尋測試頁面引用,建立的業務排序策略進行測試:
說明
系統預設使用歐式距離(l2)
內積距離(ip),向量得分越大,文檔相關性越高
歐式距離(l2),向量得分越小,文檔相關性越高
注意事項
系統預設在構建索引時的向量距離方式為歐式距離(l2),如需內積距離(ip),需要將內積距離的向量歸一化後在傳入引擎
向量索引對應的欄位必須為DOUBLE_ARRAY類型。
向量分詞器目前支援的維度有64維、128維、256、512維,每個維度對應的DOUBLE_ARAARY類型的欄位中的元素也必須為64維、128維、256維、512維,必須精準對應。
向量索引的長度限制為編碼前4K,一般一個query裡面最多支援查詢2個向量索引