Comprendre RAG Partie II : Comment fonctionne RAG classique
Dans le premier article de cette série, nous avons présenté la génération augmentée par récupération (RAG), expliquant qu'il devenait nécessaire d'étendre les capacités des grands modèles de langage (LLM) conventionnels. Nous décrivons également brièvement l'idée clé qui sous-tend RAG : récupérer des informations contextuellement pertinentes à partir de bases de connaissances externes pour garantir que les LLM produisent des informations précises et à jour, sans souffrir d'hallucinations et sans avoir besoin de réentraîner constamment le modèle.
Le deuxième article de cette série révélatrice démystifie les mécanismes sous lesquels fonctionne un système RAG conventionnel. Alors que de nombreuses versions améliorées et plus sophistiquées de RAG continuent d'apparaître presque quotidiennement dans le cadre des progrès effrénés de l'IA de nos jours, la première étape pour comprendre les dernières approches RAG de pointe consiste d'abord à comprendre le flux de travail RAG classique.
Le flux de travail RAG classique
Un système RAG typique (représenté dans le diagramme ci-dessous) gère trois composants clés liés aux données :
- Un LLM qui a acquis des connaissances à partir des données avec lesquelles il a été formé, généralement des millions, voire des milliards de documents texte.
- Une base de données vectorielles, également appelée base de connaissances stockant des documents texte. Mais pourquoi le nom de base de données vecteur ? Dans l’ensemble des systèmes RAG et de traitement du langage naturel (NLP), les informations textuelles sont transformées en représentations numériques appelées vecteurs, capturant la signification sémantique du texte. Les vecteurs représentent des mots, des phrases ou des documents entiers, conservant les propriétés clés du texte original de telle sorte que deux vecteurs similaires soient associés à des mots, des phrases ou des morceaux de texte ayant une sémantique similaire. Le stockage du texte sous forme de vecteurs numériques améliore l’efficacité du système, de sorte que les documents pertinents sont rapidement trouvés et récupérés.
- Requêtes ou invites formulées par l'utilisateur en langage naturel.
En résumé, lorsque l'utilisateur pose une question en langage naturel à un assistant basé sur LLM doté d'un moteur RAG, trois étapes s'effectuent entre l'envoi de la question et la réception de la réponse :
- Récupération : un composant appelé retriever accède à la base de données vectorielles pour rechercher et récupérer les documents pertinents pour la requête de l'utilisateur.
- Augmentation : la requête originale de l'utilisateur est augmentée en incorporant les connaissances contextuelles des documents récupérés.
- Génération : le LLM - également communément appelé générateur du point de vue RAG - reçoit la requête de l'utilisateur complétée par des informations contextuelles pertinentes et génère une réponse textuelle plus précise et véridique.
À l'intérieur du Retriever
Le récupérateur est le composant d'un système RAG qui trouve les informations pertinentes pour améliorer le résultat final généré ultérieurement par le LLM. Vous pouvez l’imaginer comme un moteur de recherche amélioré qui non seulement fait correspondre les mots-clés de la requête de l’utilisateur aux documents stockés, mais comprend la signification de la requête.
Le récupérateur analyse un vaste corpus de connaissances du domaine lié à la requête, stocké dans un format vectoriel (représentations numériques du texte), et extrait les morceaux de texte les plus pertinents pour construire autour d'eux un contexte qui est attaché à la requête originale de l'utilisateur. Une technique courante pour identifier les connaissances pertinentes est la recherche de similarité, dans laquelle la requête de l'utilisateur est codée dans une représentation vectorielle, et ce vecteur est comparé aux données vectorielles stockées. De cette façon, détecter les éléments de connaissances les plus pertinents pour la requête de l'utilisateur revient à effectuer de manière itérative des calculs mathématiques pour identifier les vecteurs les plus proches (les plus similaires) de la représentation vectorielle de cette requête. Ainsi, le récupérateur parvient à extraire des informations précises et contextuelles non seulement de manière efficace, mais aussi précise.
À l'intérieur du générateur
Le générateur de RAG est généralement un modèle de langage sophistiqué, souvent un LLM basé sur une architecture de transformateur, qui prend l'entrée augmentée du récupérateur et produit une réponse précise, contextuelle et généralement véridique. Ce résultat dépasse normalement la qualité d'un LLM autonome en incorporant des informations externes pertinentes.
À l'intérieur du modèle, le processus de génération implique à la fois la compréhension et la génération de texte, gérés par des composants qui codent l'entrée augmentée et génèrent le texte de sortie mot par mot. Chaque mot est prédit sur la base des mots précédents : cette tâche, effectuée comme dernière étape du LLM, est connue sous le nom de problème de prédiction du mot suivant : prédire le mot suivant le plus probable pour maintenir la cohérence et la pertinence. dans le message généré.
Cet article développe davantage le processus de génération de langage mené par le générateur.
Regarder vers l'avenir
Dans le prochain article de cette série d'articles sur la compréhension de RAG, nous découvrirons les méthodes de fusion pour RAG, caractérisées par l'utilisation d'approches spécialisées pour combiner les informations de plusieurs documents récupérés, améliorant ainsi le contexte de génération d'une réponse.
Un exemple courant de méthodes de fusion dans RAG est le reclassement, qui implique de noter et de hiérarchiser plusieurs documents récupérés en fonction de leur pertinence pour l'utilisateur avant de transmettre les plus pertinents au générateur. Cela contribue à améliorer encore la qualité du contexte augmenté et les éventuelles réponses produites par le modèle de langage.