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 形式のオブジェクト リテラル。 有効な項目には、distanceFunction と dataType が含まれます。 |
distanceFunction |
距離/類似性の計算に使用されるメトリック。 |
dataType |
ベクトルのデータ型。 float32 、 int8 、 uint8 値。 既定値は 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
に方向を指定する必要はありません。- 結果は類似度スコアとして表されます。