適用対象: SQL Server 2025 (17.x) プレビュー
Azure SQL Database
Azure SQL Managed Instance
SQL データベース
注
このデータ型はプレビュー段階であり、変更される可能性があります。 オンライン サービスのサービス レベル アグリーメント (SLA) のプレビュー使用条件を必ず読んでください。
指定した距離メトリックを使用して、2 つのベクトル間の距離を計算します。 ベクター距離は常に正確であり、使用可能な場合でもベクター インデックスを使用しません。 ベクトル インデックスを使用して近似ベクトル検索を実行するには、 VECTOR_SEARCH 関数を使用する必要があります。 ベクター インデックス作成とベクター検索のしくみ、および正確な検索と近似検索の違いの詳細については、 SQL Database エンジンのベクターを参照してください。
構文
VECTOR_DISTANCE ( distance_metric, vector1, vector2 )
引数
distance_metric
指定された 2 つのベクトル間の距離を計算するために使用する距離メトリックの名前を持つ文字列。 次の距離メトリックがサポートされています。
-
cosine
- コサイン距離 -
euclidean
- ユークリッド距離 -
dot
- (負の) ドット積
vector1
ベクター データ型に評価される式。
vector2
ベクター データ型に評価される式。
距離メトリック
メトリック | 説明 | 範囲 | 例 |
---|---|---|---|
cosine |
コサイン (角度) 距離 | [0, 2] |
0 : 同一のベクトル 2 : 反対のベクトル |
euclidean |
ユークリッド距離 | [-∞, +∞] |
0 : 同一のベクトル |
dot |
ドット積に基づく距離の表示、 負ドット積を計算することによって得られる |
[-∞, +∞] | 数値が小さいほど、ベクトルが類似していることが示されます |
戻り値
この関数は、指定した距離メトリックを使用して 2 つのベクトル間の距離を表すスカラー float 値を返します。
distance_metricが有効なメトリックでない場合、および指定されたベクターがベクター データ型でない場合は、エラーが返されます。
例
サンプルで使用されているデータベースの詳細については、 Vector Embeddings を使用して Wikipedia の記事をダウンロードしてインポートします。
例では、タイトルの Wikipedia 記事の埋め込みを格納するwikipedia_articles
型の列title_vector
vector
という名前のテーブルが存在することを前提としています。
title_vector
は、 text-embedding-ada-002 や text-embedding-3-small などの埋め込みモデルを使用して生成された埋め込みであると見なされます。これは、1,536 次元のベクトルを返します。
エンド ツー エンド ソリューションなど、その他の例については、 Azure SQL Database Vector Search サンプル GitHub リポジトリを参照してください。
例 1
次の例では、JSON 配列を持つ文字列から 3 次元のベクターを作成します。
DECLARE @v1 VECTOR(2) = '[1,1]';
DECLARE @v2 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;
例 2
次の例では、タイトル ベクター間のコサイン距離に基づいて、特定のアーティクルに最も類似した記事の上位 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
例 3
次の例では、タイトル ベクトル間のコサイン距離に基づいて、距離が 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