Partager via


VectorDistance (requête NoSQL)

S’APPLIQUE À : NoSQL

Retourne le score de similarité entre deux vecteurs spécifiés.

Syntaxe

VectorDistance(<vector_expr1>, <vector_expr2>, [<bool_expr>], [<obj_expr>])  

Arguments

Description
spatial_expr_1 Un tableau de float32 ou plus petit.
spatial_expr_2 Un tableau de float32 ou plus petit.
bool_expr Un booléen spécifiant comment la valeur calculée est utilisée dans une expression ORDER BY. Si true, la force brute est utilisée. Une valeur d’utilisation d’un false index défini sur la propriété vectorielle, s’il existe. La valeur par défaut est false.
obj_expr Un objet littéral au format JSON utilisé pour spécifier des options pour le calcul de la distance vectorielle. Les éléments valides incluent distanceFunction et dataType.
distanceFunction Métrique utilisée pour calculer la distance/la similarité.
dataType Le type de données des vecteurs. float32uint8, int8valeurs. La valeur par défaut est float32.

Les métriques distanceFunction prises en charge sont les suivantes :

  • cosine, qui a des valeurs de -1 (moins similaires) à +1 (les plus similaires).
  • dotproduct, qui a des valeurs de -∞ () (-infmoins similaires) à +∞ () (+infle plus similaire).
  • euclidean, qui a des valeurs comprises entre 0 (le plus similaire) et +∞ (+infmoins similaire).

Types de retour

Renvoie une expression numérique qui énumère le score de similarité entre deux expressions.

Exemples

Ce premier exemple montre une requête de recherche vectorielle supérieure de 10 avec uniquement les arguments requis. Une propriété est projetée, ainsi que le score retourné par VectorDistance. Ensuite, nous allons utiliser une ORDER BY clause pour trier VectorDistance les scores dans l’ordre le plus similaire au moins.

SELECT TOP 10 s.name, VectorDistance(c.vector1, <query_vector>)
FROM c
ORDER BY VectorDistance(c.vector1, <query_vector>)

Cet exemple suivant inclut également des arguments facultatifs pour VectorDistance

SELECT TOP 10 s.name, VectorDistance(c.vector1, <query_vector>, true, {'distanceFunction':'cosine', 'dataType':'float32',})
FROM c
ORDER BY VectorDistance(c.vector1, <query_vector>, true, {'distanceFunction':'cosine', 'dataType':'float32',})

Notes

  • Cette fonction nécessite l’inscription dans la fonctionnalité en préversion Recherche vectorielle NoSQL Azure Cosmos DB.
  • Cette fonction bénéficie d’un index de vecteur
  • si false est donné comme bool_exprfacultatif, l’index vectoriel défini sur le chemin d’accès est utilisé, s’il en existe un. Si aucun index n’est défini sur le chemin de vecteur, cette fonction revient à l’analyse complète et entraîne des frais de RU plus élevés et une latence plus élevée que si vous utilisez un index vectoriel.
  • Lorsqu’il VectorDistance est utilisé dans une ORDER BY clause, aucune direction ne doit être spécifiée pour la mesure où les résultats sont toujours triés dans l’ordre ORDER BY de la plupart des mêmes (premiers) à moins similaires (dernier) en fonction de la métrique de similarité utilisée.
  • Le résultat est exprimé sous la forme d’un score de similarité.