Qu'est-ce que le RAG ? Encore un autre acronyme dont l'industrie de la technologie raffole. RAG signifie génération augmentée par récupération d’information (Retrieval Augmented Generation). Il s'agit d’une structure de système d'IA clé pour exploiter pleinement les possibilités des LLMs avec les données de votre entreprise (LLM signifie grand modèle de langage, Large Language Model, ChatGPT utilise un LLM). RAG fait partie du nouvel acronyme LLMOps (Large Language Model Operations) ou MLOps pour LLMs: un nouvel ensemble d'outils et de bonnes pratiques pour gérer le cycle de vie des applications LLMs, y compris le développement, le déploiement et la maintenance.
Les LLM sont d'énormes modèles d'IA avec des milliards de paramètres. En fonction des modèles, de l'entreprise et du budget dont ils disposent pour le créer, le modèle peut être entrainés une ou deux fois par an. L’entrainement d’un LLM nécessite une quantité importante de GPU pour apprendre à partir de milliards de jetons, c'est-à-dire l'ensemble du contenu Internet. L’entrainement d’un LLM est une tâche assez coûteuse car vous devez louer/posséder un supercalculateur équipé de milliers de GPU et exécuter des tâches d’entrainement pendant des semaines.
C’est pour cela que les LLMs ne sont pas mis à jour quotidiennement et qu’ils souffrent d'une « date limite des connaissances », ce qui signifie qu'ils ont été entrainés sur le contenu Internet jusqu'à la date à laquelle leur formation a commencé avec cet ensemble de données. Toute question sur un sujet qui serait arrivé après cette date est fondamentalement inconnue du modèle. En plus, une autre chose est sûre, c’est que le modèle ne sait pas grand-chose ou rien sur les données de votre entreprise, car vous vous assurez que vos informations propriétaires clés sont sécurisées derrière votre pare-feu.
Questionner les LLMs sur des choses qu'ils ne connaissent pas conduit à des comportements indésirables appelés hallucinations. Les LLMs, étant les meilleurs pour « prédire le prochain jeton » en réponse à votre saisie ou invite, ces LLMs essaieront probablement de générer une suite de jetons non pertinents ou aléatoires, lorsque questionnés sur des informations inconnues. L'utilisateur final peut rapidement se rendre compte de cette sortie erronée si elle/il maitrise le sujet. Sinon, cela pourrait être un problème, par exemple « Un juge sanctionne les avocats pour un mémoire rédigé par l'IA avec de fausses citations ».
Heureusement, si vous fournissez aux LLMs un « contexte » pertinent par rapport aux questions de vos utilisateurs, les LLM seront en mesure de répondre sans hallucinations en extrayant des informations des données de votre entreprise. La récupération des données de l'entreprise est en effet une étape clé du RAG (voir schéma RAG ci-dessous). Le système utilise des encodages de l’information pour la question de l'utilisateur et pour rechercher tous les documents ou parties de documents dont l'encodage est similaire à celui de la question de l'utilisateur. C'est ce qu'on appelle la recherche de similarité.
Même une simple application RAG implique le réglage de nombreux paramètres, composants et modèles différents.
Cela implique que toutes les données de votre entreprise auraient été préalablement traitées et stockées dans une base de données de vecteurs (Vector store). Il s'agit d'une base de données de tous les morceaux de documents stockés indexés par leur encodage. Les embeddings sont eux-mêmes des modèles qui permettent de générer des encodages vectoriels, optimisés pour la recherche de contenu. L'encodage (vecteur de nombres) dénote une signification réelle : par exemple, un roi serait un concept proche de l'homme et de la reine (c'est donc très différent d’une recherche par mot-clé). Certains encodages peuvent utiliser des vecteurs de 4096 nombres pour représenter des parties de texte. Ces vecteurs 4k sont comparés pour trouver les plus proches voisins dans cet espace mathématique gigantesque lors de la recherche de réponses à nos questions.
Juste pour les besoins de la compréhension, nous pourrions réduire le nombre de vecteurs à seulement 2 et utiliser une représentation 2D pour montrer à quel point certains concepts pourraient être codés avec un modèle d'encodage plus simple.
source: Cohere What is semantic search
Notez que les LLM ont des limitations sur la taille du contexte qu'ils peuvent traiter : le modèle GPT d'OpenAI avait une fenêtre de contexte limitée à 2048 jetons. Cela explique pourquoi les documents doivent être découpés en morceaux lors de l’étape d’indexation. Une invite LLM inclut généralement la requête de l'utilisateur et le contexte. Ce contexte lui-même comprend des instructions soigneusement élaborées que le concepteur a testées pour prendre en compte l'objectif de l'application (également appelée ingénierie de prompt). Le contexte pourrait aussi inclure des instruction d'apprentissage, zéro ou peu de coups (zero ou few shot learning) : ce sont des exemples fourni au LLM pour lui apprendre ce qu'il doit faire. Des considérations plus avancées, telles que l'invite « chaine de pensée » (Chain-of-Through), peuvent être utilisées si l'application est un agent d'IA. Tout ce « contexte » (entrées utilisateur + ingénierie de l'invite + morceau de document récupéré) est transmis au LLM pour traitement, puis le LLM fournit sa réponse (lorsque le LLM « a prédit les prochains meilleurs jetons » qui pourraient très probablement suivre l'invite d'entrée).
Les résultats de la recherche de similarité sont également essentiels pour améliorer la réponse du LLM, ce qui peut être fait simplement en listant clairement les documents qui ont servi de base à la génération de la réponse. Cela donne à l'utilisateur final la possibilité de vérifier l'origine des réponses du LLM et d'effectuer une vérification factuelle. Comme mentionné précédemment, les LLM souffrent de ce que nous appelons des hallucinations chaque fois qu'on leur demande de générer du texte sur des sujets qu'ils n'ont pas vus pendant leur entrainement ou qui ne leur est pas fourni en contexte. Si vous fournissez à vos utilisateurs un lien vers la partie récupérée du document concerné qui a été traitée par le LLM, ils peuvent lire ce paragraphe du document et vérifier par eux-mêmes que le LMM a fourni une réponse correcte. Les hallucinations sont réduites par le RAG, mais on ne peut pas garantir qu'il n'y en aura pas, donc les documents référencés sont vraiment la clé de la fiabilité du système avec l’humain dans la boucle.
Pour que l'expérience utilisateur soit complète, vous devez fournir une interface utilisateur pour signaler que le LLM n'a pas répondu correctement. C'est l'occasion pour le concepteur d'apprendre de ses utilisateurs et de collecter des données qui pourront ensuite être utilisées pour faire évoluer l'application ou le LLM (prompt avec apprentissage par exemples ou apprentissage fin). De nouvelles demandes peuvent émerger de la part de vos utilisateurs et les concepteurs n'ont peut-être pas pris en compte ces cas d'utilisation. Il serait également utile de recueillir des commentaires positifs de la part de vos utilisateurs finaux, car vous devez absolument créer un ensemble complet de tests avant de déployer votre prochaine version de l'application. L’interface utilisateur d’OpenAI intègre des boutons à proximité de la fenêtre de réponse afin que les utilisateurs puissent facilement fournir des commentaires.
Maintenant que vous comprenez ce qu'est le RAG et comment il fonctionne, voyons pourquoi vous voudriez investir dans un tel système pour que vos employés puissent interagir avec les données de votre entreprise. Peut-être aurais-je dû commencer par ça, non ? Eh bien, j'ai déjà publié un article sur l'IA générative et la productivité, donc je vous laisse le découvrir si ce n’est pas déjà fait. Je veux juste insister maintenant sur un point important qui a été surnommé « l'IA fantôme » (Shadow AI). C’est un terme décrivant l'utilisation non autorisée ou ad hoc de l'IA générative en dehors des règles de établis par la gouvernance informatique d'une organisation. En d'autres termes, si vous ne fournissez pas de RAG à vos employés, ils utiliseront ChatGPT, ou des concurrents, ils extrairont vos informations confidentielles manuellement, afin que ChatGPT puisse leur fournir une aide significative. Cela pose un risque sérieux de fuite de vos informations confidentielles vers les entreprises propriétaires des Chatbots disponible en usage gratuit.
Sous le capot, RAG a été popularisé par plusieurs outils open-source. Le plus célèbre est probablement le logiciel LangChain. Il permet d'implémenter RAG (et des agents d'IA plus avancés) en interfaçant les différents composants décrits ci-dessus. Tout d'abord, il est livré avec une impressionnante liste d’ adapteurs de documents prenant en charge l'ingestion de données à partir de toutes les sources auxquelles vous pouvez penser (csv, documents bureautiques, pdfs, notion, slack, ...). C'est déjà ce qui fait que LangChain soit le 1er endroit à regarder de prêt pour son implémentation RAG. Ensuite, LangChain prend en charge le travail avec de nombreux LLM différents (GPT, Llama, ...) qu'ils soient exécutés derrière des API ou déployés « localement » sur vos instances de serveur, ou plus probablement sur votre infrastructure cloud. L'utilisation d'une seule API LLM peut créer un risque SPOF (point de défaillance unique). Beaucoup de gens s'en sont rendu compte lors du « coup » au cours du mois de novembre, très agité, chez OpenAI. Idem pour les embeddings, vous les trouverez tous dans LangChain (Anthropic, Cohere, HuggingFace, Mistral, ... pour en lister d'autres, et pas seulement OpenAI). La plupart des base de données vectorielles sont également intégrés (qdrant, milvus, pomme de pin, weaviate, ... pour n'en nommer que quelques-uns). Il s'agit probablement d'un composant que vous souhaitez sélectionner avec soin en fonction de la quantité d'informations que vous devrez indexer dans votre RAG. Le temps de récupération des documents pertinents sera certainement clé pour le temps de réponse perçu par vos utilisateurs finaux.
C'est tout, j'espère que cela vous a motivé à faire fonctionner RAG avec les données de votre entreprise dès que possible.
N'hésitez pas à contacter Hervé @ biZNov si vous avez des questions.
Et n'oubliez pas de diffuser l'information si vous avez aimé cet article de blog , Il suffit de cliquer sur les boutons de réseaux sociaux ci-dessous. Partager, c'est apprécier :-)
Comments