次の方法で共有


VECTOR_DISTANCE(Transact-SQL)

適用対象: SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL データベース

VECTOR_DISTANCE関数は、指定した距離メトリックを使用して、2 つのベクトル間の距離を計算します。 ベクター距離は常に正確であり、使用可能な場合でもベクター インデックスを使用しません。 ベクトル インデックスを使用して近似ベクトル検索を実行するには、 VECTOR_SEARCH 関数を使用する必要があります。 ベクター インデックス作成とベクター検索のしくみ、および正確な検索と近似検索の違いの詳細については、 SQL Database エンジンのベクター検索とベクター インデックスを参照してください。

Note

VECTOR_DISTANCE は、SQL Server 2025 または Always-up-to-date更新ポリシーを使用して、Azure SQL Managed Instance で使用できます。

Syntax

Transact-SQL 構文表記規則

VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )

Arguments

distance_metric

指定された 2 つのベクトル間の距離を計算するために使用する距離メトリックの名前を持つ文字列。 次の距離メトリックがサポートされています。

  • cosine - コサイン距離
  • euclidean - ユークリッド距離
  • dot - (負の) ドット積

vector1

ベクター データ型に評価される式。

vector2

ベクター データ型に評価される式。

距離メトリック

Metric Description Range Examples
cosine コサイン (角度) 距離 [0, 2] 0: 同一のベクトル
2: 反対のベクトル
euclidean ユークリッド距離 [0、+∞] 0: 同一のベクトル
dot ドット積に基づく距離の表示、
ドット積を計算することによって得られる
[-∞, +∞] 数値が小さいほど、ベクトルが類似していることが示されます

戻り値

この関数は、指定した距離メトリックを使用して 2 つのベクトル間の距離を表すスカラー float 値を返します。

distance_metricが有効なメトリックでない場合、および指定されたベクターがベクター データ型でない場合は、エラーが返されます。

Examples

サンプルで使用されているデータベースの詳細については、GitHub の 「Vector Embeddings を使用して Wikipedia の記事をダウンロードしてインポートする」を参照してください。

例では、タイトルの Wikipedia 記事の埋め込みを格納するwikipedia_articles型の列title_vectorvectorという名前のテーブルが存在することを前提としています。 title_vector は、1,536 次元のベクトルを返す text-embedding-ada-002text-embedding-3-smallなど、埋め込みモデルで生成された埋め込みであると見なされます。

エンド ツー エンド ソリューションなど、その他の例については、 Azure SQL Database Vector Search サンプル GitHub リポジトリを参照してください。

A。 JSON 配列からベクターを作成する

次の例では、JSON 配列を持つ文字列から 3 次元のベクターを作成します。

DECLARE @v1 AS VECTOR(2) = '[1,1]';
DECLARE @v2 AS VECTOR(2) = '[-1,-1]';

SELECT VECTOR_DISTANCE('euclidean', @v1, @v2) AS euclidean,
       VECTOR_DISTANCE('cosine', @v1, @v2) AS cosine,
       VECTOR_DISTANCE('dot', @v1, @v2) AS negative_dot_product;

B: タイトルに基づいて上位 10 件の類似記事を返す

次の例では、タイトル ベクター間のコサイン距離に基づいて、特定のアーティクルに最も類似した記事の上位 10 個を返します。

DECLARE @v AS VECTOR(1536);

SELECT @v = title_vector
FROM [dbo].[wikipedia_articles]
WHERE title = 'Alan Turing';

SELECT TOP (10) id,
                title,
                VECTOR_DISTANCE('cosine', @v, title_vector) AS distance
FROM [dbo].[wikipedia_articles]
ORDER BY distance;

C. 特定のベクトル距離に基づいて同様のアーティクルを返す

次の例では、タイトル ベクトル間のコサイン距離に基づいて、距離が 0.3 未満のタイトルのみを選択して、特定のアーティクルに似た記事をすべて返します。

DECLARE @v AS VECTOR(1536);

SELECT @v = title_vector
FROM [dbo].[wikipedia_articles]
WHERE title = 'Alan Turing';

SELECT id,
       title,
       VECTOR_DISTANCE('cosine', @v, title_vector) AS distance
FROM [dbo].[wikipedia_articles]
WHERE VECTOR_DISTANCE('cosine', @v, title_vector) < 0.3
ORDER BY distance;