共用方式為


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 格式化的物件常值,可用來指定向量距離計算的選項。 有效的項目包括 distanceFunctiondataType
distanceFunction 用來計算距離/相似性的計量。
dataType 向量的資料類型。 float32、 、 int8uint8 值。 預設值為 float32

支援的計量 distanceFunction 如下:

  • cosine,其值來自 -1 (最不類似) 和 +1 (最相似)。
  • dotproduct,其具有 (-∞) (-inf最不相似的) +∞+inf() (最相似) 的值。
  • euclidean,其具有 ( 0 最類似) 與 +∞+inf) 的值(最不相似)。

傳回類型

會傳回一個數值運算式,該運算式列舉了兩個運算式之間的相似度分數。

範例

第一個範例只包含必要的自變數。

SELECT VALUE {
  name: s.name, 
  similarityScore: VectorDistance(s.vector1, s.vector2)
}
FROM 
  source s
ORDER BY 
  VectorDistance(s.vector1, s.vector2)

下一個範例也包含選擇性自變數。

SELECT VALUE {
  name: s.name, 
  similarityScore: VectorDistance(s.vector1, s.vector2, true, {'distanceFunction':'cosine', 'dataType':'float32',})
}
FROM 
  source s
ORDER BY 
  VectorDistance(s.vector1, s.vector2)

備註

  • 此函式需要在 Azure Cosmos DB NoSQL 向量搜尋預覽功能中註冊。
  • 此函式受益於向量索引
  • 如果 false 指定為選用的 bool_expr,則會使用路徑上所定義的向量索引 (如果有的話)。 如果向量路徑上未定義任何索引,則此函式會還原為完整掃描,並產生比使用向量索引更高的 RU 費用和更高的延遲。
  • 在 子句中使用 ORDER BYVectorDistance,不需要針對 ORDER BY 指定任何方向,因為結果一律會依最相似(第一個)與最不相似的 (last) 順序排序,以所使用的相似度計量為基礎。
  • 結果會以相似度分數表示。