Partager via


VECTOR_DISTANCE (Transact-SQL)

S’applique à : Base de données SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed InstanceSQL 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 identiques
2: 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;