La recherche vectorielle permet de découvrir des éléments ou des points de données similaires, généralement représentés sous forme de vecteurs, dans les grandes collections. Les vecteurs, ou embeddings, sont des représentations numériques de mots, d’entités, de documents, d’images ou de vidéos. Les vecteurs identifient les relations sémantiques entre les éléments, permettant un traitement efficace par les modèles de machine learning et les applications d’intelligence artificielle.
Contrairement à la recherche traditionnelle, qui s’appuie généralement sur des mots-clés, la recherche vectorielle s’appuie sur des techniques de recherche de similarité vectorielle telles que la recherche des k plus proches voisins (k-NN) pour récupérer des points de données similaires à un vecteur de requête en se basant sur une mesure de distance. Les vecteurs capturent les relations sémantiques et les similarités entre les points de données, pour une recherche sémantique plutôt qu’une simple recherche par mot-clé.
Pour illustrer la différence entre la recherche par mot clé traditionnelle et la recherche vectorielle, prenons un exemple. Supposons que vous recherchiez des informations sur la meilleure pizzeria et que vous recherchiez « meilleure pizzeria » dans un moteur de recherche traditionnel. La recherche par mots clés recherche les pages qui contiennent les mots exacts « meilleure », « pizzeria »et ne renvoie que des résultats tels que « Meilleure pizzeria » ou « Pizzeria près de moi ». La recherche par mots clés traditionnelle consiste à faire correspondre les mots clés plutôt que de comprendre le contexte ou l'intention derrière la recherche.
A contrario, avec la recherche vectorielle sémantique, le moteur de recherche comprend l'intention derrière la requête. Conformément à la définition du mot « sémantique », à savoir qui « concerne le sens des éléments de la langue », la recherche sémantique comprend le sens et le contexte des requêtes. Le moteur recherchera donc les contenus qui parlent des pizzérias les mieux notées ou les plus recommandées, même si les mots exacts « meilleure pizzéria » n’y sont pas employés. Les résultats sont plus pertinents d’un point de vue contextuel et peuvent inclure des articles ou des guides qui présentent les pizzerias de qualité dans différents endroits.
Les méthodes de recherche traditionnelles représentent généralement les données à l’aide de jetons ou caractéristiques discrets, comme les mots-clés, les étiquettes ou les métadonnées. Comme le montre l’exemple ci-dessus, ces méthodes s’appuient sur les correspondances exactes pour récupérer des résultats pertinents. La recherche vectorielle, quant à elle, représente les données sous forme de vecteurs denses (dont la plupart des éléments, voire tous sont non nuls) dans un espace vectoriel continu, l’espace mathématique dans lequel les données sont représentées sous forme de vecteurs. Chaque dimension du vecteur dense correspond à une caractéristique latente des données, à savoir une caractéristique sous-jacente qui n’est pas directement observée, mais déduite des données grâce à des modèles mathématiques ou des algorithmes. Ces caractéristiques latentes identifient les schémas cachés et les relations entre les données, ce qui permet des représentations plus significatives et plus précises des éléments sous forme de vecteurs dans un espace à haute dimension.
L’évolutivité des méthodes de recherche traditionnelles peut être compromise avec de grands jeux de données ou des données de grande dimension en raison des contraintes qui pèsent sur elles en matière de calcul et de mémoire. En revanche, les plongements vectoriels sont plus faciles à dimensionner pour s’adapter à des ensembles de données plus volumineux et à des modèles plus complexes. Contrairement aux représentations éparses de données où la plupart des valeurs sont des zéros dans toutes les dimensions, les plongements sont des représentations vectorielles denses ayant des valeurs non nulles dans la plupart des dimensions. Cela permet aux plongements vectoriels de stocker plus d’informations dans un espace plus petit de moindre dimension, nécessitant moins de mémoire.1 Par conséquent, les algorithmes et modèles de machine learning peuvent utiliser les plongements plus efficacement avec moins de ressources de calcul.
Pour cette explication, nous nous concentrerons sur les représentations vectorielles applicables au traitement automatique du langage naturel (NLP), c'est-à-dire les vecteurs qui représentent des mots, des entités ou des documents.
Nous allons illustrer le processus de vectorisation sur un petit corpus de phrases : « le chat s’est assis sur le tapis », « le chien jouait dans le parc » et « les oiseaux chantaient dans les arbres ».
La première étape de la construction de plongements vectoriels consiste à nettoyer et à traiter l'ensemble de données brutes. Cela peut impliquer l'élimination du bruit et la normalisation du texte. Pour notre exemple, nous ne ferons aucun nettoyage puisque le texte est déjà nettoyé et normalisé.
Ensuite, un modèle de plongement est choisi pour être entraîné sur le jeu de données. Le modèle de plongement entraîné est utilisé pour générer des plongements pour chaque point de données dans le jeu de données. Pour les données texte, les modèles de plongement open source populaires incluent Word2Vec, GloVe, FastText ou des modèles préentraînés basés sur des transformeurs comme BERT ou RoBERTa2.
Pour notre exemple, nous utiliserons Word2Vec pour générer nos intégrations.
Ensuite, les plongements sont stockés dans une base de données vectorielle, ou un plugin de recherche vectorielle pour moteur de recherche, comme Elasticsearch, est utilisé. Dans la recherche vectorielle, la pertinence d’un résultat de recherche est établie en évaluant la similitude entre le vecteur de requête, qui est généré en vectorisant la requête, et le vecteur de document, qui est une représentation des données interrogées. Des index doivent être créés dans la base de données vectorielle pour permettre une récupération rapide et efficace des plongements basés sur des requêtes similaires. Des techniques telles que l’algorithme HNSW (Hierarchical Navigable Small World) peuvent être utilisées pour indexer les plongements et faciliter la recherche de similarités au moment de la requête. Le HNSW organise le jeu de données et permet de rechercher rapidement les voisins les plus proches en regroupant des vecteurs similaires pendant le processus de construction de l’index.
Enfin, un mécanisme ou une procédure pour générer des vecteurs pour de nouvelles requêtes doit être mis en place. Cela implique généralement la création d’une API ou d’un service qui accepte les requêtes de recherche des utilisateurs en entrée en temps réel, les traite à l’aide du même modèle vectoriel et génère une représentation vectorielle correspondante. Ce vecteur peut ensuite être utilisé pour effectuer une recherche dans la base de données afin d’obtenir les résultats les plus pertinents.
La distance euclidienne est une mesure de la distance en ligne droite entre deux points. Elle est calculée comme la racine carrée de la somme des carrés des différences entre les coordonnées correspondantes des deux points.
On peut appliquer cette formule à des espaces à plus haute dimension en ajoutant des termes qui prennent en compte les dimensions supplémentaires.
La similarité cosinus permet de déterminer la similarité entre deux vecteurs dans un espace multidimensionnel. Elle calcule le cosinus de l’angle formé par les deux vecteurs pour indiquer la distancé entre eux.
Mathématiquement, la similarité en cosinus, cos(θ), entre deux vecteurs est calculée comme le produit en points des deux vecteurs divisé par le produit de leurs magnitudes.
La similarité cosinus est comprise entre -1 et 1 comme suit :
La similarité cosinus est particulièrement utile dans le cas des vecteurs, car elle se concentre sur la relation directionnelle entre les vecteurs plutôt que sur leurs magnitudes.
Bien que les indicateurs de distance mentionnés précédemment puissent être utilisés pour mesurer la similarité vectorielle, il s’avère inefficace et lent de comparer tous les vecteurs possibles au vecteur de requête au moment de la requête pour la recherche de similarité. Pour résoudre ce problème, nous pouvons utiliser une recherche approximative du plus proche voisin (ANN).
Au lieu de rechercher une correspondance exacte, les algorithmes ANN identifient les vecteurs qui sont approximativement les plus proches d’une requête donnée en fonction d’une mesure comme la distance euclidienne ou la similarité cosinus. En autorisant un certain niveau d’approximation, ces algorithmes peuvent réduire de manière significative les coûts de calcul liés la recherche des plus proches voisins, sans avoir à calculer les similitudes d’intégration sur l’ensemble du corpus.
L’un des algorithmes ANN les plus utilisés est le graphe HNSW. Ce dernier indexe le jeu de données et accélère la recherche rapide des plus proches voisins en regroupant les vecteurs similaires au fur et à mesure qu’il crée l’index. Le graphe HNSW organise les données en voisinages et les relie à des connexions probables. Lors de l’indexation d’un vecteur dense, il identifie le voisinage approprié, ainsi que ses connexions potentielles, et les stocke dans une structure de graphe. Au cours d’une recherche HNSW avec une requête vectorielle dense, il localise le point d’entrée de voisinage optimal et renvoie les voisins les plus proches.
La recherche vectorielle a de nombreux cas d’utilisation dans divers domaines, en raison de sa capacité à récupérer efficacement les éléments similaires en fonction de leurs représentations vectorielles. Voici quelques applications courantes de la recherche vectorielle :
La recherche vectorielle est utilisée par les moteurs de recherche pour récupérer des documents, des articles, des pages web ou d’autres types de contenu textuel en fonction de leur similarité avec une requête. Elle permet aux utilisateurs de trouver des informations pertinentes même si les termes exacts de la requête ne figurent pas dans les documents.
La recherche vectorielle joue un rôle essentiel dans le cadre de la génération augmentée de récupération (RAG), qui permet de récupérer un contexte pertinent à partir d’un large corpus de texte. La RAG est un cadre d’IA générative qui associe recherche vectorielle et modèles de langage génératifs pour générer des réponses.
Dans les tâches traditionnelles de génération de langage, les grands modèles de langage (LLM) comme GPT (Generative Pre-trained Transformer) d’OpenAI ou les modèles Granite d’IBM permettent de créer des réponses s’appuyant sur le prompt d’entrée. Cependant, ces modèles peuvent avoir du mal à produire des réponses contextuellement pertinentes, factuelles ou à jour. La RAG remédie à cette limitation en intégrant une étape de récupération avant la génération des réponses. Lors de la récupération, la recherche vectorielle permet d’identifier des informations contextuellement pertinentes, comme les passages ou les documents pertinents d’un grand corpus de texte, généralement stockées dans une base de données vectorielle. Ensuite, un LLM est utilisé pour générer une réponse basée sur le contexte récupéré.
Outre la génération de langage, la RAG et la recherche vectorielle ont d’autres applications dans diverses tâches de TAL, comme les réponses aux questions, les chatbots, la synthèse et la génération de contenu.
La recherche vectorielle peut être intégrée dans des approches de recherche hybrides afin d’améliorer l’efficacité et la flexibilité du processus. La recherche hybride associe recherche vectorielle et techniques comme la recherche par mots-clés et la recherche par métadonnées. La recherche vectorielle permet de récupérer les éléments en fonction de leur similarité avec une requête, tandis que les autres méthodes s’appuient sur les correspondances exactes ou sur les critères spécifiés pour récupérer les éléments.
Les magasins de vecteurs sont utilisés par les moteurs de recherche d’images et de vidéos pour indexer et récupérer les contenus visuels en fonction de leur similarité. Les intégrations d’images et de vidéos sont stockées sous forme de vecteurs pour permettre aux utilisateurs de trouver des images ou des vidéos visuellement similaires dans de grands jeux de données.
Les moteurs de recommandation intégrés aux services de streaming, aux réseaux sociaux, ou encore aux plateformes d’e-commerce et de communication visuelle, peuvent être alimentés par la recherche vectorielle. La recherche vectorielle permet de recommander des produits, des films, de la musique ou d’autres éléments similaires à ceux avec lesquels les utilisateurs ont interagi ou qu’ils ont appréciés précédemment.
La recherche vectorielle est utilisée dans les applications de données géospatiales pour récupérer des données comme les points d’intérêt, les caractéristiques géographiques ou les trajectoires spatiales, en fonction de leur proximité ou de leur similitude avec un lieu ou un schéma de requête. Cela permet une recherche et une analyse spatiales efficaces dans les systèmes d’information géographique et les services géolocalisés.
Nous avons interrogé 2 000 entreprises à propos de leurs initiatives d’IA pour découvrir ce qui fonctionne, ce qui ne fonctionne pas et comment progresser.
IBM Granite est notre famille de modèles d’IA ouverts, performants et fiables, conçus pour les entreprises et optimisés pour dimensionner vos applications d’IA. Explorez les options de langage, de code, de séries temporelles et de garde-fous.
Accédez à notre catalogue complet de plus de 100 cours en ligne en souscrivant aujourd’hui un abonnement individuel ou multiutilisateur afin d’élargir vos compétences dans certains de nos produits à un prix avantageux.
Dirigé par des leaders d’opinion IBM, le programme a pour but d’aider les chefs d’entreprise à acquérir les connaissances nécessaires qui leur permettront d’orienter leurs investissements IA vers les opportunités les plus prometteuses.
1 Bahaaldine Azarmi et Jeff Vestal, Vector Search for Practitioners with Elastic, Packt Publishing, 2023
2 Vicki Boykis, « What are embeddings », 2023, https://vickiboykis.com/what_are_embeddings
3 Trey Grainger, Doug Turnbull et Max Irwin, AI Powered Search, Manning Publications, 2024