Améliorer les réponses de l'IA avec la génération augmentée par récupération
Un nouveau cadre améliore les modèles de langage en intégrant des données externes pour plus de précision.
― 7 min lire
Table des matières
La Génération augmentée par récupération (RAG) combine de grands modèles de langage (LLMs) avec des systèmes de récupération d'information pour améliorer la qualité des réponses générées. Cette approche apporte des connaissances externes pour combler les lacunes des données d'Entraînement du modèle. Cet article parle des défis liés aux systèmes RAG, présente un nouveau cadre open-source et expose les résultats d'expériences menées avec ce cadre.
L'importance du RAG
Les LLMs sont puissants mais ont leurs limites. Ils peuvent donner des réponses trompeuses, avoir du mal avec l'exactitude des faits et ne pas avoir accès à des infos en temps réel. Le RAG améliore les performances des LLM en intégrant des données provenant de sources externes. Cette fonctionnalité aide à réduire les erreurs et à augmenter la pertinence du contenu généré.
Défis de la mise en œuvre du RAG
Mettre en place des systèmes RAG, c'est pas simple. Ça implique des décisions complexes qui influencent la performance, nécessitant une bonne compréhension des données et des cas d'utilisation spécifiques. Faire les bons choix dans des domaines comme l'embedding de texte, les algorithmes de récupération et la conception de prompts est crucial.
Un autre défi est d'assurer la reproductibilité. Différentes configurations et ensembles de données peuvent donner des résultats incohérents, rendant difficile pour les chercheurs de reproduire leurs découvertes. Évaluer les systèmes RAG est aussi exigeant, car ça implique d'évaluer à la fois l'exactitude des informations récupérées et la qualité du texte généré.
Présentation d'un nouveau cadre
Pour aider les chercheurs et les développeurs, un nouveau cadre open-source a été créé. Ce cadre vise à faciliter le travail avec le RAG et à le rendre plus efficace. Il intègre différentes étapes, telles que la création de données, l'entraînement du modèle, l'exécution des Inférences et l'évaluation, dans un flux de travail unique et rationalisé.
Le cadre est conçu pour être flexible, permettant aux utilisateurs de le personnaliser selon leurs besoins spécifiques. Il inclut des modules pour la création de données, l'entraînement, l'inférence et l'évaluation. Chaque module peut fonctionner indépendamment tout en contribuant à un processus plus large. Cette modularité permet aux chercheurs d'expérimenter avec différentes configurations et techniques sans avoir à tout recommencer à chaque fois.
Création et traitement des données
Le module de création de données est essentiel pour générer des ensembles de données riches en contexte. Ce module gère diverses tâches, y compris le chargement d'ensembles de données, la normalisation des données, la récupération d'informations provenant de sources externes et la création de prompts. Les données traitées sont enregistrées dans un format cohérent, ce qui est vital pour assurer la compatibilité entre différents modèles.
Le pipeline au sein du module de création de données a deux types d'étapes : globales et locales. Les étapes globales agissent sur l'ensemble de l'ensemble de données, permettant des actions comme le filtrage et l'agrégation de données. Les étapes locales fonctionnent sur des exemples individuels et conviennent idéalement à des tâches comme le traitement de texte et la récupération.
Exemples de tâches que le module de création de données peut effectuer :
- Chargeurs : Ils récupèrent des ensembles de données à partir de sources externes comme Hugging Face ou des fichiers locaux.
- Sélecteurs : Ils filtrent et mélangent les ensembles de données pour un meilleur entraînement.
- Récupérateurs : Ils apportent des informations pertinentes à partir de bases de données externes.
- Prompteurs : Ils formatent les prompts à utiliser dans le modèle.
Le module de traitement peut gérer plusieurs ensembles de données à la fois, ce qui permet des opérations variées et complexes tout en fournissant un cache nécessaire pour l'efficacité.
Entraînement des modèles
Une fois que les données sont préparées, la prochaine étape est l'entraînement des modèles. Le cadre inclut un module d'entraînement qui ajuste les modèles en utilisant les ensembles de données créés lors des étapes précédentes. Ce module utilise des techniques d'entraînement bien établies pour améliorer les performances des modèles dans les contextes RAG.
Les configurations d'entraînement sont flexibles et permettent des personnalisations selon les besoins spécifiques. Les utilisateurs peuvent ajuster des paramètres comme les taux d'apprentissage et les paramètres du modèle pour trouver la configuration optimale pour leurs tâches.
Exécution d'inférences
Après l'entraînement, la prochaine phase est l'exécution des inférences. L'inférence génère des prédictions basées sur les ensembles de données traités. Cette étape est exigeante en ressources et est séparée du processus d'évaluation.
Plusieurs Évaluations peuvent être réalisées sur les résultats produits lors de l'inférence. Cette séparation permet de se concentrer plus clairement sur l'exactitude et l'efficacité.
Évaluation des systèmes RAG
L'évaluation est un aspect critique du processus RAG. Le module d'évaluation évalue la sortie générée par le module d'inférence et applique diverses métriques pour mesurer l'efficacité. Les métriques peuvent évaluer des exemples individuels ou la performance globale du modèle, selon les besoins.
Les métriques incluent :
- Exact Match (EM) : Mesure à quel point la réponse générée correspond à la bonne réponse.
- F1 Score : Un équilibre entre précision et rappel, utile pour comprendre les performances dans les tâches de classification.
- Fidélité et pertinence : Ces métriques évaluent dans quelle mesure la sortie générée est liée au contexte fourni.
Le module d'évaluation prend également en charge un processeur de réponses, qui peut nettoyer et aligner les sorties selon des critères spécifiques. Cette étape de traitement garantit que les résultats sont non seulement précis mais aussi clairs et compréhensibles.
Expérimentations avec les techniques RAG
Pour démontrer les capacités du cadre, plusieurs expériences ont été menées utilisant différentes techniques d'augmentation RAG. Ces expériences comprenaient des configurations où les modèles étaient ajustés et évalués sur des tâches de question-réponse nécessitant des connaissances.
Les expériences ont comparé des modèles de base sans amélioration à ceux qui intégraient des documents externes et des stratégies de raisonnement. Des techniques comme le raisonnement en chaîne de pensées (CoT) ont été utilisées, guidant le modèle à expliquer son raisonnement et à citer des informations pertinentes lors de la production des réponses.
Les résultats ont montré que l'intégration de connaissances externes améliore significativement les performances du modèle. Différentes configurations ont indiqué que certaines méthodes fonctionnaient bien pour certains ensembles de données, tandis que d'autres se comportaient mieux dans d'autres conditions.
Conclusion
Le nouveau cadre introduit vise à simplifier le processus d'augmentation des LLMs pour les applications RAG. Sa structure modulaire permet aux chercheurs de personnaliser et d'expérimenter avec diverses techniques tout en offrant un processus d'évaluation clair pour le contenu récupéré et les réponses générées.
Bien que ce cadre montre un grand potentiel, des efforts continus pour l'évaluer par rapport à des ensembles de données et des tâches variés sont nécessaires. Les plans futurs incluent l'élargissement de la gamme de techniques disponibles et l'amélioration de la facilité d'utilisation pour attirer plus d’utilisateurs.
Dans le domaine de l'intelligence artificielle, la combinaison des LLMs et des systèmes de récupération représente une manière prometteuse d'améliorer les performances. En rendant le RAG plus facile à mettre en œuvre, ce cadre pourrait conduire à des applications IA plus fiables et efficaces dans une grande variété de domaines.
Titre: RAG Foundry: A Framework for Enhancing LLMs for Retrieval Augmented Generation
Résumé: Implementing Retrieval-Augmented Generation (RAG) systems is inherently complex, requiring deep understanding of data, use cases, and intricate design decisions. Additionally, evaluating these systems presents significant challenges, necessitating assessment of both retrieval accuracy and generative quality through a multi-faceted approach. We introduce RAG Foundry, an open-source framework for augmenting large language models for RAG use cases. RAG Foundry integrates data creation, training, inference and evaluation into a single workflow, facilitating the creation of data-augmented datasets for training and evaluating large language models in RAG settings. This integration enables rapid prototyping and experimentation with various RAG techniques, allowing users to easily generate datasets and train RAG models using internal or specialized knowledge sources. We demonstrate the framework effectiveness by augmenting and fine-tuning Llama-3 and Phi-3 models with diverse RAG configurations, showcasing consistent improvements across three knowledge-intensive datasets. Code is released as open-source in https://github.com/IntelLabs/RAGFoundry.
Auteurs: Daniel Fleischer, Moshe Berchansky, Moshe Wasserblat, Peter Izsak
Dernière mise à jour: 2024-08-05 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2408.02545
Source PDF: https://arxiv.org/pdf/2408.02545
Licence: https://creativecommons.org/licenses/by/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.
Liens de référence
- https://huggingface.co/datasets/Tevatron/wikipedia-nq
- https://huggingface.co/datasets/din0s/asqa
- https://huggingface.co/datasets/bigbio/pubmed_qa
- https://huggingface.co/BAAI/llm-embedder
- https://huggingface.co/meta-llama/Meta-Llama-3-8B-Instruct
- https://huggingface.co/microsoft/Phi-3-mini-128k-instruct
- https://huggingface.co/BAAI/bge-small-en-v1.5
- https://github.com/IntelLabs/RAGFoundry
- https://www.latex-project.org/help/documentation/encguide.pdf
- https://huggingface.co/
- https://github.com/huggingface/trl
- https://github.com/confident-ai/deepeval