Ajustement d’un Modèle d’Embedding

Regardez la vidéo!

Dans ce blogue, nous allons plonger dans une partie importante de la chaîne RAG (Generation Augmentée par la Récupération) : le modèle d’embedding, ou le modèle de vecteurs contextuels en français. Toutes les données que vous avez seront transformées en vecteurs contextuels, que nous utiliserons ensuite pour récupérer des informations. Il est donc crucial de bien comprendre les modèles de vecteurs contextuels. Voyons ensemble cette partie essentielle de la chaîne: comment les ajuster (fine-tuning), et pourquoi c'est important.

Avant de continuer, j’assume ici que vous avez de bonnes bases sur le RAG. Si non, j’ai la vidéo parfaite pour vous… 

Qu'est-ce qu'un modèle de vecteur contextuel ?

Alors, qu'est-ce qu'un modèle de vecteur contextuel exactement ? Dans le RAG, notre première étape consiste à convertir tous les documents ou textes en représentations numériques. Ce processus s'appelle la création de vecteurs contextuels. Un modèle de vecteur contextuel prend des données non structurées et les convertit en ces représentations numériques.

L'avantage des vecteurs contextuels, c'est qu'ils nous donnent des représentations de longueur fixe pour nos mots, peu importe combien de mots différents il y a dans un texte donné. Et voici le point clé : quand le modèle convertit le texte, il garde les significations similaires proches les unes des autres. Les modèles de vecteurs contextuels convertissent le texte, mais aussi des images ou de l’audio comme avec GPT-4o, qui sont des données en haute dimension, en une représentation de dimension plus faible qu’on appelle vecteurs contextuels, ou encore espace latent, où se trouvent ces vecteurs contextuels. Cet espace latent capture les caractéristiques importantes et les similitudes sous une forme simplifiée. Par exemple, un modèle de vecteur contextuel pourrait prendre un document de 2000 mots et le représenter dans un espace de 300 dimensions, c’est-à-dire simplement 300 chiffres dans une liste, beaucoup plus petit que l’espace d’origine, tout en conservant les relations significatives entre les mots s’il est bien entraîné.

Les modèles de vecteurs contextuels sont utiles parce qu'ils comprennent les relations entre les mots, au lieu de se concentrer uniquement sur chaque mot de façon isolé. Cela les rend essentiels pour des moteurs de recherche de texte ou d'images, des systèmes de recommandation, des chatbots, des systèmes de détection de fraude, et bien d’autres applications.

Modèles de vecteurs contextuels vs. bases de données vectorielles

Si vous avez regardé d’autres de mes vidéos, vous pourriez penser : "Cela ressemble un peu à ce que font les bases de données vectorielles." Alors, quelle est la différence ?

Une base de données vectorielle sert à stocker et récupérer ces vecteurs contextuels de manière efficace. Donc, elle travaille avec eux. Une fois que notre modèle de vecteur contextuel a fait son travail en convertissant le texte en vecteurs contextuels, la base de données vectorielle intervient. Elle organise et indexe ces vecteurs contextuels de sorte que, lorsque nous faisons une nouvelle requête, nous réutilisons notre modèle de vecteur contextuel pour encoder la requête, puis nous utilisons notre base de données pour trouver rapidement et renvoyer les informations les plus pertinentes. En résumé, le modèle de vecteur contextuel crée les représentations numériques, et la base de données vectorielle les stocke et les récupère en se basant sur leurs similarités contextuelles, simplement en comparant les nombres entre eux.

Vecteurs Contextuels Matryoshka

Puisque nous avons pris un petit détour pour parler des bases de données vectorielles, parlons un peu du stockage. Les vecteurs contextuels en haute dimension peuvent être coûteux à stocker. Ils peuvent contenir des milliers de valeurs, et nous pouvons en avoir des millions. C’est là que les vecteurs contextuels Matryoshka sont utiles. Imaginez des poupées russes : elles commencent grandes et deviennent plus petites à chaque fois qu’on en ouvre une. Les vecteurs contextuels Matryoshka fonctionnent de manière similaire. Ils commencent avec une grande taille, disons 1024 dimensions, et se réduisent progressivement pendant l’entraînement à quelque chose de plus petit, comme 64 dimensions. À la fin de l'entraînement, même ces vecteurs contextuels plus petits peuvent capturer l'essentiel du sens du texte quasiment aussi bien que les plus grands. Nous pouvons alors comparer les plus petits, en commençant par les 64 dimensions pour trouver les vecteurs contextuels les plus similaires, puis relancer une recherche sur une représentation plus grande, comme 128, pour trouver les plus similaires dans le sous-groupe, et répéter ce processus jusqu'à ce que nous atteignions les dimensions plus grandes, comme nos 1024 de départ. Cette approche permet de rendre le stockage et le calcul pendant l’entraînement et l’ajustement bien plus efficaces sans perdre en qualité.

L'ajustement d'un modèle de vecteur contextuel

Revenons à nos modèles de vecteurs contextuels. Nous avons vu ce que sont les modèles de vecteurs contextuels, comment ils fonctionnent, comment ils sont utilisés et comment nous stockons les vecteurs contextuels finaux qu'ils produisent. Maintenant, parlons de leur ajustement (fine-tuning). Bien que les modèles de vecteurs contextuels généraux soient excellents, ils peuvent ne pas être parfaits pour des tâches spécifiques dès leur sortie de la boîte.

