Comment fonctionne le RAG en IA générative ?
Les Modèles de Langage de Grande Taille (LLM) ont révolutionné le domaine de l’intelligence artificielle avec leurs prouesses en compréhension et en génération de texte.
Malgré leur puissance, ces modèles font face à des défis tels que la production de contenus non fondés (hallucinations), le manque de connaissance à jour, et des processus de raisonnement peu transparents et difficiles à tracer. C’est dans ce contexte que le concept de “Génération Augmentée par Récupération” (Retrieval-Augmented Generation, RAG) a émergé comme une solution prometteuse.
Le RAG représente une évolution clé dans l’approche des LLM, en intégrant des connaissances issues de bases de données externes.
Cette méthode améliore non seulement la précision et la crédibilité des modèles, mais elle est particulièrement bénéfique pour les tâches exigeant un niveau élevé de connaissances. Le RAG permet aux modèles de rester constamment à jour et d’intégrer des informations spécifiques à un domaine, fusionnant ainsi les connaissances intrinsèques des LLM avec les vastes et dynamiques répertoires des bases de données externes.
Le plan
Ce billet vise à
- explorer l’évolution des paradigmes RAG, y compris le RAG Naïf, le RAG Avancé, et le RAG Modulaire,
- tout en inspectant les fondements de ces frameworks : les techniques de récupération, de génération et d’augmentation.
- Nous aborderons les technologies de pointe qui sous-tendent ces composants essentiels, fournissant une compréhension approfondie des avancées dans les systèmes RAG.
- Nous examinerons également les métriques et les benchmarks pour évaluer les modèles RAG, ainsi que le cadre d’évaluation le plus récent.
- Enfin, nous évoquerons les pistes de recherche futures, y compris l’identification des contraintes, l’expansion des multimodalités, et la progression de l’infrastructure et de l’écosystème RAG.
1/ Définition
La “Génération Augmentée par Récupération” (Retrieval Augmented Generation – RAG par la suite) est une méthodologie innovante en intelligence artificielle qui enrichit les capacités de génération de texte des modèles de langage en les couplant avec un mécanisme de recherche externe. Au cœur de RAG réside l’idée de combiner les compétences intrinsèques d’un modèle de langage (TAL : Traitement Automatique de la Langue) avec la capacité de puiser dans une vaste étendue de connaissances factuelles et actualisées. Cela se traduit par une synergie où le modèle ne repose pas uniquement sur ce qu’il a “appris” durant sa phase d’entraînement, mais peut également récupérer des informations depuis une base de données externe pour enrichir sa réponse.
Contrairement aux modèles de langage traditionnels qui génèrent des réponses en se fiant exclusivement à leur entraînement préalable sur de grands corpus de texte (GPT3,5, son entrainement, c’est l’équivalent de ramettes de papier empilées sur une hauteur de 100km… GPT4, on ne sait pas, mais probablement plus encore), les RAG intègrent une étape supplémentaire de récupération d’informations. Ils effectuent d’abord une recherche d’informations pertinentes en réponse à une requête, puis utilisent ces données pour guider la génération de texte. Cette approche permet aux modèles RAG de produire des réponses qui sont non seulement contextuellement appropriées mais également factuellement correctes et à jour.
Cette distinction est cruciale car elle résout certains des problèmes les plus épineux associés aux LLM, comme la génération de contenus inexacts ou la difficulté à rester à jour avec les dernières informations : c’est ce qu’on appelle une hallucination. Les RAG offrent alors une voie vers une génération de texte plus fiable et vérifiable, ouvrant la porte à des applications plus exigeantes et sensibles au contexte.
2/ Limitations des LLM
On pourrait écrire tout un livre sur les limitations d’un LLM (ou des applications qui les utilisent) mais allons droit au but dans le contexte du RAG : ces LLM ont rendu possible des conversations complexes et des réponses générées par IA qui semblent naturelles et humaines mais en les testant, mis à part le coté bluffant de la forme et du fond, ce dernier point souffre de limitations qui rendent gênant bon nombre d’applications pratiques.
Généralisation et Contextualisation
Une des limites majeures des LLM est leur tendance à la sur-généralisation. Ces modèles, bien qu’entraînés sur de vastes corpus de données, peuvent échouer à capter les nuances contextuelles spécifiques d’une situation donnée. Ils peuvent fournir des réponses génériques qui, bien que grammaticalement correctes, manquent de pertinence pour les besoins spécifiques de l’utilisateur.
Un LLM est un modèle (de langage) pas une base de connaissance (de règles, de faits, …). En outre, il n’y a aucune intelligence dans un LLM. Il est donc incapable de “prendre du recul“, ou de deviner à priori le contexte. GPT3, 3.5, 4 puis 4-turbo restent néanmoins incroyablement bluffant à notre échelle. Cela est dû notamment à l’arrivée d’une technique, les Transformers, avec un papier des équipes de Google Brain en juin 2017 : “All you need is attention“. Ce n’est pas l’objet du présent billet d’expliquer comment il fonctionne. Reste qu’il s’agit d’un “saut dans une nouvelle dimension“, tant le TAL a essayé des méthodes de compréhension et de travail de la langue depuis 70 ans, sans pour autant arriver à la cheville de ce que fait un GPT4-turbo aujourd’hui. (Je prends GPT4, mais évidemment, Llama, Falcon, Claude, Mistral etc sont de nature équivalente, même si hors spécialisation, GPT4 a ‘un cran d’avance’)
Voyez dans le schéma ci dessous un rapide arbre chronologique du TAL depuis de nombreuses années où on étaient essayés la thérie de la grammaire, le symbolisme, les stats. Les réseaux de neurones eux ont déjà 20 ans pour le NLP !
Gestion des Informations Factuelles
Les LLM luttent également avec la précision factuelle. Leur approche de “one-size-fits-all” pour générer des réponses peut mener à ce que l’on appelle des “hallucinations” (anthropomorphisme, quand tu nous tiens…), où le modèle génère des informations qui semblent plausibles mais qui sont en réalité incorrectes ou fabriquées. Cette tendance peut être particulièrement problématique dans des domaines où l’exactitude est cruciale, comme la médecine ou le droit.
Dans ce cadre, on retrouvera par exemple le récent exemple célèbre d’un avocat américain faisant étudié une situation à GPT4, celui lui ayant répondu de façon très crédible que la stratégie envisagée était non seulement viable mais qu’elle avait déjà été mise en œuvre dans différents cas : malheureusement pour lui (et son client), tout avait été inventé par le LLM (source)
3/ – Exemples d’Erreurs dans tous les sens
les LLM souffrant de beaucoup de biais, nous n’allons pas en faire l’étalage ou le recensement complet (à titre personnel, j’ai ai déjà recensé plus de 50…) et nous allons nous concentrer sur ceux pour lesquels un RAG pourrait être utile.
Ce paragraphe est intéressant à double titre : il permet à la fois de recenser les biais mais aussi de comprendre pourquoi ces biais sont là. Tout n’est pas dû aux bases de connaissances de l’entrainement (BCE) : si une BCE a un biais, l’application verra ce biais ce reproduire. Si une application a un biais, ce n’est pas nécessaire la BCE qui est en cause.
Les exemples de biais sont proposés ci dessus au format suivant :
- le type / concept / principe du biais
- un exemple
- l’explication de la raison de ce biais.
- en quoi le RAG est une solution
3.1/ Concept: Hallucinations factuelles
Exemple: Demander à GPT-4 quand a été construite la “Tour Eiffel de Londres” et obtenir une date précise en réponse.
Explication: Le modèle peut générer des détails plausibles basés sur des patterns linguistiques même si l’information est factuellement incorrecte. Il associe des éléments connus (Tour Eiffel, Londres) pour créer une nouvelle “réalité”.
Solution: Un RAG peut vérifier l’exactitude des faits en consultant des bases de données externes pour corriger ou rejeter les affirmations incorrectes avant la génération du texte.
3.2/ Concept: Réponse hors contexte
Exemple: Demander des conseils pour un système d’exploitation obsolète et recevoir des instructions pour une version moderne.
Explication: Le modèle privilégie souvent les informations plus fréquemment discutées dans le corpus d’entraînement, ignorant les indices contextuels plus rares.
Solution: En intégrant un processus de récupération de données, un RAG peut rechercher et utiliser des informations spécifiques au contexte du système d’exploitation obsolète mentionné, fournissant ainsi une réponse pertinente.
3.3/ Concept: Biais de confirmation
Exemple: Confirmer à tort qu’une fausse affirmation populaire est vraie car elle est souvent répétée en ligne.
Explication: Le modèle suit la fréquence des données d’entraînement, renforçant les affirmations fréquentes sans vérifier leur véracité.
Solution: Grâce à l’accès à des sources d’information externes et actualisées, un RAG peut confronter les affirmations populaires à des faits vérifiés pour éviter de renforcer les biais de confirmation.
3.4/ Concept: Présentation de l’opinion comme fait
Exemple: Décrire une opinion controversée comme un consensus largement accepté.
Explication: Sans discernement des nuances entre opinion et fait, le modèle peut présenter des opinions polarisées comme des vérités établies.
Solution : Un RAG différencie les opinions des faits en récupérant des données de sources crédibles, permettant de tempérer les opinions et de les présenter comme telles plutôt que comme des faits avérés.
3.5/ Concept: Reproduction de stéréotypes
Exemple: Associer des stéréotypes à des groupes spécifiques lors de la description de personnages ou de situations.
Explication: Les modèles apprennent des patterns dans les données existantes, y compris les stéréotypes et les préjugés sociaux.
Solution : En accédant à une variété de sources et de perspectives via la récupération de données, un RAG peut éviter la reproduction de stéréotypes en offrant des représentations plus nuancées et diversifiées.
3.6/ Concept: Plagiat involontaire
Exemple: Générer un texte qui est très similaire à une source non citée.
Explication: En s’appuyant sur des phrases et des structures souvent utilisées, le modèle peut reproduire du contenu existant.
Solution : Un RAG peut limiter le risque de plagiat en récupérant des informations de sources multiples, réduisant ainsi la dépendance à des phrases ou structures spécifiques d’une seule source.
3.7/ Concept: Manque de mise à jour
Exemple: Fournir des informations obsolètes sur des sujets qui ont connu des développements récents.
Explication: Les modèles sont entraînés sur des ensembles de données qui peuvent être datés et ne reflètent pas les informations les plus actuelles.
Solution : Les RAG peuvent s’appuyer sur des informations extraites de bases de données mises à jour en temps réel, ce qui garantit que les connaissances intégrées dans la génération de texte sont actuelles.
3.8/ Concept: Surestimation de la confiance
Exemple: Donner des réponses avec certitude sur des sujets spéculatifs ou inconnus.
Explication: Les modèles peuvent générer des réponses avec une fausse assurance en raison de la tendance à imiter le ton confident de sources autoritaires.
Solution : Les RAG peuvent modérer la confiance de leurs réponses en récupérant et en intégrant des données qui reflètent l’état actuel des connaissances sur un sujet donné.
3.9/ Concept: Interprétation littérale des métaphores
Exemple: Prendre une expression comme “avoir le cœur brisé” au sens littéral et suggérer un traitement médical.
Explication: Les modèles peuvent manquer la compréhension des langages figurés ou des expressions idiomatiques.
Solution : Un RAG est capable d’interroger des bases de données pour trouver le sens usuel d’expressions métaphoriques, permettant une interprétation plus nuancée et moins littérale.
3.10/ Concept: Cohérence narrative faible
Exemple: Raconter une histoire avec des personnages et des événements qui changent de manière incohérente.
Explication: Les LLM peuvent avoir du mal à maintenir la cohérence sur de longs passages, menant à des récits fragmentés ou contradictoires.
Solution : Avec la récupération de données, un RAG peut assurer la cohérence narrative en s’appuyant sur des informations et des contextes externes pour maintenir la logique et la continuité de l’histoire.
Et il existe ainsi encore bien d’autres biais.
4/ Contraintes Techno et éthiques des RAG
Outre les erreurs de contenu, les LLM doivent surmonter des défis techniques, comme la nécessité de vastes quantités de puissance de calcul pour l’entraînement et l’inférence. Ils sont également confrontés à des questions éthiques, telles que la façon dont ils traitent les données sensibles et la manière dont ils peuvent être utilisés pour générer du contenu trompeur ou du désinformation.
Ces limitations nécessitent des modèles plus sophistiqués capables de comprendre et de traiter l’information de manière plus précise et contextuelle. Dans ces cas là également, le RAG peut offrir une piste pour surmonter certaines de ces limites inhérentes aux LLM.
En effet, d’un point de vue technique, bien que l’utilisation de RAG nécessite toujours une certaine puissance de calcul pour la récupération et l’intégration des données, elle peut potentiellement réduire le fardeau global de calcul en limitant la nécessité de générer des réponses entièrement à partir de zéro. En tirant parti des informations externes, les RAG peuvent offrir des réponses plus précises avec un effort de traitement moindre comparé à un LLM fonctionnant isolément.
Sur le plan éthique, l’intégration de RAG présente une opportunité de gérer plus efficacement les données sensibles et de contrer la désinformation. En accédant à des bases de données vérifiées et fiables, les modèles RAG peuvent atténuer le risque de propager des contenus trompeurs ou des fausses informations. De plus, la capacité des RAG à s’appuyer sur des sources d’informations à jour et variées peut contribuer à une représentation plus équilibrée et moins biaisée, répondant ainsi aux préoccupations éthiques liées à la partialité et à l’équité.
Une proposition de travail aux chercheurs couplé aux journalistes : une base de connaissance factuelle, neutre, avec explications (voire même avocat du “pour” et avocat du “contre”) permettrait par exemple, associé à une lecture de faits (de type journalistique, discours politiques etc…) de pouvoir factchecker presque instantanément ces faits à la lumière de cette base de connaissance. (Probablement que la conséquence induite serait la décrédibilisation totale du discours politique, mais bon, c’est un autre sujet n’est ce pas… )
5/ Le RAG, comment ça marche ?
(voix de Michel Chevalet)
L’architecture du RAG se compose principalement de deux composants :
le composant de récupération (retrieval) et
le composant de génération (generation).
Cette structure bidimensionnelle permet aux modèles RAG de tirer parti à la fois des vastes ensembles de données disponibles et des capacités avancées de génération de texte des LLM.
Le “Composant de Récupération”
Le composant de récupération est le cœur de l’approche RAG. Il est conçu pour interroger des bases de données externes, des dépôts d’informations ou des index de documents pour trouver des informations pertinentes en réponse à une requête donnée. Ce processus s’appuie sur des techniques de recherche d’informations avancées, telles que la correspondance de mots-clés, l’analyse sémantique et le filtrage contextuel, pour s’assurer que les données récupérées sont aussi précises et pertinentes que possible.
- Correspondance de Mots-Clés :Cette méthode consiste à identifier et sélectionner des informations basées sur des mots spécifiques ou des phrases-clés. Par exemple, si vous cherchez des informations sur “l’énergie solaire”, le système recherchera et récupérera des documents contenant ces termes exacts. C’est une technique simple et directe, mais elle peut parfois manquer de subtilité dans la compréhension du contexte ou des synonymes.
- Analyse Sémantique :L’analyse sémantique va au-delà de la simple correspondance de mots pour comprendre le sens et la signification derrière les mots utilisés. Elle permet au système de reconnaître que des termes comme “énergie solaire” et “photovoltaïque” sont liés, même s’ils ne sont pas identiques. Cette méthode aide à capturer des informations plus pertinentes en comprenant le contexte et les nuances linguistiques.
- Filtrage Contextuel :Le filtrage contextuel évalue l’environnement dans lequel les mots-clés sont utilisés pour déterminer la pertinence de l’information. Par exemple, il peut distinguer si “Apple” fait référence à la marque d’électronique ou au fruit, en fonction du contexte du document. Cette approche permet d’affiner les résultats de recherche en se concentrant sur les documents qui correspondent le mieux au contexte souhaité.
- Reconnaissance des Entités Nommées :Cette technique identifie et classe les éléments importants dans un texte, tels que les noms de personnes, les organisations, les lieux, les dates, etc. Par exemple, elle peut reconnaître “New York” comme un lieu ou “Apple” comme une organisation. Cela aide à trier et organiser l’information de manière plus efficace, permettant des recherches plus ciblées et pertinentes.
Evidemment, il y a encore d’autres techniques et toutes peuvent être combinées.
Le “Composant de Génération”
Une fois que le composant de récupération a extrait les informations pertinentes, elles sont transmises au composant de génération. Ce dernier est souvent un modèle de langage pré-entraîné, semblable à ceux utilisés dans les LLM traditionnels. Sa tâche est de synthétiser les informations récupérées en une réponse cohérente et fluide. Le composant de génération utilise les informations récupérées comme une base factuelle pour construire sa réponse, ce qui améliore la précision et la pertinence du texte généré.
Interaction entre Récupération et Génération
L’interaction entre les composants de récupération et de génération est cruciale. Le processus n’est pas linéaire mais plutôt itératif. Le modèle de génération peut demander des informations supplémentaires ou des clarifications au modèle de récupération, créant ainsi un flux d’informations bidirectionnel. Cette approche permet une adaptation dynamique à la requête de l’utilisateur, assurant que la réponse générée est non seulement pertinente mais aussi informée par les données les plus actuelles et précises.
L’optimisation de l’architecture RAG implique parfois un entraînement conjoint des composants de récupération et de génération. Cela permet au système d’apprendre comment mieux utiliser les informations récupérées pour améliorer la qualité de la génération de texte. Au fil du temps, le système devient plus adroit à déterminer quelles informations récupérer et comment les intégrer efficacement dans le processus de génération. Dans ce dernier cas, nous sommes déjà dans un cadre de techniques avancées.
Mécanique de la Récupération et Intégration d’Informations dans RAG
Déclenchement de la Récupération
Le processus débute par une requête utilisateur, qui est d’abord analysée par le composant de génération pour comprendre l’intention et les détails clés. Cette compréhension initiale est ensuite transmise au composant de récupération. Ici, la requête est transformée en termes de recherche ou en requêtes sémantiques, conçues pour interroger efficacement la base de données ou l’index de documents.
Recherche et Sélection d’Informations
Le composant de récupération utilise diverses méthodes vues avant pour trouver les informations les plus pertinentes. Il peut également s’appuyer sur des techniques d’apprentissage automatique pour améliorer la pertinence des résultats de recherche en fonction des retours précédents et du contexte de la requête.
Traitement des Informations Récupérées
Une fois que les informations pertinentes sont récupérées, elles sont prétraitées pour être intégrées dans le processus de génération. Cela peut impliquer la condensation des données, l’élimination des redondances et la structuration de l’information de manière à faciliter son utilisation par le composant de génération.
Intégration dans la Génération de Texte
Le composant de génération reçoit alors ces informations structurées et les utilise comme un cadre pour formuler sa réponse. Il les intègre dans le contexte de la requête initiale, en utilisant ses capacités de traitement du langage naturel pour générer une réponse cohérente et contextuellement appropriée.
Révision et Amélioration Iterative
Le processus ne se termine pas avec la première génération de texte. Le système RAG peut évaluer la pertinence de sa réponse et, si nécessaire, initier à nouveau le processus de récupération pour affiner ou compléter les informations. Cette boucle itérative assure que la réponse finale est non seulement pertinente mais aussi la plus informative possible, reflétant une compréhension profonde et actuelle de la requête posée.
Finalement, le RAG peut fonctionner comme un système dynamique et interactif, où la récupération et la génération de données travaillent de concert pour produire des réponses précises et contextualisées. Cette synergie entre récupération et génération est la clé pour surmonter les limitations des modèles de langage traditionnels, offrant une réponse plus riche, informée et adaptée aux besoins spécifiques de l’utilisateur. (fiabilité, temps réel, …)
A noter que cette présentation que je vous fais ici est générique, tant il y a de méthodes, d’algo, de concept, d’objectifs ou d’architecture pour la mise en place d’un RAG. Par la suite, des exemples simples à un peu plus évolués viendront animer cela de façon pragmatique.
6/ Cas d’Usage
6.1. Service Client
Dans le service client, les RAG peuvent fournir des réponses rapides et précises aux requêtes des clients, en puisant dans une vaste base de données de FAQ et de documentation de produits.
6.2. Recherche Académique
Pour la recherche académique, les RAG peuvent aider à synthétiser des informations à partir de multiples sources scientifiques, facilitant la revue de littérature et l’analyse de données complexes.
6.3. Rédaction de Contenu
Les RAG peuvent être utilisés pour générer des contenus informatifs et pertinents, comme des articles de blog, en intégrant des données actualisées et des références vérifiées.
6.4. Assistance Médicale
Dans le domaine médical, les RAG peuvent aider à fournir des conseils préliminaires basés sur des symptômes décrits, en se référant à des bases de données médicales pour des informations précises.
6.5. Éducation et Formation
Les RAG peuvent être utilisés pour créer du matériel pédagogique personnalisé, adaptant les explications et les exemples aux besoins spécifiques des apprenants basés sur des données éducatives.
6.6. Gestion des Médias Sociaux
Les RAG peuvent automatiser et personnaliser la création de contenu pour les médias sociaux, en générant des publications pertinentes et attrayantes basées sur les tendances actuelles et les interactions des utilisateurs.
6.7. Assistance Juridique
Dans le domaine juridique, les RAG peuvent aider à l’analyse de documents légaux et à la fourniture de conseils préliminaires en s’appuyant sur des bases de données de lois et de jurisprudences.
6.8. Traduction et Localisation
Les RAG peuvent améliorer la qualité des traductions en contextualisant les contenus selon les nuances culturelles et linguistiques, en s’appuyant sur des bases de données multilingues.
6.9. Planification et Logistique
Les RAG peuvent optimiser la planification et la gestion logistique en intégrant des données en temps réel sur le trafic, la météo, et les chaînes d’approvisionnement pour des décisions plus informées.
6.10. Développement de Jeux Vidéo et Divertissement
Les RAG peuvent être utilisés dans le développement de jeux vidéo pour créer des scénarios dynamiques et des dialogues interactifs, en s’appuyant sur une grande variété de sources narratives et de données de gameplay.
Dans tous ces cas de figure, vous le comprenez, il s’agit en réalité d’utiliser la connaissance la plus fiable (vraie, réelle, récente, certifiée, etc…) sous la forme de langage naturel à travers une application tout en utilisant la puissance d’un LLM nouvelle génération (GPT-like)
7/ Avantages et Contraintes des RAG
Avantages du RAG
- Pertinence accrue des réponses : Grâce à l’accès à des données externes, les RAG offrent des réponses plus précises et contextuellement adaptées, surpassant les capacités des LLM traditionnels.
- Capacité à rester à jour : Les RAG peuvent se référer à des informations actuelles, garantissant que les réponses reflètent les dernières données disponibles.
- Flexibilité et Adaptabilité : La capacité de RAG à intégrer des sources diverses permet une plus grande adaptabilité à différents contextes et requêtes.
- Amélioration de la fiabilité : En vérifiant les informations à partir de sources externes, les RAG réduisent le risque de propagation de fausses informations ou de biais.
Contraintes restantes
- Intégration de sources d’informations fiables : Identifier et intégrer des bases de données vérifiées et à jour représente un défi majeur pour garantir la qualité des réponses générées.
- Gestion des bases de données de connaissances : La maintenance et la mise à jour des bases de données utilisées par les RAG nécessitent des ressources et une gestion techniques continues.
- Équilibre entre précision et créativité : Trouver le juste milieu entre l’utilisation de données externes pour la précision et la préservation de la créativité et de l’originalité dans la génération de contenu.
- Questions de confidentialité et d’éthique : Gérer les problématiques de confidentialité des données et les questions éthiques liées à l’utilisation de données provenant de sources diverses.
À l’avenir, nous pouvons nous attendre à une intégration plus poussée des RAG avec des techniques d’apprentissage automatique de pointe, telles que l’apprentissage profond et le traitement du langage naturel. Cette synergie permettra de créer des systèmes encore plus intelligents et adaptatifs, capables de comprendre et de répondre aux requêtes avec une précision sans précédent.
A noter que dans le cadre de Gpt4-Turbo, l’intégration avec Bing formule une sorte de RAG temps réel, ce qui est encore un autre cas : il faut aller à chaque requête chercher l’information. Probablement que OpenAI gère des couches de mémorisation.
8/ Les RAG que pour le texte ?
Non évidemment, nous pouvons parfaitement imaginer des situations où aller chercher de l’information dans une base de connaissance externe ne revient pas sous forme de texte uniquement.
Nous pouvons par exemple imaginer que les RAG s’intègrent à des technologies immersives comme la réalité augmentée (RA) et la réalité virtuelle (RV), offrant des expériences utilisateur enrichies. Dans des domaines comme l’éducation ou la formation professionnelle, cela pourrait révolutionner la manière dont les connaissances sont acquises et appliquées.
(Requêtes => RAG => Texte => Image ou séquence)
L’intégration des RAG dans l’IoT pourrait conduire aussi à des environnements domestiques et industriels plus intelligents, où les dispositifs connectés utilisent des informations récupérées en temps réel pour offrir des services personnalisés et proactifs.
(Situation => déclencheurs => requêtes => information => déclencheurs)
Les exemples sont évidemment multiples. Dans la médecine, par exemple, les retours d’un RAG ne sont pas nécessairement sous forme de texte.
9/ Next Steps ?
- Une des priorités dans le développement futur des RAG sera l’amélioration des algorithmes de récupération pour assurer une précision et une pertinence encore plus grandes des informations extraites. Cela implique de perfectionner les méthodes de recherche sémantique et de contextualisation.
Sur ce point, le sujet est bouillant et nulle doute qu’il reste une énorme marge de progression.
- La diversification et l’expansion des bases de données et sources d’informations utilisées par les RAG seront cruciales. Cela permettra non seulement d’augmenter la précision des réponses mais aussi de garantir une couverture plus large de sujets et de domaines.
Cf par exemple ma proposition ci avant de base de faits.
- Les RAG trouveront probablement des applications dans une gamme encore plus large de secteurs, allant de la santé à la finance, en passant par le divertissement et au-delà. Leur capacité à fournir des réponses informées et contextuelles sera un atout majeur dans de nombreux domaines professionnels.
C’est un sujet dont les industriels doivent s’emparer : il y a beaucoup de valeur ajoutée à produire dans ce domaine.
- À mesure que les RAG gagnent en popularité, l’établissement de normes et de protocoles éthiques pour leur utilisation deviendra impératif. Cela garantira que ces technologies sont utilisées de manière responsable et bénéfique pour la société.
De façon connexe : cf le sujet du procès entre OpenAI et le Whashington post : “peut-on tout apprendre de tout le monde, légalement” ?
10/ Schémas
Dans tout ce qui vient d’être dit, il ne faut pas oublier que la plupart des concepts ont été effleurés et en réalité, un “survey complet” des différentes techniques prendrait facilement de quoi remplir une bonne centaines de pages. (sans les schémas)
Par exemple, dans ce qui a été présenté, il y a une indifférenciation faite entre la forme de “RAG naïf” et des usages plus évolués. Comme indiqué avant, dans sa mise en œuvre, aller chercher de l’information dans un RAG pour produire une réponse fiable sous format de texte peut être une simple opération de recherche de similarité brute à partir d’évaluation d’angles (cosinus) entre 2 vecteurs de dimensions 700 à 1500 comme il est possible de mettre en ouvre une architecture complète, dynamique, avec apprentissage etc.
Si nous mettons en œuvre le RAG dans son acception et sa technique les plus simples : LLM + Base de connaissance + similarité, dans un premier temps nous prenons de la connaissance, nous la traitons (lecture / Chunk, embedding, insertion) puis nous utilisons un mécanisme de Reatrival classique avec un LLM : similarité et cosinus.
C’est le RAG ci dessous à gauche.
La partie centrale comme celle de droite montrent que nous pouvons aller plus loin, en ne prenant pas seulement les données comme une simple connaissance mais en effectuant un ensemble de traitements en fonction du besoin. Ces traitements peuvent être éminemment complexes évidemment.
Par exemple, dans l’image ci dessus, lorsque nous parlons de chunk (c’est à dire les composantes de textes séparées les unes des autres d’un texte à vectoriser), vous pouvez avoir des chunks assez longs : vous aurez alors une réponse assez rapide mais peu précise. Si vous optez pour des chunks courts : la réponse sera plus longue à obtenir mais potentiellement plus précise.
Concrétement, si vous mettez “le Tour du monde en 80 jours” de Jules Vernes au format chunk, vous pouvez le faire par phrase, par paragraphes ou par pages : tout dépend de votre objectifs et dans un cadre pro ou industriels, et avec toutes les autres techniques, et comme bien souvent, il n’y a pas vraiment de recette miracles et de “bon paramètres à connaitre” : il y a à mener une phase d’étude / tests / benchmark.
11/ Une mise en oeuvre simple ?
Faisons un petit exemple de mise en œuvre en 3 temps : du simple, du amélioré et avec de l’API (qui a l’intérêt de gérer les sur-couches de traitement de la langue de façon transparente)
la version simple
Dans un premier temps nous préparons la nouvelle connaissance dont il faudra disposer disposera pour les interrogations :
- prendre un pdf (dans l’exemple suivant, nous considérerons que c’est le livre de Jules Vernes : “le tour du monde en 80 jours”.
- le lire et le mettre en chunk (= bout de texte)
- le vectoriser et l’insérer dans une base de données vectorielle
Puis dans un second temps, nous faisons l’interrogation.
Voici donc un code Python relativement simple et très commenté qui décrit les opérations pas à pas.# on installe les bibliothèques pip install fitz openai pinecone-client
Etape 1 : nous préparons notre base de connaissance avec des PDF par exemple.
Comme nous le voyons, il y a 3 fonctions principales :
- prendre le texte et le considérer comme un ensemble de phrases ou paragraphes
- ces ensembles de phrases / paragraphes (= chunks) sont à vectoriser selon un modèle
- l’insérer dans une base vectorielle référente d’un modèle de langage.
Et comment faisons nous l’interrogation ?
Avec le bout de code suivant, qui suit la même logique. (mais à l’envers : au lieu d’insérer après vectorisation, nous allons retirer puis dé-vectoriser)
A ce stade, la réponse ne proposera que les extraits de chunks repérés
Par exemple, à la question : “en combien de jours sera fait le tour du monde”, le programme répondra :
un peu mieux ?
Si vous souhaitez avoir une réponse telle que “le tour du monde se fera en 80 jours (avec éventuellement les sources), il faut ajouter ces lignes de code pour gérer “80 jours” comme une chaine de caractères nécessaire à trouver dans la réponse.
et l’affichage :
Avec une API très haut niveau type GPT4-turbo-api ?
Avec une sur couche de langage naturel directement accessible depuis les API de Open Ai avec la fonction d’interrogation de type RAG (= completion), il est aussi possible, non pas de chercher “une information exacte” mais tout simplement l’information.
La question devient alors : “en combien de temps le tour du monde est il prévu ?”
le code de recherche se fait non pas comme un RAG naïf mais comme un RAG évolué émulé via OPEN AI.
Le code de recherche et la réponse deviennent :
Et cette fois ci, nous avons une vraie interrogation en langage naturel.
Maintenant, vous reprenez tous les cas d’utilisation, “Et voilà”.
(imaginez le site de votre entreprise, de votre mairie, de votre métropole, … etc etc etc qui devient efficacement interrogeable en langage naturel via un simple chatbot.
12/ Un exemple (très) récent.
Lors d’une de mes conférences pour une grande agglomération, que ce soit sur le site de la mairie ou celle de l’agglomération, je recherche la notion de “piscine, horaires etc…”.
Voilà “malheureusement” la réponse à la fois sur le site de la ville et sur le site de la métropole (masquée, ce n’est pas le sujet ici) :
Et pourtant, les données sont contenues à chaque fois dans les sites web.
Une recherche par mots clé ne fonctionnant même pas, autant dire que par langage naturel, c’est encore plus une catastrophe.
Avec un RAG, nous aurions l’intégralité des horaires, des classes de tarifs instantanément. C’est même tellement évidemment qu’après avoir aspiré l’intégralité des deux sites, je les ai RAGuisé et j’ai eu cette information. Et il en est de même pour tout le reste : prendre rdv en ligne, et quelles contraintes pour avoir une place en crèche, et de quoi il a été décidé dans le dernier conseil municipal ou communautaire d’agglomération : j’ai même fait ces interrogations en live pendant la conférence…
13/ Et par rapport au finetunning ?
Le finetunning est une autre technologie, qui, sans permettre de faire la même chose (ça sera l’objet d’un autre billet), est proche. En deux mots, imaginons que vous ayez un réseau de neurones (Vision) qui sache reconnaitre un char d’une voiture. Le finetunning consiste à faire un nouvel entrainement, qui prend acte de la capacité qu’à le réseau de neurones à reconnaitre des voitures et que nous allons “sur entrainer” afin de le spécialiser (par exemple, dans les voitures, nous allons lui faire reconnaitre un sous ensemble “mercedes / audi / bmw”.)
En fonction du besoin, il y a donc parfois intérêt à utiliser un RAG, parfois du finetunning (parfois les deux).
Voici néanmoins un tableau comparatif des deux.
14 Conclusion
Résumé des Points Clés Abordés
Au cours de notre exploration du concept de Retrieval Augmented Generation (RAG), nous avons abordé plusieurs aspects clés de cette technologie innovante en intelligence artificielle. Un RAG représente une évolution significative dans le domaine des modèles de langage, en intégrant la capacité de récupération d’informations à partir de bases de données externes (ou de source presque temps réel, aux temps de vectorisation près) pour améliorer la génération de texte.
Nous avons examiné l’architecture de RAG, qui combine un composant de récupération d’informations avec un composant de génération de texte, et comment cette synergie permet de produire des réponses plus précises et contextuelles. Divers cas d’utilisation de RAG ont été explorés, démontrant son applicabilité dans des secteurs variés.
En outre, nous avons discuté des avantages de RAG, tels que la pertinence accrue des réponses et la capacité à rester à jour avec les informations les plus récentes. Les contraintes restantes, notamment l’intégration de sources d’informations fiables et la gestion des bases de données de connaissances, ont également été soulignés.
En guise d’illustration pratique, nous avons partagé un exemple de code Python pour montrer comment RAG peut être implémenté de manière simple. Ce code démontre comment extraire des informations à partir d’un fichier PDF et les insérer dans une base de données vectorielle comme Pinecone, puis comment interroger cette base pour obtenir des réponses pertinentes à des questions spécifiques. Nous avons aussi évoqué la différence entre RAG et Finetunning.
Et donc ?
La technologie RAG (Retrieval Augmented Generation) représente clairement une avancée significative dans le domaine de l’intelligence artificielle et du traitement du langage naturel en intégrant des connaissances issues de bases de données externes aux capacités intrinsèques des LLM.
Les RAG offrent une solution efficace aux limitations des modèles traditionnels, notamment en termes de précision, de mise à jour des informations et de réduction des biais.
Leur application dans divers domaines, de l’assistance client à la recherche académique, démontre leur polyvalence et leur potentiel à transformer la manière dont nous interagissons avec l’information.
La mise en œuvre, sans être d’une grande complexité peut nécessiter néanmoins un travail d’ingénierie préalable : il est différent de considérer mettre le site web de sa société ou de sa ville dans un RAG pour prendre rendez vous ou demander les documents pour une place en crèche et de mettre les 11 millions de documents de son intranet dont la plupart sont secret défense pour les interroger à des fins autant de formations que d’analyse.
Reste que dans beaucoup de cas, des Poc raisonnables peuvent être montés “dans la journée”. Et leur apport est immédiatement substantiel.
Et vous ?
Afin de poursuivre ma quête de vulgarisation, vous pouvez ci dessous témoigner, soit de l’utilisation déjà faite soit de votre besoin, et surtout de me faire tout commentaire que vous jugerez utile, tout comme l’espace de commentaire ci dessous peut être le lieu d’un jeu de question réponse. (je réponds souvent rapidement).
Pour ma part, je suis tout à fait à l’aise pour vous indiquer que je fais des conférences dans le domaine des IA génératives afin de vous présenter ce sujet (et bien d’autres) à titre d’acculturation : PME, CAC40, Comex etc, mais aussi auprès des collectivités territoriales dont l’organisation et la valeur ajoutée à produire au quotidien sont différentes. Ces conférence d’environ 90min à 2h vous permettent de comprendre l’innovation de rupture en cours à propos des IA génératives et comment vous pouvez vous approprier ces technologies selon vos cas d’usages, autant de fonctionnement que de production de valeur ajoutée.
Source : https://www.linkedin.com/pulse/intelligence-artificielle-rag-vincent-pinte-deregnaucourt-jlkge/