Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Applies to: SQL Server 2025 (17.x) Preview
Usare VECTOR_SEARCH
per cercare vettori simili a uno specifico vettore di query usando un algoritmo di ricerca di vettori vicini più vicino approssimativo. Per altre informazioni sul funzionamento dell'indicizzazione vettoriale e della ricerca vettoriale e sulle differenze tra ricerca esatta e approssimativa, vedere Panoramica delle ricerche vettoriali e degli indici vettoriali nel motore di database SQL.
Preview feature
Note
Questa funzione è in anteprima ed è soggetta a modifiche. Assicurarsi di leggere le condizioni di utilizzo dell'anteprima nei contratti di servizio (SLA) per i servizi online.
Questa funzionalità è in anteprima. 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
Convenzioni relative alla sintassi Transact-SQL
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 = oggetto [AS source_table_alias]
Tabella in cui eseguire la ricerca. Deve essere una tabella di base. Le viste, le tabelle temporanee, sia locali che globali, non sono supportate.
COLUMN = vector_column
Colonna vettoriale in cui viene eseguita la ricerca. The column must be a vector data type.
SIMILAR_TO = query_vector
Vettore utilizzato per la ricerca. It must be a variable or a column of vector type.
METRIC = { 'coseno' | 'dot' | 'euclideo' }
Metrica della distanza usata per calcolare la distanza tra il vettore di query e i vettori nella colonna specificata. Viene usato un indice ANN (Nearest Neighbor approssimativo) solo se viene trovato un indice ANN corrispondente, con la stessa metrica e nella stessa colonna. Se non sono presenti indici ANN compatibili, viene generato un avviso e viene usato l'algoritmo KNN (k-Nearest Neighbor).
TOP_N = <k>
Numero massimo di vettori simili che devono essere restituiti. It must be a positive integer.
result_table_alias
L'alias viene usato per fare riferimento al set di risultati.
Restituire il set di risultati
Il set di risultati restituito include tutte le colonne della tabella specificata nell'argomento TABLE, oltre alla colonna aggiuntiva distance
. La distance
colonna contiene la distanza tra il vettore specificato nell'argomento COLUMN e il vettore specificato in SIMILAR_TO argomento.
Limitations
L'anteprima corrente presenta le limitazioni seguenti:
Post-filtering only
La ricerca vettoriale viene eseguita prima di applicare qualsiasi predicato. I predicati aggiuntivi vengono applicati solo dopo la restituzione dei vettori più simili. L'esempio seguente restituisce le prime 10 righe con incorporamenti più simili al vettore @qv
di query , quindi applica il predicato specificato nella WHERE
clausola . Se nessuna delle 10 righe associate ai vettori restituiti dalla ricerca vettoriale ha la accepted
colonna uguale a 1, il risultato è vuoto.
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 non può essere usato nelle visualizzazioni
VECTOR_SEARCH
non può essere utilizzato nel corpo di una visualizzazione.
Examples
Example 1
Nell'esempio seguente vengono trovati i 10 articoli più simili a Pink Floyd music style
nella wikipedia_articles_embeddings
tabella .
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
Uguale all'esempio 1, ma questa volta i vettori di query prendono da un'altra tabella anziché da una variabile.
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
Esempio end-to-end di base che usa CREATE VECTOR INDEX
e la funzione correlata VECTOR_SEARCH
. Gli incorporamenti vengono fittizi. In a real world scenario, embeddings are generated using an embedding model and AI_GENERATE_EMBEDDINGS, or an external library such as OpenAI SDK.
Il blocco di codice seguente illustra la VECTOR_SEARCH
funzione con incorporamenti fittizi:
- Abilita il flag di traccia, necessario nell'anteprima corrente.
- Create a sample table
dbo.Articles
with a columnembedding
with data type vector(5). - Inserire dati di esempio con dati fittizi di incorporamento.
- Creare un indice vettoriale in
dbo.Articles.embedding
. - Illustrare la ricerca di somiglianza del vettore con la
VECTOR_SEARCH
funzione .
-- 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;