Grands modèles de langageRAG et recherche d'informationGrands modèles de langageRAG et recherche d'information
Grands modèles de langage12 min de lecture

Pourquoi le RAG n’entraîne pas votre IA

Le RAG n’entraîne pas votre modèle. Il lui fournit un contexte temporaire qui change la réponse sans modifier les poids.

Pourquoi le RAG n’entraîne pas votre IA
Sommaire

À retenir

  • Le RAG ajoute de l’information au moment de la requête. Il ne réécrit pas les poids internes du modèle et ne lui enseigne pas vos données de façon permanente.
  • Cette distinction compte pour la confidentialité, les attentes, le débogage et la façon dont les équipes parlent des connaissances de l’IA.
  • Si vous devez changer le comportement du modèle, le RAG pourrait ne pas suffire. Si vous avez besoin d’un meilleur contexte, il pourrait être exactement la bonne solution.

Regardez la vidéo :

« Si je colle les données de mon entreprise dans ChatGPT, est-ce que je viens de l’entraîner? »

Je reçois sans arrêt différentes versions de cette même question, formulées de plusieurs façons, comme « puis-je injecter des connaissances directement dans le modèle? » ou, dans une formulation plus technique, « ajouter des données à l’aide du RAG revient-il à modifier l’espace latent? » Mais toutes ces formulations cachent la même confusion.

Sommes-nous réellement en train de changer le cerveau du modèle ou lui donnons-nous seulement de l’information temporaire?

Cette question compte beaucoup plus que les gens ne le pensent, surtout si vous construisez votre propre workflow ou intégrez l’IA à vos applications. Mal comprendre cette différence peut mener à des hypothèses complètement fausses sur ce que fait le système.

Voici donc ce que nous allons faire. À la fin de cet article, vous comprendrez clairement la différence entre le prompting, l’utilisation de données externes avec la recherche d’information et le véritable réentraînement d’un modèle. Vous saurez ce que signifie réellement « changer » un modèle ou simplement l’augmenter, et quand choisir chaque approche. En chemin, nous devrons parler des embeddings et de l’espace latent, mais ne vous inquiétez pas, je ne transformerai pas cet article en cours de mathématiques. Les mathématiques elles-mêmes ne sont pas si importantes.

Ok, imaginez que vous dirigez une petite entreprise qui vend de l’équipement d’escalade, afin que nous ayons un exemple cohérent et parce que j’adore le bloc.

Disons aussi que vous avez une politique de retour, un catalogue de produits comprenant des chaussons, de la magnésie, un harnais et d’autres articles, ainsi que quelques lignes directrices internes sur la façon dont vos employés doivent répondre aux clients. Vous ouvrez maintenant ChatGPT, collez votre politique de retour dans le prompt et dites : « Réponds aux questions de mes clients à l’aide de cette politique. »

Est-ce que vous venez d’entraîner le modèle?

Non. Pas du tout.

Et si vous créez un GPT personnalisé ou un projet afin de pouvoir l’utiliser facilement plus tard? Avez-vous entraîné votre propre version des modèles?

Toujours pas.

Vous avez donné au modèle un contexte temporaire. Les paramètres internes du modèle, les nombres réels qui définissent son comportement, son « cerveau », n’ont pas changé. Vous n’avez pas mis sa mémoire à jour de façon permanente. Vous n’avez pas modifié son réseau neuronal. Vous avez simplement fourni du texte supplémentaire pour cette interaction et celles qui suivent dans la même conversation ou le même GPT.

Lorsque la conversation se termine, cette information disparaît. Le prochain utilisateur n’en profite pas. Le modèle ne l’a pas absorbée dans ses connaissances fondamentales. Il n’a rien appris non plus des erreurs qu’il a commises après que vous lui avez demandé de répondre autrement. Il a simplement utilisé cette politique dans son contexte pendant qu’il générait la réponse.

Ça, c’est du prompting.

Rendons maintenant le système un peu plus sophistiqué. Au lieu de coller votre politique de retour chaque fois, vous construisez un petit système. Vous stockez tous les documents de votre entreprise dans une base de données. Lorsqu’un client demande « combien de temps ai-je pour retourner mes chaussons d’escalade? », votre système cherche dans vos documents, trouve la politique de retour et envoie la section pertinente au modèle avec la question.

