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.
Si applica a: SQL Server 2025 (17.x)
Azure SQL Database
SQL database in Microsoft Fabric
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 Ricerca vettoriale e indici vettoriali nel motore di database SQL.
Database SQL di Azure e database SQL in Fabric
La funzione è in anteprima. Assicurarsi di controllare le limitazioni correnti prima di usarlo.
Annotazioni
In quanto funzionalità di anteprima, la tecnologia presentata in questo articolo è soggetta alle condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure.
Funzionalità di anteprima di SQL Server 2025
In SQL Server 2025 questa funzione è in anteprima ed è soggetta a modifiche. Per usare questa funzionalità, è necessario abilitare la PREVIEW_FEATURESconfigurazione con ambito database.
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 .
METRICO
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
Tipo di algoritmo ANN utilizzato per compilare l'indice. Attualmente è supportato solo DiskANN. DiskANN è il valore predefinito.
MAXDOP
Esegue l'override dell'opzione di configurazione massimo grado di parallelismo per l'operazione sull'indice. Per altre informazioni, vedere configurazione del server : 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:
1Disattiva 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 Configurare le operazioni parallele sugli indici.
Annotazioni
Le operazioni parallele sugli indici non sono disponibili in tutte le edizioni di SQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL Server, vedi Edizioni e funzionalità supportate di SQL Server 2022 oppure Edizioni e funzionalità supportate di SQL Server 2025.
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.
Gli indici vettoriali non vengono replicati nei sottoscrittori.
Una tabella con un indice vettoriale diventa di sola lettura. Non è consentita alcuna modifica dei dati mentre l'indice vettoriale è presente nella tabella.
In Azure SQL Database e SQL database in Microsoft Fabric, puoi impostare la
ALLOW_STALE_VECTOR_INDEXconfigurazione con ambito del database suON, il che permette alla tabella di essere nuovamente scrivibile.Annotazioni
L'opzione
ALLOW_STALE_VECTOR_INDEXdi configurazione con ambito del database non è attualmente disponibile in SQL Server 2025 (17.x).L'indice vettoriale non viene aggiornato quando vengono inseriti nuovi dati o aggiornati nella tabella. Per aggiornare l'indice vettoriale, devi rifarlo e ricrearlo.
Problemi noti
Per altre informazioni, vedere Problemi noti.
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 = 'DOT', 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.Articleswith a columnembeddingwith 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
ALTER DATABASE SCOPED CONFIGURATION
SET PREVIEW_FEATURES = ON;
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;