VectorDistance (requête NoSQL)
S’APPLIQUE À : NoSQL
Retourne le score de similarité entre deux vecteurs spécifiés.
Syntaxe
VectorDistance(<vector_expr_1>, <vector_expr_2>, <bool_expr>, <obj_expr>)
Arguments
Paramètre | Description |
---|---|
vector_expr_1 |
Un tableau de float32 ou plus petit. |
vector_expr_2 |
Un tableau de float32 ou plus petit. |
bool_expr |
Valeur booléenne facultative spécifiant la façon dont 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 |
Littéral d’objet au format JSON facultatif utilisé pour spécifier des options pour le calcul de distance vectorielle. Les éléments valides incluent distanceFunction et dataType , et searchListSizeMultiplier . |
Paramètres pris en charge pour l’option facultative obj_expr
Paramètre | Description |
---|---|
distanceFunction |
Métrique utilisée pour calculer la distance/la similarité. |
dataType |
Le type de données des vecteurs. float32 uint8 , int8 valeurs. La valeur par défaut est float32 . |
searchListSizeMultiplier |
Entier spécifiant la taille de la liste de recherche lors de la recherche d’une recherche vectorielle. L’augmentation de cette valeur peut améliorer la précision au détriment du coût et de la latence des RU. Min=1, Default=5, Max=100. |
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-∞
() (-inf
moins similaires) à+∞
() (+inf
le plus similaire).euclidean
, qui a des valeurs comprises entre0
(le plus similaire) et+∞
(+inf
moins 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'})
Important
Utilisez toujours une clause TOP N
dans l’instruction SELECT
d’une requête. Sinon, la recherche vectorielle va retourner beaucoup plus de résultats et la requête coûte davantage d’unités de requête (RU) et a une latence supérieure à ce qui est nécessaire.
Notes
- Cette fonction nécessite l’activation de la fonctionnalité Recherche vectorielle NoSQL Azure Cosmos DB.
- Cette fonction bénéficie d’un index de vecteur
- Si
false
elle est donnée comme facultatifbool_expr
, 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 uneORDER BY
clause, aucune direction ne doit être spécifiée pour la mesure où les résultats sont toujours triés dans l’ordreORDER 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é.