Condividi tramite


VECTOR_DISTANCE (Transact-SQL) (anteprima)

Si applica a: SQL Server 2025 (17.x) Anteprima del databaseSQL 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