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)
Database
SQL di Azure Istanza
gestita di SQL di Azurein Microsoft Fabric
La VECTOR_DISTANCE funzione calcola la distanza tra due vettori usando una metrica di distanza specificata. La distanza vettoriale è sempre esatta e non usa alcun indice vettoriale, anche se disponibile. Per usare un indice vettoriale ed eseguire quindi una ricerca vettoriale approssimativa, è necessario usare la funzione VECTOR_SEARCH . 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.
Note
VECTOR_DISTANCEè disponibile in Istanza gestita di SQL di Azure con i criteri di aggiornamento di SQL Server 2025 o Always-up-to-date.
Syntax
Convenzioni relative alla sintassi Transact-SQL
VECTOR_DISTANCE ( distance_metric , vector1 , vector2 )
Arguments
distance_metric
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
vector1
Espressione che restituisce il tipo di dati vector .
vector2
Espressione che restituisce il tipo di dati vector .
Metriche di distanza
| Metric | Description | Range | Examples |
|---|---|---|---|
cosine |
Distanza coseno (angolare) | [0, 2] |
0: vettori identici2: vettori opposti |
euclidean |
Distanza euclidea | [0, +∞] |
0: vettori identici |
dot |
Indicazione a base di prodotto punto di distanza, ottenuto calcolando il prodotto punto negativo |
[-∞, +∞] | I numeri più piccoli indicano vettori più simili |
Valore restituito
La funzione restituisce un valore float scalare che rappresenta la distanza tra i due vettori usando la metrica di distanza specificata.
Viene restituito un errore se distance_metric non è una metrica valida e se i vettori forniti non sono del tipo di dati vector.
Examples
I dettagli del database usato nell'esempio sono disponibili in GitHub: 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, ad esempio 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.
A. Creare un vettore da una matrice JSON
L'esempio seguente crea un vettore con tre dimensioni da una stringa con una matrice JSON.
DECLARE @v1 AS VECTOR(2) = '[1,1]';
DECLARE @v2 AS 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;
B. Restituire i primi 10 articoli simili in base ai titoli
Nell'esempio seguente vengono restituiti i primi 10 articoli più simili a un determinato articolo, in base alla distanza del coseno tra i vettori del titolo.
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;
C. Restituire articoli simili in base a una distanza vettoriale specifica
Nell'esempio seguente vengono restituiti tutti gli articoli simili a un determinato articolo, in base alla distanza del coseno tra i vettori del titolo, selezionando solo i titoli con una distanza inferiore a 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;