Exploiter les modèles d’embedding pour une recherche alimentée par l’IA
À mesure que l’IA continue d’évoluer, la manière dont nous recherchons et récupérons l’information s’est transformée, en particulier lorsqu’il s’agit de traiter d’immenses volumes de données non structurées. Les méthodes de recherche traditionnelles fondées sur les mots-clés peinent à gérer la complexité des jeux de données modernes, surtout lorsqu’il s’agit de comprendre le sens et le contexte. C’est là que les modèles d’embedding et les embeddings vectoriels entrent en jeu, permettant aux systèmes de saisir les relations entre les mots, les images et d’autres types de données.
Lors d’un récent Unstructured Data Meetup, Aamir Shakir, le cofondateur de Mixedbread, a partagé des éclairages sur la manière de créer et d’entraîner des modèles d’embedding afin de construire des systèmes d’IA hautes performances, en particulier la génération augmentée par récupération (RAG) à grande échelle. Dans ce blog, nous récapitulerons les points clés de son intervention et explorerons le rôle des modèles d’embedding dans l’alimentation de systèmes de recherche avancés. Nous aborderons également les techniques d’entraînement, de mise à l’échelle et de stockage efficace des embeddings, notamment l’utilisation de méthodes de compression et de bases de données vectorielles comme Milvus et Zilliz Cloud (le Milvus managé).
Aamir Shakir s’exprimant lors du SF Unstructured Data Meetup d’août
Si vous souhaitez en savoir plus sur ce sujet, nous vous recommandons de regarder l’intervention d’Aamir sur YouTube.
Que sont les modèles d’embedding et pourquoi sont-ils importants pour les données non structurées ?
Dans un monde piloté par les données, les organisations sont submergées par d’immenses volumes de données non structurées : journaux, documents internes, audio, vidéos, et plus encore. Extraire des informations significatives à partir de données aussi diverses peut représenter un défi considérable. C’est là que les modèles d’embedding et les embeddings vectoriels entrent en jeu.
Les modèles d’embedding sont un type de modèle d’apprentissage automatique conçu pour transformer des données non structurées en représentations numériques et les projeter dans un espace à haute dimension. Ces représentations sont appelées embeddings vectoriels. Elles capturent les relations et les significations au sein des données, permettant aux ordinateurs de les comprendre, de les traiter et de les analyser plus efficacement. Plus ces vecteurs sont proches dans l’espace vectoriel, plus ils sont sémantiquement similaires.
Les modèles d’embedding sont des outils fondamentaux dans un large éventail de tâches, du traitement automatique du langage naturel (NLP) à la vision par ordinateur, et au-delà.
Compréhension sémantique
Les modèles d’embedding encodent le sens des mots, des phrases ou des documents dans des vecteurs, en capturant leurs relations sémantiques. En représentant les données de cette manière, ces modèles permettent aux machines de comprendre le contexte et le sens, rendant possibles des tâches plus sophistiquées comme la réponse aux questions, la traduction et le résumé.
Capacités multilingues et multimodales
Les modèles d’embedding avancés peuvent gérer plusieurs langues et types de données (modalités), comme le texte, les images et l’audio. Cette capacité permet la comparaison et la récupération d’informations dans différentes langues ou différents formats de données. Par exemple, un modèle unique pourrait récupérer du contenu similaire à travers du texte et des images, ou traduire et aligner du texte dans plusieurs langues, le tout au sein du même espace vectoriel.
Transférabilité
Les modèles d’embedding pré-entraînés peuvent souvent être adaptés (grâce à des techniques comme le fine-tuning) à différentes tâches en aval. Au lieu d’entraîner un modèle à partir de zéro, vous pouvez exploiter un modèle pré-entraîné et le modifier pour des tâches spécifiques, ce qui permet d’économiser du temps et des ressources de calcul. Cette transférabilité rend les modèles d’embedding très efficaces pour créer des applications d’IA, qu’il s’agisse de classification, de systèmes de recommandation ou d’autres cas d’utilisation.
Problèmes des approches de recherche classiques
Avant l’essor des embeddings, des méthodes de recherche traditionnelles telles que la fréquence de terme-fréquence inverse de document (TF-IDF) ou la correspondance basée sur les mots-clés étaient utilisées pour la recherche d’information. Cependant, ces approches fonctionnent bien pour des cas d’utilisation simples, mais ne parviennent pas à saisir les relations sémantiques entre les mots. Elles présentent également des limites importantes lorsqu’il s’agit de répondre aux besoins d’information plus complexes d’aujourd’hui. Il existe plusieurs limites :
Difficulté avec l’ambiguïté
L’un des principaux défis des méthodes traditionnelles est leur difficulté à gérer l’ambiguïté.
Les mots ayant plusieurs significations (polysémie) et les mots différents ayant la même signification (synonymie) mettent les méthodes traditionnelles en difficulté et conduisent à des résultats inexacts. Prenons le mot « bank ». Une recherche sur « bank » pourrait renvoyer des résultats concernant des institutions financières alors qu’en réalité, l’utilisateur cherchait des informations sur les berges de rivière.
Les embeddings résolvent ce problème en tenant compte du contexte dans lequel un mot apparaît. Le mot « bank » dans le domaine financier aura une représentation vectorielle différente de « bank » dans le contexte de la nature. Cela aide les systèmes de recherche à renvoyer des résultats qui ne sont pas seulement pertinents, mais aussi contextuellement exacts.
Représentations fixes
Une autre limite des méthodes traditionnelles est leur utilisation de représentations fixes pour les mots ou les documents. Ces représentations ne s’adaptent pas à différents contextes au fil du temps, ce qui peut limiter leur utilisation dans la recherche d’information dynamique.
Scalabilité limitée
Les méthodes traditionnelles peinent à maintenir leurs performances et leur efficacité à mesure que les données deviennent plus volumineuses et plus complexes, en particulier lorsqu’il s’agit de tâches de recherche d’information à l’échelle du Web. En revanche, les systèmes de recherche sémantique reposant sur des embeddings vectoriels sont conçus pour évoluer. Une fois les données converties en vecteurs et stockées dans une base de données vectorielle comme Milvus, même des données vectorielles à l’échelle du milliard peuvent être traitées efficacement et utilisées pour une récupération rapide et précise. Cela rend les embeddings importants pour des systèmes comme les systèmes de recommandation et le RAG.
Ces limites montrent la nécessité des embeddings pour construire des systèmes de recherche modernes capables de comprendre et de récupérer du contenu pertinent en s’appuyant sur le sens plutôt que sur les mots-clés.
Modèles d’embedding et leurs problèmes de généralisation
Les modèles d’embedding sont devenus une pierre angulaire des applications d’IA, du RAG aux systèmes de recommandation et au-delà. Bien que ces modèles soient très efficaces pour encoder les données et faciliter des tâches comme la recherche et la classification, ils ne sont pas sans limites — en particulier en ce qui concerne la généralisation.
Gestion des termes hors vocabulaire (OOV) : De nombreux modèles d’embedding ont un vocabulaire fixe, ce qui pose problème lorsqu’ils rencontrent de nouveaux mots qui ne faisaient pas partie des données d’entraînement.
Performance sur la longue traîne : Bien que les modèles d’embedding obtiennent généralement de bons résultats avec les mots et concepts courants, ils peuvent éprouver des difficultés avec des termes très spécifiques.
Spécificité du domaine : Les modèles d’embedding entraînés sur des données issues d’un domaine peuvent donner de mauvais résultats lorsqu’ils sont appliqués à un autre domaine. Cette limite s’explique par le fait que les embeddings contiennent les motifs statistiques des données d’entraînement, qui peuvent ne pas être efficaces pour de nouveaux types de données. Les modèles d’embedding nécessitent donc généralement un fine-tuning sur des données spécifiques au domaine pour atteindre les meilleures performances.
Biais dans les embeddings : Les modèles d’embedding sont également sensibles aux biais. Ils sont entraînés sur de grands jeux de données, parfois non curés. Ils peuvent donc absorber par erreur les biais sociétaux présents dans les données.
Variations contextuelles : Les modèles d’embedding statiques attribuent le même vecteur à un mot quel que soit le contexte. Cela peut poser problème pour les mots qui peuvent avoir plusieurs significations.
Comment construire et entraîner un modèle d’embedding à l’état de l’art
Construire un modèle d’embedding de haute qualité, en particulier pour des systèmes complexes comme RAG, nécessite une approche réfléchie afin de garantir l’évolutivité, la précision et l’efficacité. Les modèles d’embedding sont généralement construits à l’aide de réseaux neuronaux, et la qualité des embeddings qu’ils génèrent dépend fortement du processus d’entraînement. Pour atteindre des performances à l’état de l’art (SOTA), plusieurs étapes clés doivent être suivies :
Préentraînement sur de grands jeux de données diversifiés
Une première étape essentielle dans la construction d’un modèle d’embedding robuste consiste en un préentraînement sur de grands jeux de données diversifiés. Ce préentraînement expose le modèle à un large éventail de motifs, de structures et de contextes linguistiques, lui permettant d’apprendre des caractéristiques généralisables pouvant être appliquées à diverses tâches en aval. L’idée est de donner au modèle une compréhension large des données, lui permettant d’obtenir de bons résultats non seulement sur des entrées familières, mais aussi sur de nouvelles données inédites.
Il existe différents types d’embeddings, notamment :
Les embeddings de mots sont des vecteurs denses de faible dimension qui projettent les mots dans un espace vectoriel continu. Ils sont utiles pour capturer les relations sémantiques et syntaxiques.
Les embeddings conceptuels sont des représentations vectorielles de concepts dans un espace sémantique qui capturent leurs relations et attributs, lesquels proviennent fréquemment de graphes de connaissances.
Les embeddings contextuels sont des représentations dynamiques de mots générées par des modèles tels que BERT et GPT. Ils prennent en compte le contexte environnant de chaque mot dans une phrase afin de produire des embeddings sensibles au contexte.
L’illustration suivante vous aidera à comprendre le processus d’entraînement des modèles d’embedding :
Phase d’entraînement du modèle d’embedding
La tokenisation décompose les données d’entrée en unités plus petites (tokens), telles que des mots ou des sous-mots, créant ainsi un vocabulaire pour le modèle. Le vocabulaire est un ensemble de tokens uniques que le modèle utilisera pour comprendre et représenter les données pendant l’entraînement.
L’initialisation des embeddings initialise une matrice dans laquelle un vecteur d’embedding représente chaque token du jeu de données. Cette matrice résume les relations et les significations entre les tokens, avec des vecteurs allant généralement de 50 à 1 000 dimensions.
L’entraînement ajuste les paramètres du modèle afin de minimiser la distance entre les mots sémantiquement similaires et de maximiser la distance entre les mots dissemblables.
Fine-tuning pour l’optimisation spécifique à une tâche
Après le pré-entraînement, le fine-tuning est important pour optimiser le modèle pour des tâches spécifiques. Par exemple, si le système RAG est utilisé dans un contexte juridique, nous affinons le modèle d’embedding sur des documents juridiques. Ce faisant, les embeddings conservent le vocabulaire propre au domaine, ce qui améliore les performances du système RAG. À cette étape, nous affinons également le modèle afin de gérer des données structurées et des données non structurées adaptées aux tâches de recherche multimodales et multilingues.
Stocker les embeddings vectoriels à grande échelle
À mesure que les modèles d’embedding deviennent plus avancés, les vecteurs qu’ils produisent peuvent devenir de plus en plus complexes. Bien que la complexité du modèle ne signifie pas toujours des vecteurs de plus grande dimension, les modèles plus grands génèrent souvent des embeddings avec des représentations plus détaillées, conduisant parfois à des milliers de dimensions. Cela pose des défis à la fois en matière de stockage et de récupération, en particulier lorsqu’il s’agit de grands ensembles de données ou d’applications en temps réel.
Pour relever ces défis, des méthodes efficaces de stockage et de récupération sont essentielles. Des techniques comme les bases de données vectorielles, la recherche approximative des plus proches voisins (ANN) et les structures d’indexation optimisées sont couramment utilisées pour garantir que les embeddings puissent être récupérés rapidement sans sacrifier les performances. En outre, les techniques de compression sont également essentielles pour réduire la taille de ces vecteurs de grande dimension sans perdre leur signification sémantique.
Bases de données vectorielles
Les bases de données vectorielles telles que Milvus et Zilliz Cloud (la version managée de Milvus), sont spécialement conçues pour gérer et récupérer efficacement des données non structurées sous la forme d’embeddings vectoriels. Milvus est une base de données vectorielle open source optimisée pour le stockage et la recherche de vecteurs à très grande échelle. Elle utilise des recherches de plus proches voisins approximatifs (ANN) pour récupérer rapidement les embeddings pertinents, même lorsqu’elle fonctionne avec des bases de données contenant des milliards de vecteurs. Zilliz Cloud offre les capacités les plus avancées dans un service managé, réduisant la charge opérationnelle liée à la gestion des bases de données vectorielles à grande échelle.
Techniques de compression
Bien que les embeddings puissent être stockés directement dans des bases de données vectorielles, les stocker à grande échelle peut être coûteux. C’est là que les techniques de compression s’avèrent utiles. L’idée principale de la compression est de réduire les besoins en mémoire et d’améliorer la vitesse des requêtes. Un type est la quantification binaire, et l’autre est la quantification scalaire.
La quantification binaire réduit chaque caractéristique d’un embedding donné à un chiffre binaire, tandis que la quantification scalaire réduit la taille globale des dimensions à un type de données plus petit, comme un flottant de 2 octets ou un entier de 1 octet.
Par exemple, si une image est représentée par trois caractéristiques distinctes, où chaque caractéristique contient une valeur dans la plage d’une unité de stockage FLOAT-32, effectuer une quantification binaire sur ce vecteur aurait pour résultat que chacune des trois caractéristiques soit représentée indépendamment par un seul chiffre binaire. Ainsi, le vecteur contenant trois valeurs FLOAT-32 serait transformé en un vecteur de trois chiffres binaires, tel que [1, 0, 1].
Compréhension de la quantification binaire
La quantification binaire est très efficace pour effectuer des recherches vectorielles sur de grands ensembles de données grâce à ses calculs efficaces et moins complexes. Dans le cas de Milvus et des vecteurs binaires, Milvus utilise la distance de Hamming comme métrique de similarité. Cette métrique peut calculer rapidement la distance entre deux vecteurs binaires stockés. Voici un exemple du fonctionnement de la méthode de distance de Hamming.
Fonctionnement de la méthode de distance de Hamming
Nous allons maintenant utiliser la technique de quantification scalaire pour convertir les embeddings float32 au format int8. Cette approche mappe la plage continue des valeurs float32 vers un ensemble discret de 256 valeurs int8 distinctes, allant de -127 à 127.
Pour effectuer une quantification scalaire :
Calculer la plage : Déterminez les valeurs minimale et maximale pour chaque dimension d’embedding.
Déterminer le pas de quantification : Calculez la taille de pas nécessaire pour répartir uniformément les valeurs float32 sur la plage int8.
Quantifier : Arrondissez chaque valeur float32 à la valeur int8 la plus proche en utilisant la taille de pas calculée.
Valeurs de -1.0 à 1.0 en valeurs int8 discrètes
Avec la quantification scalaire en int8, nous réduisons la précision des embeddings float32 d’origine afin que chaque valeur soit représentée par un entier 8 bits (4x plus petit), ce qui diminue la quantité de mémoire nécessaire pour les stocker, tout en essayant de préserver autant d’informations que possible.
L’économie de la compression
Résumé
Les modèles d’embedding — qui fournissent une approche flexible, évolutive et sémantiquement riche de la recherche d’informations — contribuent à définir l’orientation de la recherche par similarité. Qu’il s’agisse d’améliorer le clustering et l’exploration de textes bilingues, ou de permettre la recherche multimodale et multilingue, les embeddings offrent de nombreuses possibilités que les méthodes traditionnelles ne peuvent pas atteindre.
La création de modèles d’embedding de pointe pour des systèmes RAG de haute qualité nécessite une attention particulière au pré-entraînement, au fine-tuning et à la scalabilité. Zilliz Cloud et Milvus aident à gérer les embeddings à grande échelle et à créer des systèmes de recherche neuronale plus intelligents et plus réactifs.
Ressources supplémentaires
Continuer à lire

VDBBench Adds Cost-Aware Benchmarking for Vector Databases
Compare Zilliz Cloud, Pinecone, and turbopuffer with VDBBench cost-aware vector database benchmarks across latency, freshness, multitenancy, and cold starts.

Build for the Boom: Why AI Agent Startups Should Build Scalable Infrastructure Early
Explore strategies for developing AI agents that can handle rapid growth. Don't let inadequate systems undermine your success during critical breakthrough moments.

Zilliz Cloud BYOC Upgrades: Bring Enterprise-Grade Security, Networking Isolation, and More
Discover how Zilliz Cloud BYOC brings enterprise-grade security, networking isolation, and infrastructure automation to vector database deployments in AWS