C’est ce que les gens appellent le RAG, ou génération augmentée par recherche d’information.

Nous stockons l’information à l’extérieur du modèle et le système la récupère sur demande. C’est extrêmement utile pour personnaliser facilement des réponses en fonction de nos propres données.

Mais encore une fois, avons-nous entraîné le modèle?

Toujours pas.

Encore une fois, nous n’avons pas touché à ses paramètres internes. Nous n’avons rien réentraîné. Nous lui avons construit un système de mémoire externe structuré. Le modèle peut maintenant lire vos documents avant de répondre, mais son « cerveau » interne est exactement le même qu’avant.

C’est ici qu’interviennent les embeddings, parce que vous vous demandez peut-être comment le système sait quel document est pertinent.

Un embedding est simplement une liste de nombres qui représente un morceau de texte. Vous pouvez l’imaginer comme des coordonnées dans un espace à très haute dimension. Pas seulement x et y, mais des milliers de dimensions. Lorsque nous passons votre politique de retour dans un modèle d’embedding, il convertit ce texte en vecteur dans cet espace. Si nous passons la question « combien de temps ai-je pour retourner mes chaussons d’escalade? » dans le même modèle d’embedding, nous obtenons un autre vecteur.

Si le sens de deux textes est semblable, leurs vecteurs seront proches dans cet espace. S’ils n’ont aucun lien, comme « comment entretenir le moteur de ma voiture? », les vecteurs seront éloignés et le modèle saura qu’il ne doit pas utiliser cette information.

Les embeddings permettent à ces systèmes de comprendre le sens des phrases et des mots. Le système utilise simplement ces vecteurs et les compare. C’est tout. Si un vecteur est plus proche des autres dans cet espace, il est pertinent ou semblable. C’est tout. Lorsqu’il compare et comprend des données externes, le système ne « réfléchit » pas davantage que ces simples comparaisons vectorielles.

Dans un système RAG, nous convertissons donc tous vos documents en embeddings et les stockons. Lorsqu’une nouvelle question arrive, nous la convertissons elle aussi en embedding. Nous cherchons ensuite simplement les vecteurs stockés qui sont les plus proches du vecteur de la question. Proche signifie sémantiquement semblable. Donc voisin dans cet espace.

C’est de la géométrie pure.

Lorsque vous ajoutez un nouveau document à votre base de données et calculez son embedding, vous ne modifiez pas les connaissances internes du modèle de langage. Vous n’injectez rien dans son espace latent, le nom donné à l’espace vectoriel où nous les stockons et les comparons. Vous ajoutez un nouveau livre sur une étagère et l’indexez afin de pouvoir le retrouver plus tard.

Le modèle consulte l’étagère lorsqu’il en a besoin et sait où chercher, comme si toutes les phrases étaient classées par ordre alphabétique, sauf que cette étagère est externe au modèle.

Que signifierait alors réellement changer le modèle?

Un grand modèle de langage est un immense réseau neuronal comprenant des millions ou des milliards de paramètres. Les paramètres sont simplement des nombres, comme ceux de nos vecteurs. Pris séparément, ils ne signifient rien, mais ensemble, ils forment un tout porteur de sens et d’importance. Dans le modèle, ce sont les poids qui déterminent comment les inputs sont transformés d’une couche à l’autre à l’intérieur du réseau. Pendant l’entraînement, ces poids sont ajustés très légèrement, encore et encore, afin que le modèle s’améliore à prédire le prochain mot.

Entraîner signifie littéralement changer ces nombres afin de maximiser nos chances de prédire le prochain mot correct.

Si vous fine-tunez un modèle sur les données d’équipement d’escalade de votre entreprise, vous modifiez réellement son cerveau. Vous poussez plusieurs de ces poids dans une direction afin que le comportement global du modèle change. Il pourrait commencer à répondre plus régulièrement avec la voix de votre marque. Il pourrait internaliser des patterns tirés de votre documentation.