Imaginez que vous avez un modèle de vecteur contextuel entraîné sur une grande variété de textes. Si vous voulez qu’il soit performant sur une tâche spécifique, comme comprendre les tickets de support client de votre entreprise, vous devrez peut-être l’ajuster. L'ajustement permet d’adapter le modèle pour mieux capturer les nuances et spécificités de votre tâche. Par exemple, un chatbot ajusté sur vos tickets de support client comprendra mieux les problèmes typiques de vos clients et pourra répondre plus efficacement.

Que se passe-t-il pendant l'ajustement ?

Alors, que se passe-t-il réellement lorsque vous ajustez votre modèle de vecteur contextuel ? Initialement, un modèle de vecteur contextuel pré-entraîné a une compréhension générale du langage, avec des données uniformément réparties sur ses couches. L'ajustement modifie cette répartition pour se concentrer davantage sur votre tâche spécifique. Cela signifie que l’espace latent du modèle, cette représentation numérique simplifiée dont nous avons parlé, est ajusté pour former des groupes plus pertinents et spécifiques à la tâche. Il apprendra à mieux différencier les données dans un domaine particulier, alors qu’elles auraient été très similaires avec un modèle plus général.

En général, les couches inférieures d’un modèle pré-entraîné capturent les caractéristiques fondamentales du langage, tandis que les couches supérieures développent une compréhension spécifique à la tâche pendant l’ajustement. Par exemple, dans notre situation de tickets clients, les couches inférieures capturent des caractéristiques fondamentales du langage comme la grammaire, la signification des mots et les structures de phrases de base. Elles reconnaissent, par exemple, des termes comme « remboursement » et « commande ». Cependant, sans ajustement, les couches supérieures du modèle n’ont qu’une compréhension générale des contextes de service client. Lorsqu'il est ajusté sur votre jeu de données spécifique de tickets de support, les couches supérieures du modèle s’ajustent pour comprendre les nuances particulières et les problèmes courants liés à votre entreprise. Cela signifie que le modèle peut reconnaître des problèmes spécifiques et fournir des réponses basées sur le contexte donné. Il peut gérer efficacement un ticket comme « J'ai besoin d'aide avec ma commande récente ; elle n’est pas encore arrivée » en identifiant cela comme un problème de livraison non reçue, basé sur des tickets similaires passés, et en trouvant la bonne information dans la base de données pour donner la réponse appropriée au client, au lieu de ressortir toutes les informations liées au mot « commande » par exemple. Cela rend un modèle de vecteur contextuel ajusté meilleur pour gérer des tâches d’un domaine spécifique comparé à un modèle généralisé.

Comment ajuster un modèle de vecteur contextuel ?

L'ajustement d'un modèle de vecteur contextuel implique quelques étapes :

  1. Sélectionner un modèle pré-entraîné : Commencez avec un modèle qui fonctionne déjà bien pour des tâches générales.

  2. Préparer vos données : Rassemblez et prétraitez des données spécifiques à votre tâche.

  3. Ajuster le modèle : Ré-entraînez (ou ajustez) le modèle sur votre jeu de données, souvent en utilisant des techniques d’apprentissage par transfert.

  4. Évaluer et optimiser : Testez les performances du modèle et ajustez-le pour améliorer la précision.

  5. Intégrer dans un système RAG : Une fois le modèle ajusté, intégrez-le dans votre système RAG. Assurez-vous que le modèle de vecteur contextuel convertit efficacement les requêtes et documents en vecteurs contextuels que la base de données vectorielle peut rapidement récupérer et comparer.

Faut-il vraiment ajuster ?

Mais est-ce toujours nécessaire d'ajuster un modèle de vecteur contextuel ? Pas forcément. Si un modèle pré-entraîné général répond à vos besoins, vous n'aurez peut-être pas besoin de l’ajuster. C’est pourquoi il est essentiel d’évaluer correctement votre système dès le début du projet. Mais si votre tâche nécessite une compréhension plus approfondie de contextes ou de nuances spécifiques, l'ajustement est crucial. Il aide le modèle à produire des vecteurs contextuels plus pertinents et plus précis, adaptés à vos besoins spécifiques, et à mieux comprendre les différences propres à votre domaine pour trouver les informations pertinentes.

L'ajustement peut donc considérablement améliorer les performances du modèle en l'alignant mieux sur votre tâche, ce qui conduit à des résultats plus précis et plus pertinents. Il est extrêmement utile lorsque votre tâche nécessite une expertise poussée qui n'est pas présente dans le système de vecteurs contextuels ou le modèle de langage par défaut que vous utilisez.

Si ce blogue vous a plu, je vous invite à consulter notre récent livre ou notre cours, qui couvre des techniques avancées de RAG et bien plus encore pour produire un système basé sur les LLM. Les liens sont en description.

Merci d'avoir lu, et on se retrouve dans le prochain blogue !

Louis-François Bouchard

Hello! Je suis Louis-François Bouchard, de Montréal, Canada, aussi connu sous le nom de 'What's AI' et j'essaie de partager et de vulgariser tout ce qui est en lien avec l'intelligence artificielle. Mon objectif est de démystifier la «boîte noire» de l'IA pour tous et de sensibiliser les gens aux risques de son utilisation.

https://www.youtube.com/channel/UCIUgms0TE2WhQijbU-IMYyw
Précédent
Précédent

Bases de Données Vectorielles : Pourquoi et Comment les Utiliser avec le RAG

Suivant
Suivant

Comment Évaluer et Optimiser Votre Système RAG : Métriques et Méthodes Essentielles