? Génération augmentée de récupération impressionnante (RAG)
Ce référentiel contient une liste impressionnante organisée et des informations générales sur les applications de génération augmentée par récupération (RAG) dans Generative AI.
La génération augmentée par récupération (RAG) est une technique d'IA générative dans laquelle un contexte supplémentaire est récupéré à partir de sources externes pour enrichir le processus de génération de grands modèles linguistiques (LLM). Cette approche permet aux LLM d'incorporer des informations à jour, spécifiques ou sensibles qui pourraient leur manquer dans leurs seules données de pré-formation.
Contenu
- Informations générales sur RAG
- Approches
- ? Cadres qui facilitent RAG
- Techniques
- Métrique
- ? Bases de données
Informations générales sur RAG
Dans les approches RAG traditionnelles, un cadre de base est utilisé pour récupérer des documents qui enrichissent le contexte d'une invite LLM. Par exemple, lorsqu'il pose des questions sur les matériaux nécessaires à la rénovation d'une maison, le LLM peut posséder des connaissances générales en matière de rénovation mais manquer de détails spécifiques sur la maison en question. La mise en œuvre d'une architecture RAG permet une recherche et une récupération rapides des documents pertinents, tels que des plans, pour offrir des réponses plus personnalisées. Cela garantit que le LLM intègre des informations spécifiques aux besoins de rénovation, améliorant ainsi la précision de ses réponses.
Une implémentation RAG typique suit ces étapes clés :
- Divisez la base de connaissances : divisez le corpus de documents en morceaux plus petits et gérables.
- Créer des intégrations : appliquez un modèle d'intégration pour transformer ces morceaux de texte en intégrations vectorielles, capturant leur signification sémantique.
- Stocker dans une base de données vectorielle : enregistrez les intégrations dans une base de données vectorielle, permettant une récupération rapide basée sur la similarité sémantique.
- Gérer les requêtes des utilisateurs : convertissez la requête de l'utilisateur en une intégration en utilisant le même modèle que celui appliqué aux morceaux de texte.
- Récupérez les données pertinentes : recherchez dans la base de données vectorielles les intégrations qui correspondent étroitement à l'intégration de la requête en fonction de la similarité sémantique.
- Améliorez l'invite : intégrez les morceaux de texte les plus pertinents dans l'invite du LLM pour fournir un contexte précieux pour générer une réponse.
- Générer une réponse : le LLM exploite l'invite augmentée pour fournir une réponse précise et adaptée à la requête de l'utilisateur.
Approches
Les implémentations de RAG varient en complexité, depuis la simple récupération de documents jusqu'aux techniques avancées intégrant des boucles de rétroaction itératives et des améliorations spécifiques au domaine. Les approches peuvent inclure :
- Corrective RAG (CRAG) : Méthodes pour corriger ou affiner les informations récupérées avant intégration dans les réponses LLM.
- Retrieval-Augmented Fine-Tuning (RAFT) : techniques permettant d'affiner les LLM spécifiquement pour les tâches améliorées de récupération et de génération.
- RAG auto-réfléchissant : modèles qui ajustent dynamiquement les stratégies de récupération en fonction des commentaires sur les performances du modèle.
- RAG Fusion : techniques combinant plusieurs méthodes de récupération pour une meilleure intégration du contexte.
- Récupération temporelle augmentée (TAR) : prise en compte des données sensibles au temps dans les processus de récupération.
- Plan-then-RAG (PlanRAG) : stratégies impliquant des étapes de planification avant d'exécuter RAG pour des tâches complexes.
- GraphRAG : une approche structurée utilisant des graphiques de connaissances pour une intégration contextuelle et un raisonnement améliorés.
- FLARE - Une approche qui intègre la génération augmentée par récupération active pour améliorer la qualité des réponses.
- Récupération contextuelle : améliore la récupération en ajoutant un contexte pertinent aux morceaux de document avant la récupération, améliorant ainsi la pertinence des informations récupérées à partir de grandes bases de connaissances.
? Cadres qui facilitent RAG
- Haystack - Cadre d'orchestration LLM pour créer des applications LLM personnalisables et prêtes pour la production.
- LangChain - Un framework polyvalent pour travailler avec les LLM.
- Semantic Kernel - Un SDK de Microsoft pour développer des applications d'IA générative.
- LlamaIndex - Framework pour connecter des sources de données personnalisées aux LLM.
- Cognita - Framework RAG open source pour créer des applications modulaires et prêtes pour la production.
- Verba - Application open source pour RAG prête à l'emploi.
- Mastra - Framework Typescript pour la création d'applications d'IA.
Techniques
Nettoyage des données
- Techniques de nettoyage des données : étapes de prétraitement pour affiner les données d'entrée et améliorer les performances du modèle.
Invite
- Stratégies
- Marquage et étiquetage : ajout de balises ou d'étiquettes sémantiques aux données récupérées pour améliorer la pertinence.
- Raison et action (ReAct) (ReAct) : intégration de capacités de raisonnement pour guider les réponses LLM en fonction du contexte récupéré.
- Chaîne de pensée (CoT) : encourager le modèle à réfléchir aux problèmes étape par étape avant de fournir une réponse.
- Chaîne de vérification (CoVe) : inviter le modèle à vérifier l'exactitude de chaque étape de son raisonnement.
- Auto-cohérence : générer plusieurs chemins de raisonnement et sélectionner la réponse la plus cohérente.
- Invites Zero-Shot : conception d'invites qui guident le modèle sans aucun exemple.
- Invite en quelques étapes : fournir quelques exemples dans l'invite pour démontrer le format de réponse souhaité.
- Mise en cache
- Mise en cache des invites : optimise les LLM en stockant et en réutilisant les états d'attention précalculés.
Morceau
- Morceau de taille fixe
- Diviser le texte en segments de taille cohérente pour un traitement efficace.
- Divise les textes en morceaux en fonction de leur taille et de leur chevauchement.
- Exemple : Fractionné par caractère (LangChain).
- Exemple : SentenceSplitter (LlamaIndex).
- Blocage récursif
- Segmentation hiérarchique utilisant des algorithmes récursifs pour des structures de documents complexes.
- Exemple : divisé de manière récursive par caractère (LangChain).
- Segmentation basée sur des documents
- Segmentation des documents en fonction de métadonnées ou d'indices de formatage pour une analyse ciblée.
- Exemple : MarkdownHeaderTextSplitter (LangChain).
- Exemple : gérez les intégrations d'images et de texte avec des modèles comme OpenCLIP.
- Morceau sémantique
- Extraire des sections significatives basées sur la pertinence sémantique plutôt que sur des limites arbitraires.
- Morceau agentique
- Méthodes de segmentation interactives où les LLM guident la segmentation.
Intégrations
- Sélectionnez le modèle d'intégration
- Classement MTEB : explorez le benchmark de Hugging Face pour évaluer les intégrations de modèles.
- Intégrations personnalisées : développez des intégrations sur mesure pour des domaines ou des tâches spécifiques afin d'améliorer les performances du modèle. Les intégrations personnalisées peuvent capturer la terminologie et les nuances spécifiques au domaine. Les techniques incluent le réglage fin des modèles pré-entraînés sur votre propre ensemble de données ou la formation d'intégrations à partir de zéro à l'aide de frameworks tels que TensorFlow ou PyTorch.
Récupération
- Méthodes de recherche
- Index plat du magasin vectoriel
- Forme de récupération simple et efficace.
- Le contenu est vectorisé et stocké sous forme de vecteurs de contenu plat.
- Récupération d'index hiérarchique
- Limiter hiérarchiquement les données à différents niveaux.
- Exécute les récupérations par ordre hiérarchique.
- Questions hypothétiques
- Utilisé pour augmenter la similarité entre les morceaux de base de données et les requêtes (idem avec HyDE).
- LLM est utilisé pour générer des questions spécifiques pour chaque morceau de texte.
- Convertit ces questions en intégrations vectorielles.
- Pendant la recherche, fait correspondre les requêtes à cet index de vecteurs de questions.
- Intégrations de documents hypothétiques (HyDE)
- Utilisé pour augmenter la similarité entre les morceaux de base de données et les requêtes (idem avec les questions hypothétiques).
- LLM est utilisé pour générer une réponse hypothétique basée sur la requête.
- Convertit cette réponse en une intégration vectorielle.
- Compare le vecteur de requête avec le vecteur de réponse hypothétique.
- Récupération petite à grande
- Améliore la récupération en utilisant des morceaux plus petits pour la recherche et des morceaux plus gros pour le contexte.
- Les morceaux enfants plus petits font référence aux morceaux parents plus gros
- Reclassement : améliore les résultats de recherche dans les pipelines RAG en réorganisant les documents initialement récupérés, en donnant la priorité à ceux les plus pertinents sémantiquement pour la requête.
Métrique
Métriques de recherche
Ces métriques sont utilisées pour mesurer la similarité entre les intégrations, ce qui est crucial pour évaluer l'efficacité avec laquelle les systèmes RAG récupèrent et intègrent des documents ou des sources de données externes. En sélectionnant des métriques de similarité appropriées, vous pouvez optimiser les performances et la précision de votre système RAG. Vous pouvez également développer des mesures personnalisées adaptées à votre domaine ou niche spécifique pour capturer les nuances spécifiques au domaine et améliorer la pertinence.
Similitude cosinus
- Mesure le cosinus de l'angle entre deux vecteurs dans un espace multidimensionnel.
- Très efficace pour comparer des intégrations de texte où la direction des vecteurs représente des informations sémantiques.
- Couramment utilisé dans les systèmes RAG pour mesurer la similarité sémantique entre les intégrations de requêtes et les intégrations de documents.
Produit scalaire
- Calcule la somme des produits des entrées correspondantes de deux séquences de nombres.
- Équivalent à la similarité cosinus lorsque les vecteurs sont normalisés.
- Simple et efficace, souvent utilisé avec l'accélération matérielle pour les calculs à grande échelle.
Distance euclidienne
- Calcule la distance en ligne droite entre deux points dans l'espace euclidien.
- Peut être utilisé avec des incorporations mais peut perdre de son efficacité dans les espaces de grande dimension en raison de la « malédiction de la dimensionnalité ».
- Souvent utilisé dans les algorithmes de clustering comme les K-means après réduction de dimensionnalité.
Similitude avec Jaccard
- Mesure la similarité entre deux ensembles finis comme la taille de l'intersection divisée par la taille de l'union des ensembles.
- Utile pour comparer des ensembles de jetons, comme dans les modèles de sacs de mots ou les comparaisons de n-grammes.
- Moins applicable aux intégrations continues produites par les LLM.
Remarque : La similarité cosinusoïdale et le produit scalaire sont généralement considérés comme les mesures les plus efficaces pour mesurer la similarité entre les intégrations de grande dimension.
Mesures d’évaluation des réponses
Ces métriques évaluent la qualité et la pertinence des réponses générées à partir de votre système RAG, en évaluant leur précision, leur pertinence contextuelle et leur fiabilité. En appliquant ces mesures d'évaluation, vous pouvez obtenir un aperçu des performances de votre système et identifier les domaines à améliorer.
- Analyse comparative automatisée
- Les humains comme juges
- Des modèles comme juges
Outils
Ces outils peuvent vous aider à évaluer les performances de votre système RAG, du suivi des commentaires des utilisateurs à la journalisation des interactions avec les requêtes et à la comparaison de plusieurs mesures d'évaluation au fil du temps.
- LangFuse : outil open source pour le suivi des métriques LLM, l'observabilité et la gestion des invites.
- Ragas : Framework qui permet d'évaluer les pipelines RAG.
- LangSmith : Une plate-forme pour créer des applications LLM de qualité production, vous permet de surveiller et d'évaluer de près votre application.
- Hugging Face Evaluate : Outil permettant de calculer des métriques telles que BLEU et ROUGE pour évaluer la qualité du texte.
- Pondérations et biais : suit les expériences, enregistre les métriques et visualise les performances.
? Bases de données
La liste ci-dessous présente plusieurs systèmes de bases de données adaptés aux applications de génération augmentée de récupération (RAG). Ils couvrent une gamme de cas d'utilisation de RAG, contribuant au stockage et à la récupération efficaces des vecteurs pour générer des réponses ou des recommandations.
Repères
- Choisir une base de données vectorielles
Moteurs de traitement et de service de données distribués :
- Apache Cassandra : système de gestion de bases de données NoSQL distribué.
- MongoDB Atlas : service de base de données multimodèle distribué à l'échelle mondiale avec recherche vectorielle intégrée.
- Vespa : moteur de traitement et de service de Big Data open source conçu pour les applications en temps réel.
Moteurs de recherche dotés de capacités vectorielles :
- Elasticsearch : fournit des capacités de recherche vectorielle ainsi que des fonctionnalités de recherche traditionnelles.
- OpenSearch : moteur de recherche et d'analyse distribué, dérivé d'Elasticsearch.
Bases de données vectorielles :
- Chroma DB : une base de données d'intégration open source native pour l'IA.
- Milvus : une base de données vectorielles open source pour les applications basées sur l'IA.
- Pinecone : une base de données vectorielles sans serveur, optimisée pour les flux de travail d'apprentissage automatique.
- Recherche de vecteurs Oracle AI : intègre des fonctionnalités de recherche de vecteurs dans Oracle Database pour des requêtes sémantiques basées sur des intégrations de vecteurs.
Extensions de bases de données relationnelles :
- Pgvector : une extension open source pour la recherche de similarité vectorielle dans PostgreSQL.
Autres systèmes de bases de données :
- Azure Cosmos DB : service de base de données multimodèle distribué à l’échelle mondiale avec recherche vectorielle intégrée.
- Couchbase : une base de données cloud NoSQL distribuée.
- Lantern : un moteur de recherche personnel respectueux de la confidentialité.
- LlamaIndex : utilise un magasin de vecteurs en mémoire simple pour une expérimentation rapide.
- Neo4j : système de gestion de bases de données graphiques.
- Qdrant : Une base de données vectorielles open source conçue pour la recherche de similarité.
- Redis Stack : un magasin de structures de données en mémoire utilisé comme base de données, cache et courtier de messages.
- SurrealDB : une base de données multimodèle évolutive optimisée pour les données de séries chronologiques.
- Weaviate : un moteur de recherche de vecteurs open source et natif du cloud.
Bibliothèques et outils de recherche de vecteurs :
- FAISS : une bibliothèque pour une recherche de similarité et un regroupement efficaces de vecteurs denses, conçue pour gérer des ensembles de données à grande échelle et optimisée pour une récupération rapide des voisins les plus proches.