Mais même là, vous n’insérez pas un fait bien délimité à un endroit précis. Les connaissances se distribuent à travers un très grand nombre de paramètres. Il n’existe pas un seul neurone étiqueté « politique de retour des chaussons d’escalade ». L’information est répartie dans le réseau d’une façon fortement interconnectée. C’est aussi pourquoi entraîner et réentraîner des modèles est beaucoup plus complexe que d’ajouter une forme de mémoire externe, et pourquoi le modèle peut quand même halluciner. Les faits que vous essayez de lui enseigner ne sont pas clairement sauvegardés quelque part. Ils ne font qu’influencer les futures générations du modèle.

C’est souvent ici que le terme « espace latent » que j’ai mentionné apparaît et embrouille les gens.

L’espace latent semble mystique, mais il ne l’est pas. À l’intérieur du modèle, lorsque les tokens entrent, ils sont convertis en vecteurs internes. À peu près comme ceux dont nous avons parlé plus tôt, liés aux embeddings récupérés dans une mémoire externe. Sauf que, dans ce cas, ils sont internes au modèle. Ces vecteurs sont transformés encore et encore à travers de nombreuses couches. Toutes ces représentations intermédiaires vivent dans ce qu’on appelle l’espace latent. C’est simplement l’espace de représentation interne du réseau. C’est essentiellement son cerveau et sa façon de comprendre le monde, en plaçant des vecteurs pour chaque concept et chaque mot.

Mais encore une fois, il est très important de comprendre que cet espace latent n’est pas une base de données stockée quelque part dans le modèle. Ce n’est pas une carte que vous pouvez ouvrir et modifier. C’est la structure qui émerge de la façon dont les paramètres transforment les inputs.

C’est pourquoi des chercheurs peuvent dire des choses comme « nous ne comprenons pas complètement comment il peut répondre à telle ou telle question ». Cet espace est si vaste et a été entraîné sur des billions de mots que nous ne pouvons pas saisir pleinement ce qui y est exploité ou non. Comme notre cerveau. Il y a simplement trop d’information traitée simultanément et interreliée. Cela dit, nous comprenons parfaitement ce que fait le modèle. Ne croyez pas les gens qui affirment que les modèles d’IA s’entraînent seuls et deviennent incontrôlables. Ils ne font qu’additionner et multiplier d’énormes quantités de vecteurs et de matrices que nous contrôlons entièrement pour produire les réponses finales. Il est simplement difficile de bien visualiser et de reconnaître ce qui influence quoi, étant donné la taille de cet espace de nombres. Mais c’est intentionnel : plus nous avons de nombres pour représenter le sens, plus le modèle peut représenter des patterns complexes et générer les bons mots dans la plupart des scénarios.

Je parle beaucoup d’espace latent et de paramètres, mais « les paramètres sont-ils l’espace latent? » La réponse précise est que les paramètres définissent les transformations, puis que ces transformations créent la géométrie de l’espace latent. L’espace latent est le comportement induit par les paramètres. Ce n’est pas un objet séparé que vous pouvez manipuler directement.

Et cela explique pourquoi vous ne pouvez pas simplement injecter des données dans l’espace latent. Il n’y a aucun panneau de contrôle où vous pouvez dire « insérer le fait suivant : notre fenêtre de retour est de 45 jours ». Si vous voulez que ce fait se reflète de façon permanente dans le comportement du modèle, vous devez le réentraîner ou le fine-tuner, ce qui signifie ajuster les poids par l’optimisation. Et encore une fois, vous n’avez aucune certitude qu’il le conservera correctement. Vous pourriez aussi briser d’autres parties de ses connaissances, puisque vous transformez cet espace en modifiant les paramètres du modèle.

Si vous voulez avoir la certitude que le modèle connaîtra un fait précis, vous lui fournissez soit du contexte temporaire par le prompting, soit une mémoire externe par la recherche d’information.

Une dernière précision rapide sur les modèles de raisonnement récents, parce qu’elle est liée au même malentendu. Lorsqu’un modèle semble raisonner étape par étape, ce qui se produit à l’intérieur demeure de simples transformations de vecteurs dans l’espace latent. Il n’existe pas un planificateur symbolique séparé à l’intérieur, comme nous lorsque nous réfléchissons. Il n’existe pas une base de connaissances bien organisée avec des faits étiquetés. Des représentations numériques continues sont transformées selon les paramètres appris.

