Partager via


VECTOR_DISTANCE (Transact-SQL) (préversion)

S’applique à : Azure SQL Database Azure SQL Managed Instance

Remarque

Ce type de données est en préversion et peut être modifié. Veillez à lire les termes d’utilisation de la préversion dans le document Contrats de niveau de service (SLA) pour Services en ligne.

Calcule la distance entre deux vecteurs à l’aide d’une métrique de distance spécifiée.

Syntaxe

Conventions de la syntaxe Transact-SQL

VECTOR_DISTANCE ( distance_metric, vector1, vector2 )

Arguments

distance_metric

Chaîne portant le nom de la métrique de distance à utiliser pour calculer la distance entre les deux vecteurs donnés. Les métriques de distance suivantes sont prises en charge :

  • cosine - Distance cosinus
  • euclidean - Distance euclide
  • dot - (Négatif) Produit point

vector1

Expression qui prend la valeur d’un vecteur au format binaire.

vector2

Expression qui prend la valeur d’un vecteur au format binaire.

Métriques de distance

Métrique Description Plage Exemples
cosine Distance cosinus (angular) [0, 2] 0: vecteurs identiques
2: vecteurs opposés
euclidean Distance euclidienne [-∞, +∞] 0: vecteurs identiques
dot Indication basée sur le produit de point de distance,
obtenu en calculant le produit point négatif
[-∞, +∞] Des nombres plus petits indiquent des vecteurs plus similaires

Valeur retournée

La fonction retourne une valeur flottante scalaire qui représente la distance entre les deux vecteurs à l’aide de la métrique de distance spécifiée.

Une erreur est retournée si distance_metric n’est pas une métrique valide et si les valeurs binaires fournies ne représentent pas de vecteurs valides.

Exemples

Passez en revue le dépôt GitHub d’exemples de recherche vectorielle Azure SQL Database pour obtenir des exemples de travail de bout en bout.

Les exemples supposent l’existence d’une table nommée wikipedia_articles avec une colonne title_vector de type vector qui stocke les incorporations de titres d’articles Wikipédia. title_vector est supposé être un incorporation généré avec un modèle d’incorporation comme l’incorporation de texte-ada-002 ou text-embedding-3-small , qui retourne des vecteurs avec 1 536 dimensions.

Exemple 1

L’exemple suivant crée un vecteur avec trois dimensions à partir d’une chaîne avec un tableau 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;

Exemple 2

L’exemple suivant retourne les 10 premiers articles les plus similaires à un article donné, en fonction de la distance de cosinus entre leurs vecteurs de titre. Vous trouverez ici les détails de la base de données utilisée dans l’exemple : téléchargez et importez l’article Wikipédia avec vector embeddings

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

Exemple 3

L’exemple suivant retourne tous les articles similaires à un article donné, en fonction de la distance de cosinus entre leurs vecteurs de titre, en sélectionnant uniquement ceux dont la distance est inférieure à 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