VECTOR_DISTANCE (Transact-SQL) (anteprima)
Si applica a: Database SQL di Azure
Istanza gestita di SQL di Azure
Nota
Questo tipo di dati è in anteprima ed è soggetto a modifiche. Assicurarsi di leggere le condizioni di utilizzo dell'anteprima nel documento Contratti di servizio (SLA) per Online Services .
Calcola la distanza tra due vettori usando una metrica di distanza specificata.
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 cosenoeuclidean
- Distanza euclideadot
- (Negativo) Prodotto punto
vector1
Espressione che restituisce un vettore in formato binario.
vector2
Espressione che restituisce un vettore in formato binario.
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 valori binari forniti non rappresentano vettori validi.
Esempi
Esaminare il repository GitHub degli esempi di ricerca vettoriale database SQL di Azure per ottenere esempi di lavoro end-to-end.
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.
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. I dettagli del database usato nell'esempio sono disponibili qui: Scaricare e importare l'articolo di Wikipedia con incorporamenti vettoriali
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