Applies to: SQL Server 2025 (17.x) Preview
VECTOR_SEARCH
を使用して、近似最近傍ベクトル検索アルゴリズムを使用して、特定のクエリ ベクターと同様のベクトルを検索します。 ベクター インデックス作成とベクター検索のしくみ、および正確な検索と近似検索の違いの詳細については、 SQL Database エンジンでのベクター検索とベクター インデックスの概要を参照してください。
Preview feature
Note
この関数はプレビュー段階であり、変更される可能性があります。 オンライン サービスのサービス レベル アグリーメント (SLA) のプレビュー使用条件を必ず読んでください。
この機能はプレビュー段階にあります。 In order to use this feature, you must enable the following trace flags:
DBCC TRACEON(466, 474, 13981, -1)
Make sure to check out the current limitations before using it.
Syntax
VECTOR_SEARCH(
TABLE = object [AS source_table_alias]
, COLUMN = vector_column
, SIMILAR_TO = query_vector
, METRIC = { 'cosine' | 'dot' | 'euclidean' }
, TOP_N = k
) [AS result_table_alias]
Arguments
TABLE = オブジェクト [AS source_table_alias]
検索を実行するテーブル。 ベース テーブルである必要があります。 ローカルとグローバルの両方のビュー (一時テーブル) はサポートされていません。
COLUMN = vector_column
検索が実行されるベクター列。 The column must be a vector data type.
SIMILAR_TO = query_vector
検索に使用されるベクター。 It must be a variable or a column of vector type.
METRIC = { 'cosine' |'dot' |'euclidean' }
クエリ ベクターと指定した列のベクトル間の距離を計算するために使用される距離メトリック。 ANN (近似最近隣) インデックスは、同じメトリックと同じ列に一致する ANN インデックスが見つかった場合にのみ使用されます。 互換性のある ANN インデックスがない場合は、警告が発生し、KNN (k-Nearest Neighbor) アルゴリズムが使用されます。
TOP_N = <k>
返される必要がある類似ベクトルの最大数。 It must be a positive integer.
result_table_alias
エイリアスは、結果セットを参照するために使用されます。
結果セットを返す
返される結果セットには、TABLE 引数で指定されたテーブルのすべての列と、追加の distance
列が含まれます。
distance
列には、COLUMN 引数内の指定されたベクトルと、引数で指定されたベクトルSIMILAR_TO間の距離が含まれます。
Limitations
現在のプレビューには、次の制限があります。
Post-filtering only
ベクター検索は、述語を適用する前に行われます。 追加の述語は、最も似たベクトルが返された後にのみ適用されます。 次の例では、クエリ ベクター @qv
に最も似た埋め込みがある上位 10 行を返し、 WHERE
句で指定された述語を適用します。 ベクトル検索によって返されるベクトルに関連付けられている 10 行のうち、 accepted
列が 1 でない場合、結果は空になります。
SELECT
s.id,
s.title,
r.distance
FROM
VECTOR_SEARCH(
TABLE = dbo.sessions AS s,
COLUMN = embedding,
SIMILAR_TO = @qv,
METRIC = 'cosine',
TOP_N = 10
) AS r
WHERE
accepted = 1
ORDER BY
r.distance
ビューでVECTOR_SEARCHを使用することはできません
VECTOR_SEARCH
ビューの本文では使用できません。
Examples
Example 1
次の例では、Pink Floyd music style
テーブルのwikipedia_articles_embeddings
に最も似た 10 個の記事を検索します。
DECLARE @qv VECTOR(1536) = AI_GENERATE_EMBEDDING(N'Pink Floyd music style' USE MODEL Ada2Embeddings);
SELECT
t.id, s.distance, t.title
FROM
VECTOR_SEARCH(
TABLE = [dbo].[wikipedia_articles_embeddings] as t,
COLUMN = [content_vector],
SIMILAR_TO = @qv,
METRIC = 'cosine',
TOP_N = 10
) AS s
ORDER BY s.distance
Example 2
例 1 と同じですが、今回はクエリ ベクトルが変数ではなく別のテーブルから取得されます。
CREATE TABLE #t (
id INT,
q NVARCHAR(MAX),
v VECTOR(1536)
);
INSERT INTO
#t
SELECT
id, q, ai_generate_embeddings(q USE MODEL Ada2Embeddings)
FROM
(VALUES
(1, N'four legged furry animal'),
(2, N'pink floyd music style')
) S(id, q)
;
SELECT
t.id, s.distance, t.title
FROM
#t AS qv
CROSS APPLY
VECTOR_SEARCH(
TABLE = [dbo].[wikipedia_articles_embeddings] as t,
COLUMN = [content_vector],
SIMILAR_TO = qv.v,
METRIC = 'cosine',
TOP_N = 10
) AS s
WHERE
qv.id = 2
ORDER BY
s.distance
Example 3
CREATE VECTOR INDEX
と関連するVECTOR_SEARCH
関数を使用した基本的なエンドツーエンドの例。 埋め込みはモックされます。 In a real world scenario, embeddings are generated using an embedding model and AI_GENERATE_EMBEDDINGS, or an external library such as OpenAI SDK.
次のコード ブロックは、モック埋め込みを使用した VECTOR_SEARCH
関数を示しています。
- 現在のプレビューで必要なトレース フラグを有効にします。
- Create a sample table
dbo.Articles
with a columnembedding
with data type vector(5). - モック埋め込みデータを使用してサンプル データを挿入します。
-
dbo.Articles.embedding
にベクター インデックスを作成します。 -
VECTOR_SEARCH
関数を使用してベクトルの類似性検索を示します。
-- Step 0: Enable Preview Feature
DBCC TRACEON(466, 474, 13981, -1);
GO
-- Step 1: Create a sample table with a VECTOR(5) column
CREATE TABLE dbo.Articles
(
id INT PRIMARY KEY,
title NVARCHAR(100),
content NVARCHAR(MAX),
embedding VECTOR(5) -- mocked embeddings
);
-- Step 2: Insert sample data
INSERT INTO Articles (id, title, content, embedding)
VALUES
(1, 'Intro to AI', 'This article introduces AI concepts.', '[0.1, 0.2, 0.3, 0.4, 0.5]'),
(2, 'Deep Learning', 'Deep learning is a subset of ML.', '[0.2, 0.1, 0.4, 0.3, 0.6]'),
(3, 'Neural Networks', 'Neural networks are powerful models.', '[0.3, 0.3, 0.2, 0.5, 0.1]'),
(4, 'Machine Learning Basics', 'ML basics for beginners.', '[0.4, 0.5, 0.1, 0.2, 0.3]'),
(5, 'Advanced AI', 'Exploring advanced AI techniques.', '[0.5, 0.4, 0.6, 0.1, 0.2]');
-- Step 3: Create a vector index on the embedding column
CREATE VECTOR INDEX vec_idx ON Articles(embedding)
WITH (metric = 'cosine', type = 'diskann');
-- Step 4: Perform a vector similarity search
DECLARE @qv VECTOR(5) = '[0.3, 0.3, 0.3, 0.3, 0.3]';
SELECT
t.id,
t.title,
t.content,
s.distance
FROM
VECTOR_SEARCH(
table = Articles AS t,
column = embedding,
similar_to = @qv,
metric = 'cosine',
top_n = 3
) AS s
ORDER BY s.distance, t.title;