La génération augmentée par récupération (RAG pour Retrieval Augmented Generation) est une méthode qui combine la puissance des grands modèles de langage (LLM) avec des sources de données externes pour produire des réponses plus précises et pertinentes. La principale motivation du RAG est que la plupart des données mondiales sont privées, alors que les LLM sont entraînés sur des données accessibles au public. Le RAG résout ce problème en permettant aux LLM d’accéder et d’utiliser des données privées, telles que des informations personnelles ou d’entreprise, qui ne font pas partie de l’ensemble d’entraînement du LLM.
Voici un aperçu du processus RAG :
- Indexation : Les documents externes sont traités et indexés afin de permettre une récupération efficace. Cela implique la création d’une base de données où les documents peuvent être extraits en fonction de leur pertinence par rapport à une question posée. Différents types de bases de données peuvent être utilisés, notamment les bases de données SQL, les bases de données relationnelles, les stockages de vecteurs et les bases de données graphiques. Les documents sont généralement convertis en représentations numériques (vecteurs) pour faciliter les recherches de similarité.
- Récupération : Lorsqu’un utilisateur pose une question, le système extrait les documents les plus pertinents de l’index. Cela se fait souvent en intégrant la question dans un vecteur et en recherchant les documents ayant des intégrations similaires.
- Génération : Les documents récupérés sont ensuite transmis à un LLM avec la question de l’utilisateur. Le LLM utilise ces informations pour générer une réponse qui s’appuie sur les documents récupérés.
Le RAG peut également intégrer des techniques plus avancées pour améliorer la récupération et la génération, telles que :
- La traduction de requêtes, qui consiste à modifier la question de l’utilisateur afin de la rendre plus adaptée à la récupération. Cela peut inclure la réécriture de requêtes, la décomposition en sous-questions ou l’abstraction en questions de niveau supérieur. Des méthodes telles que la multi-requête, la fusion RAG, l’invitation progressive et Hyde sont utilisées pour traduire les requêtes.
- Le routage, qui est le processus consistant à diriger une question vers la source de données correcte. Cela peut être fait en utilisant un routage logique (raisonnement LLM) ou un routage sémantique (similarité entre la question et les invites).
- La construction de requêtes, qui consiste à convertir une question en langage naturel en un langage spécifique au domaine pour une source de données. Cela peut inclure du texte en SQL, du texte en Cipher ou du texte en filtres de métadonnées pour les bases de données vectorielles.
- Le réclassement ou le filtrage des documents récupérés.
- Le RAG actif, qui utilise la rétroaction pour améliorer la récupération et la génération. Cela peut inclure l’évaluation des documents récupérés, l’évaluation des réponses et la vérification des hallucinations.
Perspectives et applications possibles pour le RAG :
- RAG centré sur les documents : À mesure que les fenêtres contextuelles des LLM s’élargissent, on constate une tendance à s’éloigner du découpage précis des documents et à se concentrer plutôt sur la récupération de documents complets. Cette approche peut nécessiter de nouvelles stratégies d’indexation, telles que l’indexation multi-représentation, qui utilise des résumés pour la récupération tout en fournissant le document complet pour la génération. Des techniques comme Raptor peuvent également être utilisées pour créer des index hiérarchiques de résumés de documents, afin de répondre aux questions qui doivent intégrer des informations provenant de plusieurs documents.
- Intégrations de longs contextes : Les systèmes RAG doivent s’adapter aux modèles de longs contextes en développant des modèles d’intégration capables de gérer des documents entiers.
- Raisonnement au-dessus du RAG : Une tendance clé est de passer d’une simple récupération et génération à des flux cycliques qui améliorent la qualité de la production grâce à l’évaluation et à la rétroaction.
- RAG adaptatif : Il s’agit de prendre des décisions sur le moment et l’endroit où effectuer la récupération en fonction du contexte, de la pertinence du document et de la qualité de la réponse. C’est ce qu’on appelle le « RAG actif ». Des approches telles que le RAG correctif utilisent la recherche sur le Web comme solution de repli lorsque les documents récupérés ne sont pas pertinents.
- Techniques d’indexation améliorées : Les stockages vectoriels sont couramment utilisés pour l’indexation, mais il existe des méthodes avancées telles que l’indexation multi-représentation qui crée un résumé du document qui est utilisé pour la récupération tout en préservant le document complet pour la génération, et l’indexation hiérarchique avec Raptor qui crée une hiérarchie de résumés de documents qui sont indexés ensemble pour améliorer la couverture sémantique.
- Techniques d’intégration avancées : Des méthodes comme Co-bear traitent la limitation de la compression d’un document complet en un seul vecteur en créant des intégrations pour chaque jeton, ce qui peut améliorer les performances de récupération.
- Ingénierie des flux : Des cadres tels que LangGraph émergent pour aider à construire des flux sophistiqués et logiques au sein des pipelines RAG. Cela est utile pour les flux de travail plus complexes avec des étapes telles que le routage, l’évaluation des documents et des générations, et la récupération itérative.
Le RAG est une approche puissante pour combiner les capacités de raisonnement des LLM avec la richesse des données privées dans le monde. En faisant évoluer continuellement ses techniques et méthodologies, le RAG reste un domaine passionnant avec de nombreuses applications.
Comprendre le RAG en quelques minutes, c’est possible en écoutant notre podcast.