VectorDistance (NoSQL クエリ)
適用対象: NoSQL
指定した 2 つのベクトル間の類似度スコアを返します。
構文
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
) (最も類似) までの値を持ちます。
戻り値の型
2 つの式の間の類似度スコアを列挙する数値式を返します。
例
この最初の例では、必須の引数のみを含む上位 10 個のベクター検索クエリを示します。 1 つのプロパティが、 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'})
重要
クエリの SELECT
ステートメントでは、常に TOP N
句を使用してください。 そうしないと、ベクトル検索はもっと多くの結果を返そうとし、クエリにかかる RU が増え、必要以上に待ち時間が長くなります。
解説
- この関数では、 Azure Cosmos DB NoSQL ベクター検索機能を有効にする必要があります。
- この関数では、ベクトル インデックスが役立ちます
false
省略可能なbool_expr
として指定した場合は、パスに定義されているベクター インデックスが使用されます (存在する場合)。 ベクター パスにインデックスが定義されていない場合、この関数はフル スキャンに戻り、ベクター インデックスを使用する場合よりも RU 料金が高くなり、待機時間が長くなります。ORDER BY
句でVectorDistance
を使用する場合、結果は常に、使用される類似性メトリックに基づいて最も類似 (最初) から最も類似 (最後) の順序で並べ替えられるため、ORDER BY
に方向を指定する必要はありません。- 結果は類似度スコアとして表されます。