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 cosinuseuclidean
- Distance euclidedot
- (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