VectorDistance (NoSQL クエリ)

適用対象: NoSQL

指定した 2 つのベクトル間の類似度スコアを返します。

Note

詳細については、「地理空間と 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 ベクトルのデータ型。 float32int8uint8 値。 既定値は float32 です。

distanceFunctionでサポートされているメトリックは次のとおりです。

  • cosineは、 -1 (最も類似) から +1 (最も類似) までの値を持ちます。
  • dotproductは、 -∞ (-inf) から +∞ (+inf) (最も類似) までの値を持ちます。
  • euclideanは、 0 (最も類似) から +∞ (+inf) (最も類似) までの値を持ちます。

戻り値の型

2 つの式の間の類似度スコアを列挙する数値式を返します。

この最初の例には、必要な引数のみが含まれています。

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 Vector Search プレビュー機能への登録が必要です。
  • この関数では、ベクトル インデックスが役立ちます
  • false が省略可能な bool_expr として指定されている場合は、パスに定義されているベクトル インデックスが使用されます (存在する場合)。 ベクター パスにインデックスが定義されていない場合、この関数はフル スキャンに戻り、ベクター インデックスを使用する場合よりも RU 料金が高くなり、待機時間が長くなります。
  • ORDER BY句でVectorDistanceを使用する場合、結果は常に、使用される類似性メトリックに基づいて最も類似 (最初) から最も類似 (最後) の順序で並べ替えられるため、ORDER BYに方向を指定する必要はありません。
  • 結果は類似度スコアとして表されます。