La Génération Augmentée (RAG) en IA
Regardez la vidéo:
Lorsque vous utilisez ChatGPT, vous avez probablement rencontré des réponses comme : « Je suis désolé, mais en date de ma dernière mise à jour des connaissances en janvier 2022, je ne peux pas vous répondre », ou même des réponses qui ne sont simplement pas vraies du tout. C'est là que le RAG intervient et dit : laissez-moi aider en injectant plus de connaissances (ou de contenu) dans vos interactions avec un modèle comme ChatGPT pour l'aider à répondre aux questions inconnues et à venir.
Si vous suivez un peu le domaine de l’IA, on entend parler de LLMs, de prompts et de RAG constamment. À ce stade, je pense que la plupart d'entre nous savent ce qu'est un LLM, ou modèle de langue, et un prompt. Mais saviez-vous que, actuellement, le RAG est tout aussi important que ces deux éléments et alimente la plupart des applications que vous utilisez impliquant un chatbot ? J'ai récemment fait un sondage dans notre communauté Discord pour découvrir si les gens avaient déjà étudié, créé ou utilisé des applications RAG, et la plupart ont voté pour comprendre à quoi sert RAG. RAG est aussi important que votre manuel de cours pour réussir dans une classe, donc comprendre ce que c'est est très pertinent dans l'IA.
Un LLM, ou modèle de langage, est simplement un modèle d'IA entraîné sur le langage pour dialoguer avec les humains, comme GPT-4 utilisé dans ChatGPT. Un prompt est simplement votre interaction avec celui-ci. C'est la question que vous lui posez.
Mais si vous rencontrez des problèmes comme des hallucinations ou des biais en utilisant un tel modèle de langage, alors RAG, ou retrieval-augmented generation ou encore on peut dire la générations augmentées par récupération, entre en jeu.
Clarifions rapidement les hallucinations en premier lieu. C’est quand le modèle vous retourne un peu n’importe quoi qui semble vrai, simplement parce qu’il ne connait pas la réponse. En fait, un LLM hallucine constamment. Ça ne fait que prédire des mots de façon statistiques. Il s’avère que quand on les entraîne avec tout internet, il y a tellement d’exemples que ça arrive à bien prédire les prochains mots logique pour répondre à la plupart des questions. Malgré tout, ça hallucine. Ça ne comprend pas réellement de quoi ça parle et ça ne fait que sortir un mot à la fois qui est probable. Ce qui est incroyable c’est que la majorité de ces hallucinations sont en fait véritables et répondent à notre question. Par contre, certainess d’entres elles sont de vraies hallucinations de faits ou de scénarios qui ne sont pas réels, et ça, ça peut causer pas mal de problèmes si on ne les contrôle pas suffisamment.
Bien qu'il y ait plusieurs raisons pour lesquelles les LLMs hallucinent, c'est principalement parce qu'ils manquent de contexte pertinent, soit parce qu'ils ne peuvent pas trouver les données pertinentes, soit parce qu'ils ne savent pas à quelles données se référer pour une question particulière. Cela est dû au fait qu'ils ont été entraînés pour répondre et non pour dire : « Je ne sais pas ». RAG résout ce problème en ajoutant automatiquement plus de connaissances (ou de contenu) dans vos interactions avec un LLM.
En termes simples : vous disposez d'un ensemble de données (ce qui est nécessaire) et vous l'utilisez pour aider le LLM à répondre aux questions des utilisateurs (qui sont inconnues et à venir). C'est la forme la plus simple et nécessite quelques étapes pour fonctionner, mais voici l'essentiel d'un système basé sur le RAG :
question de l'utilisateur -> recherche automatique dans une base de données pour trouver des informations pertinentes -> retourner la question + les informations pertinentes trouvées dans l'ensemble de données au LLM -> répondre à l'utilisateur.
Comme vous pouvez le voir, avec le RAG, on utilise le contexte de la question de l'utilisateur et notre base de connaissances pour y répondre. Cela aide à ancrer notre modèle dans les connaissances qu’on contrôle, le rendant plus sûr et aligné. L'inconvénient est de limiter nos réponses à notre base de connaissances, qui est finie et probablement pas aussi grande que l'internet. C'est comme un examen à livre ouvert que vous auriez à l'école. Vous avez déjà accès à la plupart des réponses et devez simplement savoir où elle se trouve dans votre base de connaissances. Si vous trouvez la réponse dans le manuel, c’est assez difficile de rater la question et d'écrire quelque chose de faux !
Jerry Liu, PDG de LlamaIndex, m’a prtagé un angle très intéressant sur la manière de voir ce que le RAG apporte dans un récent épisode de mon podcast avec lui, qui va comme suis :
Si vous y réfléchissez, RAG est essentiellement de l'ingénierie de prompt, car vous cherchez essentiellement un moyen d'insérer du contexte dans le prompt. C'est juste une manière programmatique de faire de l'ingénierie de prompt. C'est une façon de prompter de manière à ce que vous obteniez réellement un contexte [à partir d'une base de données à vous, et automatiquement].
Il a aussi dit de s’abonner à la chaîne pour en apprendre plus sur l’IA! Ok, ça c’est peut-être juste une hallucination, en fait… mais vous devriez quand même le faire, honnêtement.
Avec le RAG, vous avez d'abord besoin de données ou de connaissances, qui peuvent prendre la forme de documentation, de livres, d'articles, etc., et vous permettez uniquement au LLM de les rechercher et de répondre si la réponse à la question se trouve dans cette base de connaissances. De toute façon, si vous avez accès à des informations précises comme dans votre manuel scolaire, pourquoi essaieriez-vous de trouver une autre réponse à la place ?
C'est (présentement) la meilleure façon de contrôler les sorties et de rendre notre modèle plus sûr et aligné. En gros, c'est la meilleure façon de garantir une bonne réponse et donc obtenir la meilleure note possible.
Par exemple, chez Towards AI nous avons récemment construit un tuteur IA pour répondre aux questions liées à l'IA dans nos cours en ligne. Nous voulions des réponses précises pour nos étudiants, tant en termes de précision (donner la bonne réponse) qu'en termes de pertinence (informations à jour). Avec RAG, on peut simplement mettre à jour votre base de données si les choses ont changé. Ce n'est pas un gros problème si toute la librairie de PyTorch a eu une grande mise à jour hier : récupérez-la à nouveau et mettez à jour votre ensemble de données. Voilà ! On n’a pas à réentraîner un modèle entier ou à attendre que GPT-4 mette enfin à jour la date de coupure des connaissances !
Le processus global du bot est assez simple ; on valide la question, en s’assurant qu'elle est liée à l'IA et que notre chatbot doit y répondre, puis on recherche dans notre base de données pour trouver de bonnes sources pertinentes et enfin utiliser ChatGPT pour digérer ces sources et fournir une bonne réponse à l'étudiant.
Si vous avez besoin d'informations sûres d'un chatbot IA comme un assistant médical, un tuteur, un avocat ou un comptable, vous utiliserez du RAG. Bon, peut-être pas si vous écoutez en 2030, mais actuellement, et pour un bon moment, RAG est la meilleure approche pour utiliser un chatbot où vous avez besoin d'informations factuelles et précises
Si vous êtes interessé par le côté plus technique, le voici :
Pour construire un chatbot ou une application basée sur du RAG, comme notre tuteur IA, on commence par intégrer toutes nos données en mémoire. Cela se fait en divisant tout le contenu en morceaux de texte (diviser nos données textuelles en parties fixes ou flexibles, par exemple, des parties de 500 caractères) et en le traitant avec un modèle d’encodage, comme le modèle text-embedding-ada-002 d'OpenAI. Cela produira des encodages qui sont, en gros, juste des vecteurs de nombres représentant votre texte. Cela facilitera notre vie et nous permettra de comparer facilement les textes entre eux. On peut sauvegarder ces vecteurs dans une mémoire. Ensuite, pour une nouvelle question d'un utilisateur particulier, on répète simplement ce processus et on répond. Cela signifie d’intégrer la question en utilisant la même approche et la comparer avec tous vos encodages actuels dans votre mémoire. Donc no vecteurs représentants nos articles et livres distribués en morceaux de 500 charactères. Ici, on cherche essentiellement la réponse la plus probable à cette question en cherchant dans notre mémoire, un peu comme on le ferait pour un examen en parcourant les chapitres pour trouver un titre qui semble pertinent à la question d'examen actuelle.
Une fois qu'il a trouvé les encodages les plus similaires, ChatGPT est sollicité pour comprendre la question de l'utilisateur et son intention et utiliser uniquement les sources de connaissances récupérées pour répondre à la question. C'est ainsi que le RAG réduit les risques d'hallucination et permet d'avoir des informations à jour, car on peut mettre à jour notre base de connaissances autant qu’on le souhaite, et ChatGPT, ou notre modèle de langue actuel, se contente de puiser des informations dedans pour répondre.
De plus, comme vous pouvez le voir, il cite toutes les sources qu'il a trouvées sur la question pour permettre à l’utilisateur de plonger et d'en apprendre davantage, ce qui est également un avantage lorsque vous essayez d'apprendre et de comprendre un nouveau sujet !
Cependant, il reste encore de nombreuses choses à considérer, comme la façon de déterminer quand répondre à une question ou non, si elle est pertinente ou dans notre documentation, comprendre de nouveaux termes ou acronymes qui ne sont pas dans la base de connaissances de ChatGPT, trouver les informations pertinentes de manière plus efficace et précise, etc. Ces préoccupations sont toutes des choses que nous avons améliorées en utilisant diverses techniques telles que de meilleures méthodes de séparations du texte en moreceaux, des réévaluateurs, l'expansion des requêtes, des agents, et plus encore que vous pouvez découvrir dans notre cours avancé gratuit sur le RAG que nous avons fait avec Towards AI et Activeloop que j'ai lié ci-dessous. Mais c’est actuellement uniquement en anglais.
Avant que certains d'entre vous ne posent la question, oui, une alternative au RAG serait d'affiner notre modèle pour notre tâche spécifique. En gros, entraîner davantage un modèle sur nos données pour le rendre plus spécifique et ingérer les connaissances plutôt que de toujours les rechercher. C'est comme mémoriser le livre avant l'examen au lieu de l'apporter. Malgré tout, le RAG reste pertinent avec ou sans affinage, car il est beaucoup moins coûteux à construire et est mieux pour réduire les hallucinations (indésirées), car on force le modèle à donner des réponses basées sur la documentation QUE NOUS contrôlons, et non pas simplement sur des choses qu'il a ingérées et qu'il régurgitera, espérons-le, correctement comme dans les modèles affinés. Revenant aux examens à livre ouvert, c'est comme si les professeurs vous faisaient vous concentrer sur la compréhension de la matière principale et la logique et non sur l’apprentissage par coeur des sujets, car vous pouvez toujours la trouver dans les manuels ou sur Google. C’est la même chose ici pour les LLMs et en les complémentant avec du RAG. De plus, même si ces modèles ont une bien meilleure mémoire que nous, ils ne sont pas parfaits et ne retiendront pas toutes les informations que nous leur donnerons. Ainsi, même avec un modèle affiné sur des données hyper-spécifiques, le RAG reste quelque chose à exploiter.
Avant de terminer cette vidéo, je voulais juste mentionner que nous avons discuté de ces deux sujets en profondeur avec des exemples de programmation dans nos cours sur les LLM et le RAG (en anglais seulement pour l'instant, malheureusement) si vous voulez mettre ces connaissances en pratique ! Le lien est dans la description ci-dessous.
J'espère que vous avez apprécié cette vidéo et qu'elle vous a aidé à mieux comprendre les objectifs et les principes de RAG. Si c'est le cas, merci de la partager avec un ami ou votre réseau pour partager les connaissances et aider la chaîne à grandir !
Merci d'avoir regardé la vidéo.