VectorDistance (NoSQL 查詢)
適用於:NoSQL
會傳回兩個指定向量之間的相似度分數。
語法
VectorDistance(<vector_expr_1>, <vector_expr_2>, <bool_expr>, <obj_expr>)
引數
參數 | 描述 |
---|---|
vector_expr_1 |
float32 或更小的陣列。 |
vector_expr_2 |
float32 或更小的陣列。 |
bool_expr |
選擇性布爾值,指定如何在 ORDER BY 運算式中使用計算值。 如果是 true ,則會使用暴力密碼破解。 如果存在,值 false 會使用在向量屬性上定義的任何索引。 預設值為 false 。 |
obj_expr |
選擇性的 JSON 格式化物件常值,用來指定向量距離計算的選項。 有效的專案包括 distanceFunction 和 dataType 與 。 searchListSizeMultiplier |
選擇性參數的支持參數 obj_expr
參數 | 描述 |
---|---|
distanceFunction |
用來計算距離/相似性的計量。 |
dataType |
向量的資料類型。 float32 、 、 int8 uint8 值。 預設值為 float32 。 |
searchListSizeMultiplier |
整數,指定執行向量搜尋時搜尋清單的大小。 增加這可能會以犧牲 RU 成本和延遲為代價來改善精確度。 Min=1、Default=5、Max=100。 |
支援的計量 distanceFunction
如下:
cosine
,其值來自-1
(最不類似) 和+1
(最相似)。dotproduct
,其具有 (-∞
) (-inf
最不相似的)+∞
+inf
() (最相似) 的值。euclidean
,其具有 (0
最類似) 與+∞
(+inf
) 的值(最不相似)。
傳回類型
會傳回一個數值運算式,該運算式列舉了兩個運算式之間的相似度分數。
範例
第一個範例顯示只有必要自變數的前 10 個向量搜尋查詢。 投影了一個屬性,以及所傳回的 VectorDistance
分數。 然後,我們會使用 ORDER BY
子句來排序 VectorDistance
分數,順序從最不類似到最低。
SELECT TOP 10 s.name, VectorDistance(c.vector1, <query_vector>)
FROM c
ORDER BY VectorDistance(c.vector1, <query_vector>)
下一個範例也包含的選擇性自變數 VectorDistance
SELECT TOP 10 s.name, VectorDistance(c.vector1, <query_vector>, true, {'distanceFunction':'cosine', 'dataType':'float32'})
FROM c
ORDER BY VectorDistance(c.vector1, <query_vector>, true, {'distanceFunction':'cosine', 'dataType':'float32'})
重要
一律在查詢的語句中使用 TOP N
SELECT
子句。 否則,向量搜尋會嘗試傳回更多結果,而查詢會花費更多 RU,且延遲比必要還要高。
備註
- 此函式需要啟用 Azure Cosmos DB NoSQL 向量搜尋功能。
- 此函式受益於向量索引
- 如果
false
指定為選擇性bool_expr
的 ,則會使用路徑上定義的向量索引,如果有的話。 如果向量路徑上未定義任何索引,則此函式會還原為完整掃描,並產生比使用向量索引更高的 RU 費用和更高的延遲。 - 在 子句中使用
ORDER BY
時VectorDistance
,不需要針對ORDER BY
指定任何方向,因為結果一律會依最相似(第一個)與最不相似的 (last) 順序排序,以所使用的相似度計量為基礎。 - 結果會以相似度分數表示。