Faites glisser le point de requête et changez d’unité de mesure pour observer comment les voisins les plus proches évoluent.
Mesure la distance en ligne droite entre deux points. Les cercles concentriques indiquent des zones équidistantes : tous les points situés sur un même cercle sont à égale « distance » de la requête.
Une métrique est simplement une fonction qui prend deux vecteurs et renvoie un seul nombre indiquant à quel point ils sont similaires (ou différents). La recherche vectorielle consiste, fondamentalement, à « trouver les K vecteurs présentant le meilleur score métrique par rapport à ma requête ». Tout le reste — index, clusters, graphes — n’est qu’une question d’organisation visant à éviter de calculer ce score pour chaque vecteur de la base de données.
La métrique que vous choisissez définit ce que signifie « similaire » pour vos données. Deux représentations peuvent être « proches » selon une métrique et « éloignées » selon une autre — mêmes données, réponse différente. C’est pourquoi ce choix s’effectue avant même que vous ne créiez un index.
Essayez ceci : faites glisser le point de requête près de l’origine et basculez entre « Cosine » et « L2 ». Observez comment « Cosine » ne s’intéresse qu’à la « direction » vers laquelle pointe la requête — des points situés de l’autre côté de l’origine peuvent être « proches » avec « L2 », mais « éloignés » avec « Cosine ». Cette illustration résume tout le concept.
Dans « Milvus », la métrique est définie par index via « metric_type » — L2, IP, ou COSINE pour les vecteurs denses — lors de la création de l’index. Chaque recherche effectuée sur cette collection utilise alors la même fonction que celle que vous venez d’utiliser ci-dessus. La règle la plus fiable : utilisez la métrique avec laquelle votre modèle d’embedding a été entraîné, celle-ci étant indiquée sur pratiquement toutes les fiches de modèle.
Deux raccourcis utiles. La plupart des API modernes d’intégration de texte (OpenAI, Cohere, Voyage et la plupart des transformateurs de phrases) produisent des vecteurs destinés à la similarité cosinus. Et si vos vecteurs sont normalisés à une longueur unitaire, le cosinus et le produit scalaire renvoient des classements identiques — ainsi, IP sur des vecteurs normalisés est une alternative courante et légèrement moins coûteuse à COSINE.
Utilisez la similarité cosinus (metric_type COSINE dans Milvus). Presque tous les modèles modernes d’embedding de texte — y compris la famille text-embedding-3 de OpenAI — sont entraînés pour la similarité cosinus. Comme les embeddings OpenAI sont normalisés à une longueur unitaire, le produit scalaire (IP) donne des classements identiques et constitue une excellente alternative.
La similarité cosinus ne mesure que l’angle entre deux vecteurs, sans tenir compte de leurs longueurs. Le produit scalaire (produit point) prend en compte à la fois l’alignement et la magnitude ; ainsi, un vecteur plus long pointant dans la même direction obtient un score plus élevé. Sur des vecteurs normalisés à l’unité, les deux sont mathématiquement équivalents.
Non. La métrique est intégrée à l’index lors de sa création. Pour changer de métrique, il faut supprimer l’index et le recréer avec un nouveau `metric_type`. Les scores issus de métriques différentes ne sont pas comparables entre eux ; il ne faut donc pas les mélanger lors du post-traitement des résultats.
La vitesse est pratiquement identique : « L2 », « IP » et « cosine » nécessitent tous un seul passage sur le vecteur. C’est le rappel qui fait la différence : effectuer une recherche avec une métrique différente de celle pour laquelle votre modèle d’embedding a été entraîné dégrade silencieusement la qualité des résultats, souvent de manière spectaculaire.
Pour aller plus loin : consultez la documentation sur les mesures de similarité pour obtenir la liste complète des mesures prises en charge par « Milvus », notamment les mesures de Hamming et de Jaccard pour les vecteurs binaires et BM25 pour la recherche en texte intégral.
Comparaison côte à côte entre la recherche par force brute et la recherche par grappes. Ajustez l’ nprobe s en temps réel.
Suivez étape par étape la recherche sur un graphe multicouche — des sauts d’autoroute aux parcours locaux.
Découvrez comment PQ-in-RAM +full-vectors-on-SSD vous permet d’effectuer des recherches dans des ensembles de données de l’ordre du milliard d’enregistrements sur un ordinateur portable.