Outils pour créer des systèmes RAG (Retrieval Augmented Generation)
Voici 12 des meilleurs outils logiciels de RAG, Retrieval Augmentation Generation.
Qu'est-ce que la génération augmentée par récupération ou Retrieval Augmented Generation (RAG) ?
Rapide rappel sur les bases des RAGs
- L'utilisateur rentre son prompt dans une interface de type chatbot
- Le système de RAG réalise une recherche dans la base de l'entreprise (une base de connaissance, une base de données produits, des cours/leçons...) et extrait les contenus les plus pertinents
- Le système RAG transmet ces contenus à un LLM qui formule sa réponse sur base des éléments transmis.
Comment construit-on un système de RAG, cette techno qui permet de contrôler, par exemple, ce qu'un chatbot/LLM d'entreprise répond exactement ?
La Retrieval Augmented Generation (RAG) combine des composants de récupération et de génération pour améliorer les capacités de génération de texte des LLMs.
Les modules de récupération recherchent dans les bases/sources de connaissances les informations pertinentes en fonction des données d'entrée par l'utilisateur en langage naturel
Les modules de génération produisent ensuite des réponses conditionnées par le contexte récupéré (c'est à dire par les informations récupérées des bases de connaissances puisque vectorisées.
Par exemple, dans un scénario de réponse à une question :
- Le récupérateur trouve des passages sur le sujet de la question dans une base de données.
- Le générateur incorpore dans sa réponse des faits/termes tirés des passages retrouvés.
Cela permet d'améliorer la précision en ancrant le contenu dans des connaissances externes. Le générateur peut également référencer des sources, ce qui permet de comprendre comment les conclusions sont tirées. L'utilisateurs comprend alors mieux, d'où les réponses du système d'IA viennent.
La recherche sur les RAG s'est accélérée depuis 2020, les articles ayant été multipliés par 6 entre 2020 et 2022. Des géants de la technologie comme Google, Meta et Microsoft développent activement des techniques de RAG.
12 principaux outils et modèles de RAG
Il existe trois catégories principales de solutions RAG :
1. LLM avec RAG intégré
Certains grands modèles de langage (LLM) offrent désormais des capacités RAG intégrées et permettent d'éviter de tout reconstruire.
Azure Machine Learning
Il permet de développer de la RAG par le biais du studio IA et des SDK d'Azure Cognitive Services.
Offre des modèles préconstruits comme BART-RAG.
ChatGPT
OpenAI a lancé un plugin de récupération pour augmenter les réponses ChatGPT avec des connaissances externes pertinentes. Actuellement en version bêta limitée.
Anthropic's Constitutional AI
Il Utilise un module de récupération entraînés pour fournir des preuves pour les réponses générées. Axé sur la transparence.
Hugging Face's RAG
Peut affiner/fine-tuner les modèles RAG, en fusionnant les technologies DPR et seq2seq, afin d'améliorer à la fois la recherche et la génération de données pour des tâches spécifiques.
2. Framework et bibliothèques RAG
Pour aller plus loin et créer sa propre plateforme de RAG indépendant des systèmes sus-cités,
Ces outils de développement permettent de construire des pipelines RAG personnalisés :
Haystack
Haystack est un Framework qui intègre des modules pour la recherche de documents, la lecture et la génération de réponse de Deepset.
FARM
Bibliothèque Transformer de Deepset pour construire des systèmes RAG en utilisant PyTorch.
REALM (Retrieval-Enhanced Reader for Open-Domain Question Answering)
Toolkit de Google pour la génération de réponse à des questions générales en utilisant des techniques RAG.
LangChain : Permettre l'enchaînement d'étapes, y compris des prompts et le recours à des API externes, pour que les LLM répondent aux questions avec plus de précision et de rapidité.
3. Composants spécifiques RAG
Le développement de système RAG s'appuie sur des bases de données vectorielles et des modèles de récupération spécialisés :
Jina AI
Principale base de données vectorielles open source conçue pour la recherche neuronale. Très performante sur ce type de recherche.
Milvus
Base de données vectorielles optimisée pour la recherche par similarité.
Dense Passage Retrieval (DPR)
Encode les "passages" pour une recherche de similarité sémantique . Développé par Facebook.
ColBERT
Modèle de récupération neuronale de pointe pour l'extraction de passages pertinents.
Développé par Microsoft.
Comment fonctionnent les modèles RAG ?
Les systèmes RAG comportent deux phases clés :
- Récupérer: extraire les informations pertinentes pour l'entrée à l'aide d'algorithmes tels que BM25, DPR ou ColBERT.
- Générer: produire un texte de réponse conditionné par le contexte récupéré.
Sous le capot, ces phases s'appuient sur plusieurs modules techno:
- Recherche sémantique
Des bases de données vectorielles doivent rapidement retrouver les passages pertinents en utilisant des mesures de similarité comme le produit de points ou la distance cosinusoïdale.
- Génération enrichie de connaissances
Le générateur génère sa réponse texte en s'appuyant sur les vecteurs récupérés et avec l'aide d'approches telles que les mécanismes d'attention et l'encodage du contexte.
- Reranking itératif
Certains systèmes effectuent plusieurs cycles de recherche et de génération (et non, un seul), permettant, dans certains cas, de fournir des réponses plus précises les résultats.
- Optimisation multitâche
Entraînement conjoint des composants récupérateur/chercheur et générateur pour une meilleure cohérence.
Voici une esquisse d'une architecture RAG simplifiée :
INTRODUIRE SCHEMA RAG
Comme vous pouvez le voir, RAG combine les forces de la recherche neuronale et de la génération de grands modèles de langage. C'est très intéressant !
5 avantages du RAG
D'après mon expérience de consultant, voici quelques-uns des principaux avantages de RAG :
- Plus grande précision
Le fait de fonder les réponses sur des connaissances externes (au LLM, mais internes à l'entreprise) réduit les problèmes d'hallucination/erreurs des LLM.
- Informations à jour
Le composant de recherche identifie des informations les plus récentes que celle intégrées dans les LLM qui sont limitées aux données utilisées lors de la phase d'entraînement.
- Transparence
La citation des sources permet aux utilisateurs de mieux comprendre l'origine des réponses.
- Personnalisation
Adaptation des réponses à des contextes spécifiques grâce à l'indexation de corpus pertinents.
- Scalabilité
Ce dernier point très technique est intéressant. Les techniques de recherche approximative (nearest neighbors) peuvent aider de réaliser des recherches dans de grands ensembles de données (bases de conaissances).
Dans le contexte de la recherche des plus proches voisins (Approximate nearest neighbor), lorsque la taille de l'ensemble de données augmente ou que la dimensionnalité des données s'accroît, la recherche exacte des plus proches voisins par force brute devient coûteuse en calculs et peu pratique.
Les méthodes de recherche ANN échangent une petite perte de précision contre des gains de performance significatifs. Elles offrent un moyen de trouver rapidement les informations liées à la question de façon large (les voisins les plus proches approximatifs d'un query point), plutôt que de trouver les voisins exacts les plus proches, ce qui est plus coûteux d'un point de vue technique.
Voici quelques façons clés dont la recherche ANN favorise la scalabilité :
- Complexité de calcul réduite
Les algorithmes ANN ont une complexité temporelle sous-linéaire ou logarithmique par rapport à la recherche linéaire par force brute. Cela leur permet de mieux s'adapter à des ensembles de données plus volumineux.
- Space partitioning
De nombreuses méthodes ANN partitionnent l'espace à haute dimension à l'aide de structures de données comme les arbres k-d ou des approches basées sur des graphes. Cela évite d'avoir à comparer la requête à tous les points de données.
- Dimensionality reduction
Des techniques comme la quantification de produits et les codes binaires peuvent mapper des données de haute dimension vers des représentations de dimension inférieure pour une recherche ANN efficace.
- Calcul distribué/parallèle
Certains algorithmes ANN comme les arbres à points de référence peuvent être parallélisés sur plusieurs machines pour traiter des ensembles de données à l'échelle des milliards.