Les humains forment évidemment eux aussi des représentations internes. Mais les nôtres sont ancrées dans la perception et l’action. Nous voyons des chaussons d’escalade, nous les touchons, nous les utilisons et nous mettons continuellement notre compréhension à jour. La plupart des grands modèles de langage sont entraînés, puis figés. Ils ne mettent pas leurs paramètres à jour chaque fois qu’ils lisent quelque chose de nouveau. Il serait extrêmement complexe et coûteux de le faire à partir de toutes nos interactions avec ChatGPT.

Lorsque vous collez votre politique de retour dans ChatGPT, vous ne remodelez donc pas son modèle interne du monde. Vous fournissez du contexte. Lorsque vous construisez un système RAG, vous construisez une mémoire externe structurée. Et lorsque vous faites du fine-tuning, vous changez réellement les paramètres internes, ce qui remodèle la géométrie de l’espace latent.

Cette distinction change notre façon de concevoir des systèmes. Elle vous empêche de supposer que l’ajout de documents à une base de données vectorielle équivaut à enseigner quelque chose au modèle de façon permanente. Et elle vous aide à comprendre pourquoi « injectez-le simplement dans le modèle » ne correspond pas au fonctionnement de ces systèmes.

Le modèle mental que je veux que vous reteniez est simple. Les paramètres sont le cerveau. L’entraînement change le cerveau. Les embeddings sont des coordonnées qui nous permettent d’organiser et de rechercher du sens. Le RAG est une étagère de livres que le cerveau peut consulter. L’espace latent est la géométrie interne créée par les transformations du cerveau.

Nous voulons réentraîner ce cerveau pour lui enseigner une nouvelle langue ou en faire un expert dans un domaine précis, pas pour lui apprendre des faits particuliers ou notre politique de retour. Les systèmes basés sur la recherche d’information, donc l’ajout d’une mémoire au système, sont généralement beaucoup moins coûteux, plus puissants et plus contrôlables.

Si vous le souhaitez, je peux approfondir les systèmes de mémoire à long terme et leur gestion dans un prochain article, parce que c’est là que les choses commencent à devenir floues et vraiment intéressantes. Dites-moi dans les commentaires si cela vous intéresse!

Merci d’avoir lu jusqu’au bout!

Discussion

Commentaires

Chargement

Aucun compte requis. Votre nom et votre commentaire seront publics, alors n'incluez pas de renseignements privés. Consultez la page de confidentialité pour les détails.

Continuez à apprendre

Vous voulez le côté pratique de l'IA, sans le brouillard marketing ?

Je partage ce qui est utile sur YouTube, Substack et dans mes guides d'ingénierie IA.

FAQ

Le RAG est-il la même chose que l’entraînement d’un modèle d’IA?

Non. Le RAG récupère et fournit du contexte pendant une requête. L’entraînement change les poids du modèle.

Qu’est-ce que le RAG change réellement?

Il change l’information que le modèle peut utiliser pour cette réponse, pas les paramètres appris sous-jacents du modèle.

Pourquoi cette distinction est-elle importante?

Elle affecte les hypothèses sur la confidentialité, la stratégie de mise à jour, le débogage et le choix entre la recherche d’information, le fine-tuning ou une autre approche.

Le contexte récupéré persiste-t-il après la requête?

Non. À moins que l’application le stocke séparément, les poids du modèle demeurent inchangés après cette génération.

Quel est le rôle de la similarité vectorielle dans le RAG?

Elle aide à sélectionner les passages stockés qui sont liés à une requête, mais cette comparaison ne constitue pas un nouvel apprentissage du modèle.

Quand devriez-vous faire du fine-tuning plutôt que de compter seulement sur le RAG?

Utilisez le fine-tuning lorsque vous devez changer de façon persistante le comportement, le style ou les patterns d’une tâche. Utilisez le RAG lorsque le besoin principal concerne des faits actuels ou privés.