Choisir le bon modèle d'intégration de vecteurs pour votre cas d'utilisation de l'IA générative
Dans notre article précédent, nous avons discuté des considérations liées au choix d'une base de données vectorielles pour notre cas d'utilisation de génération augmentée de récupération hypothétique (RAG). Mais lors de la création d’une application RAG, nous devons souvent prendre une autre décision importante : choisir un modèle d’intégration vectorielle, un composant essentiel de nombreuses applications d’IA générative.
Un modèle d'intégration vectorielle est responsable de la transformation de données non structurées (texte, images, audio, vidéo) en un vecteur de nombres qui capture la similarité sémantique entre les objets de données. Les modèles d'intégration sont largement utilisés au-delà des applications RAG, notamment les systèmes de recommandation, les moteurs de recherche, les bases de données et autres systèmes de traitement de données.
Comprendre leur objectif, leurs composants internes, leurs avantages et leurs inconvénients est crucial et c'est ce que nous allons aborder aujourd'hui. Bien que nous discutions uniquement des modèles d'intégration de texte, les modèles pour d'autres types de données non structurées fonctionnent de la même manière.
Qu'est-ce qu'un modèle d'intégration ?
Les modèles d'apprentissage automatique ne fonctionnent pas directement avec du texte, ils nécessitent des chiffres en entrée. Le texte étant omniprésent, au fil du temps, la communauté ML a développé de nombreuses solutions permettant de gérer la conversion du texte en nombres. Il existe de nombreuses approches de complexité variable, mais nous n'en examinerons que quelques-unes.
Un exemple simple est encodage à chaud: traitez les mots d'un texte comme des variables catégorielles et mappez chaque mot à un vecteur de 0 et de 1 unique.
Malheureusement, cette approche d’intégration n’est pas très pratique, car elle conduit à un grand nombre de catégories uniques et aboutit à une dimensionnalité ingérable des vecteurs de sortie dans la plupart des cas pratiques. De plus, le codage à chaud ne rapproche pas les vecteurs similaires les uns des autres dans un espace vectoriel.
Des modèles d'intégration ont été inventés pour résoudre ces problèmes. Tout comme l'encodage à chaud, ils prennent du texte en entrée et renvoient des vecteurs de nombres en sortie, mais ils sont plus complexes car ils sont enseignés avec des tâches supervisées, souvent à l'aide d'un réseau neuronal. Une tâche supervisée peut consister, par exemple, à prédire le score de sentiment des avis sur les produits. Dans ce cas, le modèle d’intégration résultant placerait les avis de sentiments similaires plus proches les uns des autres dans un espace vectoriel. Le choix d’une tâche supervisée est essentiel pour produire des plongements pertinents lors de la construction d’un modèle de plongement.
Sur le diagramme ci-dessus, nous ne pouvons voir que des intégrations de mots, mais nous avons souvent besoin de plus que cela, car le langage humain est plus complexe que de nombreux mots réunis. La sémantique, l’ordre des mots et d’autres paramètres linguistiques doivent tous être pris en compte, ce qui signifie que nous devons passer au niveau supérieur : modèles d'intégration de phrases.
Les intégrations de phrases associent une phrase d'entrée à un vecteur de nombres et, comme prévu, sont beaucoup plus complexes en interne puisqu'elles doivent capturer des relations plus complexes.
Grâce aux progrès de l’apprentissage profond, tous les modèles d’intégration de pointe sont créés avec des réseaux neuronaux profonds, car ils capturent mieux les relations complexes inhérentes à un langage humain.
Un bon modèle d'intégration doit :
- Sois rapide car il ne s'agit souvent que d'une étape de prétraitement dans une application plus vaste
- Renvoie les vecteurs de dimensions gérables
- Renvoie les vecteurs qui capturer suffisamment d'informations sur la similarité être pratique
Examinons maintenant rapidement comment la plupart des modèles d'intégration sont organisés en interne.
Architecture moderne des réseaux de neurones
Comme nous venons de le mentionner, tous les modèles d’intégration de pointe les plus performants sont des réseaux de neurones profonds.
Il s'agit d'un domaine en développement actif et la plupart des modèles les plus performants sont associés à de nouvelles améliorations de l'architecture. Abordons brièvement deux architectures très importantes : BERT et GPT.
BERT (Bidirectionnel Encoder Representations from Transformers) a été publié en 2018 par des chercheurs de Google et décrit l'application de la formation bidirectionnelle du « transformateur », un modèle d'attention populaire, à la modélisation du langage. Les transformateurs standard comprennent deux mécanismes distincts : un encodeur pour lire le texte saisi et un décodeur qui effectue une prédiction.
BERT utilise un encodeur qui lit la phrase entière des mots à la fois, ce qui permet au modèle d'apprendre le contexte d'un mot en fonction de tout son environnement, à gauche et à droite, contrairement aux approches traditionnelles qui examinaient une séquence de texte de gauche à droite ou de droite à gauche. Avant d'introduire des séquences de mots dans BERT, certains mots sont remplacés par des jetons (MASK), puis le modèle tente de prédire la valeur originale des mots masqués, en fonction du contexte fourni par les autres mots non masqués de la séquence.
Le BERT standard ne fonctionne pas très bien dans la plupart des benchmarks et les modèles BERT nécessitent un réglage précis spécifique à la tâche. Mais il est open source, existe depuis 2018 et sa configuration système est relativement modeste (peut être entraîné sur un seul GPU de moyenne gamme). En conséquence, il est devenu très populaire pour de nombreuses tâches liées au texte. C’est rapide, personnalisable et petit. Par exemple, un modèle entièrement Mini-LM très populaire est une version modifiée de BERT.
GPT (Generative Pre-Trained Transformer) d'OpenAI est différent. Contrairement à BERT, il est unidirectionnel, c'est-à-dire que le texte est traité dans un sens et utilise un décodeur issu d'une architecture de transformateur adaptée à la prédiction du mot suivant dans une séquence. Ces modèles sont plus lents et produisent des intégrations dimensionnelles très élevées, mais ils ont généralement beaucoup plus de paramètres, ne nécessitent pas de réglage fin et sont plus applicables à de nombreuses tâches prêtes à l'emploi. GPT n'est pas open source et est disponible sous forme d'API payante.
Durée du contexte et données de formation
Un autre paramètre important d'un modèle d'intégration est la longueur du contexte. La longueur du contexte est le nombre de jetons dont un modèle peut se souvenir lorsqu'il travaille avec un texte. Une fenêtre contextuelle plus longue permet au modèle de comprendre des relations plus complexes au sein d'un corps de texte plus large. En conséquence, les modèles peuvent fournir des résultats de meilleure qualité, par exemple mieux capturer la similarité sémantique.
Pour exploiter un contexte plus long, les données de formation doivent inclure des morceaux de texte cohérents plus longs : livres, articles, etc. Cependant, l’augmentation de la longueur de la fenêtre contextuelle augmente la complexité d’un modèle et augmente les besoins en calcul et en mémoire pour la formation.
Il existe des méthodes qui aident à gérer les besoins en ressources, par exemple l'attention approximative, mais elles le font au détriment de la qualité. C'est un autre compromis qui affecte la qualité et les coûts : des contextes plus longs capturent des relations plus complexes d'un langage humain, mais nécessitent plus de ressources.
De plus, comme toujours, la qualité des données d'entraînement est très importante pour tous les modèles. Les modèles d'intégration ne font pas exception.
Recherche sémantique et récupération d'informations
L’utilisation de modèles d’intégration pour la recherche sémantique est une approche relativement nouvelle. Pendant des décennies, les gens ont utilisé d’autres technologies : modèles booléens, indexation sémantique latente (LSI) et divers modèles probabilistes.
Certaines de ces approches fonctionnent raisonnablement bien pour de nombreux cas d’utilisation existants et sont encore largement utilisées dans l’industrie.
L'un des modèles probabilistes traditionnels les plus populaires est le BM25 (BM signifie « meilleure correspondance »), une fonction de classement par pertinence de recherche. Il est utilisé pour estimer la pertinence d'un document par rapport à une requête de recherche et classe les documents en fonction des termes de requête de chaque document indexé. Ce n'est que récemment que les modèles d'intégration ont commencé à le surpasser systématiquement, mais BM25 est encore beaucoup utilisé car il est plus simple que l'utilisation de modèles d'intégration, il nécessite moins d'ordinateurs et les résultats sont explicables.
Repères
Tous les types de modèles ne disposent pas d'une approche d'évaluation globale qui aide à choisir un modèle existant.
Heureusement, les modèles d'intégration de texte ont des suites de référence communes telles que :
L'article « BEIR : A Heterogeneous Benchmark for Zero-shot Évaluation of Information Retrieval Models » propose un ensemble de référence de benchmarks et d'ensembles de données pour les tâches de recherche d'informations. Le benchmark BEIR original se compose d'un ensemble de 19 ensembles de données et méthodes d'évaluation de la qualité de la recherche. Les méthodes comprennent : la réponse aux questions, la vérification des faits et la récupération d'entités. Désormais, toute personne qui publie un modèle d'intégration de texte pour les tâches de recherche d'informations peut exécuter le test de référence et voir comment son modèle se classe par rapport à la concurrence.
Les benchmarks d'intégration de texte massif incluent BEIR et d'autres composants qui couvrent 58 ensembles de données et 112 langues. Le classement public des résultats du MTEB peut être consulté ici.
Ces benchmarks ont été exécutés sur de nombreux modèles existants et leurs classements sont très utiles pour faire un choix éclairé sur la sélection du modèle.
Utilisation de modèles d'intégration dans un environnement de production
Les scores de référence sur les tâches standards sont très importants, mais ils ne représentent qu’une seule dimension.
Lorsque nous utilisons un modèle d'intégration pour la recherche, nous l'exécutons deux fois :
- Lors de l'indexation hors ligne des données disponibles
- Lors de l'intégration d'une requête utilisateur pour une demande de recherche
Il y a deux conséquences importantes à cela.
La première est que nous devons réindexer toutes les données existantes lorsque nous modifions ou mettons à niveau un modèle d'intégration. Tous les systèmes construits à l'aide de modèles d'intégration doivent être conçus en gardant à l'esprit la possibilité d'évolutivité, car des modèles plus récents et de meilleure qualité sont publiés en permanence et, la plupart du temps, la mise à niveau d'un modèle est le moyen le plus simple d'améliorer les performances globales du système. Un modèle d'intégration est dans ce cas un composant moins stable de l'infrastructure système.
La deuxième conséquence de l’utilisation d’un modèle d’intégration pour les requêtes des utilisateurs est que la latence d’inférence devient très importante lorsque le nombre d’utilisateurs augmente. L'inférence de modèle prend plus de temps pour les modèles les plus performants, surtout s'ils nécessitent un GPU pour fonctionner : avoir une latence supérieure à 100 ms pour une petite requête n'est pas rare pour les modèles qui ont plus de 1 B de paramètres. Il s’avère que les modèles plus petits et plus légers restent très importants dans un scénario de production à charge plus élevée.
Le compromis entre qualité et latence est réel et nous devons toujours en tenir compte lors du choix d'un modèle d'intégration.
Comme nous l'avons mentionné ci-dessus, les modèles d'intégration aident à gérer la dimensionnalité du vecteur de sortie qui affecte les performances de nombreux algorithmes en aval. Généralement, plus le modèle est petit, plus la longueur du vecteur de sortie est courte, mais elle reste souvent trop grande pour les modèles plus petits. C'est à ce moment-là que nous devons utiliser des algorithmes de réduction de dimensionnalité tels que PCA (analyse en composantes principales), SNE / tSNE (intégration de voisins stochastiques) et UMAP (approximation de variété uniforme).
Un autre endroit où nous pouvons utiliser la réduction de dimensionnalité est avant de stocker les intégrations dans une base de données. Les intégrations vectorielles résultantes occuperont moins d’espace et la vitesse de récupération sera plus rapide, mais cela aura un prix pour la qualité en aval. Les bases de données vectorielles ne constituent souvent pas le stockage principal, les intégrations peuvent donc être régénérées avec une meilleure précision à partir des données sources d'origine. Leur utilisation contribue à réduire la longueur du vecteur de sortie et, par conséquent, rend le système plus rapide et plus simple.
Faire le bon choix
Il existe une multitude de facteurs et de compromis à prendre en compte lors du choix d'un modèle d'intégration pour un cas d'utilisation. Le score d'un modèle potentiel dans les benchmarks communs est important, mais il ne faut pas oublier que ce sont les modèles plus gros qui ont un meilleur score. Les modèles plus grands ont un temps d'inférence plus élevé, ce qui peut limiter considérablement leur utilisation dans des scénarios à faible latence, car un modèle d'intégration constitue souvent une étape de prétraitement dans un pipeline plus grand. De plus, les modèles plus grands nécessitent des GPU pour fonctionner.
Si vous avez l'intention d'utiliser un modèle dans un scénario à faible latence, il est préférable de se concentrer d'abord sur la latence, puis de voir quels modèles avec une latence acceptable offrent les meilleures performances de leur catégorie. De plus, lors de la construction d'un système avec un modèle d'intégration, vous devez planifier les modifications, car de meilleurs modèles sont publiés en permanence et il s'agit souvent du moyen le plus simple d'améliorer les performances de votre système.