Condividi tramite


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 coseno
  • euclidean - Distanza euclidea
  • dot - (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