Le modèle de génération de Retrieval-Augmented (RAG) est une approche standard de la création d’applications qui utilisent des modèles de langage pour traiter des données spécifiques ou propriétaires que le modèle ne connaît pas déjà. L’architecture est simple, mais la conception, l’expérimentation et l’évaluation des solutions RAG qui s’intègrent dans cette architecture impliquent de nombreuses considérations complexes qui bénéficient d’une approche scientifique rigoureuse.
Cet article est l’introduction d’une série. Chaque article de la série couvre une phase spécifique de la conception de la solution RAG.
Les autres articles de cette série couvrent les considérations suivantes :
- Guide pratique pour déterminer les documents de test et les requêtes à utiliser lors de l’évaluation
- Comment choisir une stratégie de segmentation
- Comment déterminer quels segments vous devez enrichir et comment les enrichir
- Comment choisir le modèle d’incorporation approprié
- Comment configurer l’index de recherche
- Comment déterminer les recherches, telles que le vecteur, le texte intégral, l’hybride et les recherches manuelles multiples, vous devez effectuer
- Comment évaluer chaque étape
Architecture RAG
Flux d’application RAG
Le flux de travail suivant décrit un flux de haut niveau pour une application RAG.
- L’utilisateur émet une requête dans une interface utilisateur d’application intelligente.
- L’application intelligente fait un appel API à un orchestrateur. Vous pouvez implémenter l’orchestrateur avec des outils ou des plateformes tels que le noyau sémantique, le flux d’invite Azure Machine Learning ou LangChain.
- L’orchestrateur détermine la recherche à effectuer sur Azure AI Search et émet la requête.
- L’orchestrateur empaquette le N résultats de la requête. Il empaquette les premiers résultats et la requête en tant que contexte dans une invite et envoie l’invite au modèle de langage. L’orchestrateur renvoie la réponse à l’application intelligente pour que l’utilisateur la lise.
Flux du pipeline de données RAG
Le flux de travail suivant décrit un flux de haut niveau pour un pipeline de données qui fournit des données de base pour une application RAG.
- Les documents sont soit poussés, soit tirés dans un pipeline de données.
- Le pipeline de données traite chaque document individuellement en effectuant les étapes suivantes :
- Document segmenté : décompose le document en parties sémantiquement pertinentes qui ont idéalement une idée ou un concept unique.
- Enrichir les blocs : ajoute des champs de métadonnées créés par le pipeline en fonction du contenu des blocs. Le pipeline de données classe les métadonnées en champs discrets, tels que le titre, le résumé et les mots clés.
- Segments incorporés : utilise un modèle d’incorporation pour vectoriser le bloc et tous les autres champs de métadonnées utilisés pour les recherches vectorielles.
- Conserver les blocs : stocke les blocs dans l’index de recherche.
Considérations de conception et d’évaluation de RAG
Vous devez prendre différentes décisions d’implémentation lorsque vous concevez votre solution RAG. Le diagramme suivant illustre certaines des questions que vous devez poser lorsque vous prenez ces décisions.
La liste suivante fournit une brève description de ce que vous devez faire pendant chaque phase du développement de solutions RAG.
Pendant la phase de préparation , vous devez :
- Déterminez le domaine de la solution. Définissez clairement les exigences métier de la solution RAG.
- Rassemblez des documents de test représentatifs. Rassemblez des documents de test pour votre solution RAG qui sont représentatifs de votre collection de documents.
- Rassemblez des requêtes de test. Rassemblez des informations et testez des requêtes et générez des requêtes synthétiques que vos documents ne couvrent pas.
Pendant la phase de segmentation , vous devez :
- Comprendre l’économie de la segmentation. Comprenez les facteurs à prendre en compte lorsque vous évaluez le coût global de votre solution de segmentation pour votre collection de texte.
- Effectuez une analyse de document. Posez les questions suivantes pour vous aider à prendre des décisions lorsque vous analysez un type de document :
- Quel contenu du document voulez-vous ignorer ou exclure ?
- Quel contenu voulez-vous capturer en blocs ?
- Comment voulez-vous segmenter ce contenu ?
- Comprendre les approches de segmentation. Découvrez les différentes approches de segmentation, notamment les approches basées sur des phrases, de taille fixe et personnalisées, ou à l’aide de l’augmentation du modèle de langage, de l’analyse de la disposition des documents et des modèles Machine Learning.
- Découvrez comment la structure du document affecte la segmentation. Choisissez une approche de segmentation basée sur le degré de structure du document.
Pendant la phase d’enrichissement de segments , vous devez :
- Nettoyer les blocs. Implémentez des approches de nettoyage pour éliminer les différences qui n’affectent pas la signification du texte. Cette méthode prend en charge les correspondances de proximité.
- Augmentez les blocs. Envisagez d’augmenter vos données de bloc avec des champs de métadonnées courants et de comprendre leurs utilisations potentielles dans la recherche. Découvrez les outils ou techniques couramment utilisés pour générer du contenu de métadonnées.
Pendant la phase d’incorporation , vous devez :
- Comprendre l’importance du modèle d’incorporation. Un modèle d’incorporation peut affecter considérablement la pertinence de vos résultats de recherche vectorielle.
- Choisir le modèle d’incorporation approprié pour votre cas d’usage.
- Évaluez les modèles d’incorporation. Évaluez les modèles incorporés en visualisant les incorporations et en calculant les distances d’incorporation.
Pendant la phase de récupération des informations , vous devez :
- Créez un index de recherche. Appliquez les configurations de recherche vectorielle appropriées à vos champs vectoriels.
- Comprendre les options de recherche. Considérez les différents types de recherches, notamment le vecteur, le texte intégral, l’hybride et les recherches manuelles multiples. Découvrez comment fractionner une requête en sous-requêtes et filtrer des requêtes.
- Évaluez les recherches. Utilisez les méthodes d’évaluation de récupération pour évaluer votre solution de recherche.
Pendant la phase d’évaluation de bout en bout du modèle de langage
, vous devez : - Comprendre les métriques d’évaluation du modèle de langage. Il existe plusieurs métriques, notamment l’importance, l’exhaustivité, l’utilisation et la pertinence, que vous pouvez utiliser pour évaluer la réponse du modèle de langage.
- Comprendre les métriques de similarité et d’évaluation. Vous pouvez utiliser des métriques de similarité et d’évaluation pour évaluer votre solution RAG.
- Comprendre l’importance de la documentation, des rapports et de l’agrégation. Documentez les hyperparamètres et les résultats de l’évaluation. Agréger les résultats de plusieurs requêtes et visualiser les résultats.
- Utilisez l’accélérateur d’expérience RAG. Vous pouvez utiliser le dépôt GitHub de l’accélérateur d’expérience RAG
pour aider votre équipe à trouver les meilleures stratégies d’implémentation RAG en exécutant plusieurs expériences, persistance et évaluation des résultats.
Approche structurée
En raison du nombre d’étapes et de variables, il est important de suivre un processus d’évaluation structuré pour votre solution RAG. Évaluez les résultats de chaque étape et apportez des modifications en fonction de vos besoins. Vous devez évaluer chaque étape indépendamment pour l’optimisation, mais n’oubliez pas que le résultat final correspond à l’expérience de vos clients. Veillez à comprendre toutes les étapes de ce processus avant de déterminer vos propres critères d’acceptation pour chaque étape.
Contributeurs
Cet article est géré par Microsoft. Il a été écrit à l’origine par les contributeurs suivants.
Auteurs principaux :
- Raouf Aliouat | Ingénieur logiciel II
- Rob Bagby | Principal Architecture Center Content Lead
- Prabal Deb | Ingénieur logiciel principal
- Chad Kittel | Ingénieur logiciel principal
- Ritesh Modi | Ingénieur principal
- Ryan Pfalz | Responsable du programme technique senior
- Randy Thurman | Architecte de solution cloud IA principal
Pour afficher les profils LinkedIn non publics, connectez-vous à LinkedIn.
Étapes suivantes
- RAG (Génération augmentée de récupération) dans Azure AI Search
- Génération augmentée de récupération et index