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.
Anteprima di SQL Server 2025 (17.x)
Creare un indice approssimativo su una colonna vettoriale per migliorare le prestazioni della ricerca dei vicini più vicini. Per altre informazioni sul funzionamento dell'indicizzazione vettoriale e della ricerca vettoriale e sulle differenze tra ricerca esatta e approssimativa, vedere Vettori nel motore di database SQL.
Funzionalità di anteprima
Annotazioni
Questa funzionalità in anteprima è 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. Per usare questa funzionalità, è necessario abilitare i flag di traccia seguenti:
DBCC TRACEON(466, 474, 13981, -1)
Assicurarsi di controllare le limitazioni correnti prima di usarlo.
Sintassi
Convenzioni relative alla sintassi Transact-SQL
CREATE VECTOR INDEX index_name
ON object ( vector_column )
[ WITH (
[,] METRIC = { 'cosine' | 'dot' | 'euclidean' }
[ [,] TYPE = 'DiskANN' ]
[ [,] MAXDOP = max_degree_of_parallelism ]
) ]
[ ON { filegroup_name | "default" } ]
[;]
Argomenti
index_name
Nome dell'indice. I nomi degli indici devono essere univoci all'interno di una tabella, ma non devono essere univoci all'interno di un database. I nomi degli indici devono seguire le regole degli identificatori.
oggetto
Tabella in cui viene creato l'indice. Deve essere una tabella di base. Le viste, le tabelle temporanee, sia locali che globali, non sono supportate.
vector_column
Colonna da utilizzare per creare l'indice vettoriale. Deve essere di tipo vector .
METRIC = { 'coseno' | 'dot' | 'euclideo' }
Stringa con il nome della metrica della distanza da usare per calcolare la distanza tra i due vettori specificati. Sono supportate le metriche di distanza seguenti:
-
cosine
- Distanza coseno -
euclidean
- Distanza euclidea -
dot
- (Negativo) Prodotto punto
TYPE = 'DiskANN'
Tipo di algoritmo ANN utilizzato per compilare l'indice. Attualmente è supportato solo DiskANN
. DiskANN è il valore predefinito.
MAXDOP = max_degree_of_parallelism
Esegue l'override dell'opzione di configurazione massimo grado di parallelismo per l'operazione sull'indice. Per altre informazioni, vedere Max degree of parallelism.For more information, see Max degree of parallelism. Usare MAXDOP
per limitare il grado di parallelismo e il consumo di risorse risultante per un'operazione di compilazione dell'indice.
max_degree_of_parallelism può essere:
1
Disattiva la generazione di piani paralleli.
>1
Limita il grado massimo di parallelismo usato in un'operazione di indice parallelo al numero specificato o meno in base al carico di lavoro di sistema corrente.
0
(impostazione predefinita)Usa il grado di parallelismo specificato a livello di server, database o gruppo del carico di lavoro, a meno che non venga ridotto in base al carico di lavoro di sistema corrente.
Per altre informazioni, vedere Configurazione di operazioni parallele sugli indici.
Annotazioni
Le operazioni parallele sugli indici non sono disponibili in ogni edizione di Microsoft SQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL Server, vedere Edizioni e funzionalità supportate di SQL Server 2022 o Edizioni e funzionalità supportate di SQL Server 2025 Preview.
Limitazioni
L'anteprima corrente presenta le limitazioni seguenti:
- L'indice vettoriale non può essere partizionato. Nessun supporto per la partizione.
- La tabella deve avere una singola colonna, un numero intero, un indice cluster con chiave primaria.
- Una tabella con un indice vettoriale diventa di sola lettura. Non è consentita alcuna modifica dei dati mentre l'indice vettoriale è presente nella tabella.
- Gli indici vettoriali non vengono replicati nei sottoscrittori.
Autorizzazioni
L'utente deve disporre ALTER
dell'autorizzazione per la tabella.
Esempi
I dettagli del database usato nell'esempio sono disponibili qui: Scaricare e importare l'articolo di Wikipedia con incorporamenti vettoriali.
Gli esempi presuppongono l'esistenza di una tabella denominata wikipedia_articles
con una colonna title_vector
di tipo vector
che archivia gli incorporamenti del titolo degli articoli di Wikipedia.
title_vector
si presuppone che sia un incorporamento generato con un modello di incorporamento come text-embedding-ada-002 o text-embedding-3-small, che restituisce vettori con 1.536 dimensioni.
Per altri esempi, incluse le soluzioni end-to-end, vedere il repository GitHub Degli esempi di ricerca vettoriale del database SQL di Azure.
Esempio 1
Nell'esempio seguente viene creato un indice vettoriale nella title_vector
colonna usando la cosine
metrica .
CREATE VECTOR INDEX vec_idx ON [dbo].[wikipedia_articles]([title_vector])
WITH (METRIC = 'cosine', TYPE = 'diskann');
Esempio 2
Nell'esempio seguente viene creato un indice vettoriale nella title_vector
colonna usando la metrica del prodotto (negativo), dot
limitando il parallelismo a 8 e archiviando il vettore nel SECONDARY
filegroup.
CREATE VECTOR INDEX vec_idx ON [dbo].[wikipedia_articles]([title_vector])
WITH (METRIC = 'cosine', TYPE = 'diskann', MAXDOP = 8)
ON [SECONDARY]
Esempio 3
Esempio end-to-end di base che usa CREATE VECTOR INDEX
e la funzione correlata VECTOR_SEARCH
. Gli incorporamenti vengono fittizi. In uno scenario reale, gli incorporamenti vengono generati usando un modello di incorporamento e AI_GENERATE_EMBEDDINGS o una libreria esterna come OpenAI SDK.
Il blocco di codice seguente crea incorporamenti fittizi con la procedura seguente:
- Abilita il flag di traccia, necessario nell'anteprima corrente.
- Creare una tabella di esempio con una colonna con tipo di dati vector(5).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;