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) Anteprima
del database
SQL di Azure Istanza
gestita di SQL di Azurein Microsoft Fabric
Nota
Questo tipo di dati è in anteprima ed è soggetto a modifiche. Assicurarsi di leggere le condizioni di utilizzo dell'anteprima nei contratti di servizio (SLA) per i servizi online.
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 Vettori nel motore di database SQL.
Sintassi
Convenzioni relative alla sintassi Transact-SQL
VECTOR_DISTANCE ( distance_metric, vector1, vector2 )
Argomenti
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
Metrico | Descrizione | Intervallo | Esempi |
---|---|---|---|
cosine |
Distanza coseno (angolare) | [0, 2] |
0 : vettori identici 2 : vettori opposti |
euclidean |
Distanza euclidea | [-∞, +∞] |
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.
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
L'esempio seguente crea un vettore con tre dimensioni da una stringa con una matrice JSON.
DECLARE @v1 VECTOR(2) = '[1,1]';
DECLARE @v2 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;
Esempio 2
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
Esempio 3
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 quelli 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