Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
S’applique à : Base de données SQL Server 2025 (17.x)
Azure SQL Database
Azure SQL Managed Instance
SQL dans Microsoft Fabric
La VECTOR_DISTANCE fonction calcule la distance entre deux vecteurs à l’aide d’une métrique de distance spécifiée. La distance de vecteur est toujours exacte et n’utilise pas d’index vectoriel, même si elle est disponible. Pour utiliser un index vectoriel et ainsi effectuer une recherche vectorielle approximative, vous devez utiliser la fonction VECTOR_SEARCH . Pour en savoir plus sur le fonctionnement de l’indexation vectorielle et de la recherche vectorielle et les différences entre la recherche exacte et approximative, reportez-vous à la recherche vectorielle et aux index vectoriels dans le moteur de base de données SQL.
Note
VECTOR_DISTANCEest disponible dans Azure SQL Managed Instance avec la stratégie de mise à jourSQL Server 2025 ou Always-up-to-date.
Syntax
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 du type de données vectorielle .
vector2
Expression qui prend la valeur du type de données vectorielle .
Métriques de distance
| Metric | Description | Range | Examples |
|---|---|---|---|
cosine |
Distance cosinus (angular) | [0, 2] |
0: vecteurs identiques2: vecteurs opposés |
euclidean |
Distance euclide | [0, +∞] |
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 vecteurs fournis ne sont pas du type de données vectorielles.
Examples
Vous trouverez les détails de la base de données utilisée dans l’exemple sur GitHub : télécharger et importer l’article Wikipédia avec des incorporations vectorielles.
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 text-embedding-ada-002 ou text-embedding-3-small, qui retourne des vecteurs avec 1 536 dimensions.
Pour obtenir d’autres exemples, notamment des solutions de bout en bout, accédez au dépôt GitHub d’exemples de recherche vectorielle Azure SQL Database.
A. Créer un vecteur à partir d’un tableau JSON
L’exemple suivant crée un vecteur avec trois dimensions à partir d’une chaîne avec un tableau JSON.
DECLARE @v1 AS VECTOR(2) = '[1,1]';
DECLARE @v2 AS 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;
B. Retourner les 10 articles similaires en fonction des titres
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.
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;
Chapitre C. Retourner des articles similaires basés sur une distance de vecteur spécifique
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 les titres avec une distance 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;