VectorDistance (NoSQL 查詢)
適用於:NoSQL
會傳回兩個指定向量之間的相似度分數。
注意
如需詳細資訊,請參閱地理空間和 GeoJSON 位置資料。
語法
VECTORDISTANCE(<vector_expr1>, <vector_expr2>, [<bool_expr>], [<obj_expr>])
引數
描述 | |
---|---|
spatial_expr_1 |
float32 或更小的陣列。 |
spatial_expr_2 |
float32 或更小的陣列。 |
bool_expr |
一個布林值,指定如何在 ORDER BY 運算式中使用計算值。 如果是 true ,則會使用暴力密碼破解。 如果存在,值 false 會利用向量屬性上定義的任何索引。 預設值為 false 。 |
obj_expr |
一個 JSON 格式化的物件常值,可用來指定向量距離計算的選項。 有效的項目包括 distanceFunction 與 dataType 。 |
distanceFunction |
用來計算距離/相似性的計量。 |
dataType |
向量的資料類型。 float32 、float16 、int8 、uint8 值。 預設值為 float32 。 |
支援的計量 distanceFunction
如下:
- 餘弦值從 -1 (最低相似) 到 +1 (最相似)。
- dotproduct,其值為 -inf (最不類似) 與 +inf (最相似)。
- euclidean,其值為 0 (最類似) 到 +inf (最不相似)。
傳回類型
會傳回一個數值運算式,該運算式列舉了兩個運算式之間的相似度分數。
範例
含必要的引數
SELECT c.name, VectorDistance(c.vector1, c.vector2) AS SimilarityScore
FROM c
ORDER BY VectorDistance(c.vector1, c.vector2)
含選用的引數
SELECT c.name, VectorDistance(c.vector1, c.vector2, true, {'distanceFunction':'cosine', 'dataType':'float32',}) AS SimilarityScore
FROM c
ORDER BY VectorDistance(c.vector1, c.vector2)
備註
- 此函式需要在 Azure Cosmos DB NoSQL 向量搜尋預覽功能中註冊。
- 此函式受益於向量索引
- 如果
false
指定為選用的bool_expr
,則會使用路徑上所定義的向量索引 (如果有的話)。 如果向量路徑上未定義任何索引,則這會還原為完整掃描,併產生比使用向量索引更高的 RU 費用和更高的延遲。 - 在 子句中使用
ORDER BY
時VectorDistance
,無法針對ORDER BY
指定任何方向,因為結果一律會依最相似(第一個)與最不相似的 (last) 順序排序,以所使用的相似度度量為基礎。 如果指定 或DESC
之類的ASC
方向,就會發生錯誤。 - 結果會以相似度分數表示。
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應