La première phase du développement et de l’expérimentation de la génération augmentée par récupération (RAG) est la phase de préparation. Au cours de cette phase, vous définissez d’abord le domaine d’activité de votre solution. Une fois le domaine défini, vous entamez le processus parallèle d'analyse des documents, de collecte des documents et d'élaboration d'exemples de questions pertinentes pour le domaine. Les étapes sont effectuées en parallèle car elles sont interconnectées. L'analyse des documents vous aide à déterminer les documents et les questions de test que vous devez rassembler. Ces deux éléments sont liés : les questions doivent pouvoir trouver une réponse dans le contenu des documents et les documents doivent répondre à des questions pertinentes.
Cet article fait partie d’une série. Lisez l’introduction.
Définir le domaine de la solution
La première étape de ce processus est de définir clairement les exigences métier pour la solution ou le cas d’utilisation. Ces exigences aident à déterminer quels types de questions la solution doit aborder et quelles sources de données ou documents aident à répondre à ces questions. Dans les phases ultérieures, le domaine de la solution aide à informer votre stratégie de modèle d’embedding
Analyse de documents
L'objectif de l'analyse des documents est de rassembler suffisamment d'informations sur votre corpus de documents pour vous aider à comprendre :
- Les différentes classifications de documents - Par exemple, avez-vous des spécifications de produits, des rapports trimestriels, des contrats d’assurance automobile, des contrats d’assurance maladie, etc.
- Les différents types de documents : par exemple, avez-vous des fichiers PDF, des fichiers Markdown, des fichiers HTML, des fichiers DOCX, et ainsi de suite.
- Les contraintes de sécurité - Par exemple, si les documents sont accessibles au public ou non, ou s'ils nécessitent une authentification et une autorisation pour y accéder.
- La structure des documents - Par exemple, la longueur des documents, les coupures de rubriques, et s'ils comportent des images ou des données tabulaires pertinentes pour le contexte.
Les sections suivantes examinent comment ces informations permettent d'éclairer vos stratégies de chargement et de segmentation.
Classification des documents
Vous devez comprendre les différentes classifications des documents pour vous aider à déterminer le nombre de documents de test dont vous avez besoin. Cette partie de l'analyse doit vous indiquer non seulement les classifications de haut niveau, telles que l'assurance ou la finance, mais aussi les sous-classifications, telles que les documents relatifs à l'assurance maladie par rapport à ceux relatifs à l'assurance automobile. Vous devez également comprendre si les sous-classifications ont des structures ou des contenus différents.
L'objectif est de comprendre toutes les variantes de documents dont vous disposez. Cette compréhension vous aidera à déterminer le nombre et la répartition des documents de test dont vous avez besoin. Vous ne voulez pas surreprésenter ou sous-représenter une classification de document spécifique dans votre expérimentation.
Types de documents
Comprendre les différents formats de fichiers de votre corpus vous aide à déterminer le nombre et la répartition des documents de test. Par exemple, si vous avez des types de documents PDF et Office Open XML pour les rapports trimestriels, vous avez besoin de documents de test pour chaque type de document. Comprendre vos types de documents vous aide également à comprendre vos exigences techniques pour le chargement et le segmentage de vos documents, telles que les bibliothèques spécifiques adaptées au traitement de ces formats de fichiers.
Contraintes de sécurité
Il est essentiel de comprendre les contraintes de sécurité pour déterminer vos stratégies de chargement et de segmentation. Par exemple, vous devez déterminer si certains ou tous vos documents nécessitent une authentification, une autorisation ou une visibilité sur le réseau. Si les documents se trouvent à l'intérieur d'un périmètre sécurisé, assurez-vous que votre code peut y accéder ou mettez en œuvre un processus de réplication sécurisée des documents vers un emplacement accessible à votre code de traitement.
Sachez que les documents font parfois référence à des supports multimédias, tels que des images ou des sons, qui sont importants dans le contexte du document. Ces supports peuvent également être soumis à des contrôles d'accès similaires à ceux du document lui-même. Si ce support nécessite une authentification ou une ligne de vue réseau, vous devez à nouveau vous assurer que votre code peut accéder au support ou que vous disposez d'un processus antérieur ayant un accès qui peut reproduire ce contenu.
Si votre charge de travail exige que différents utilisateurs n'aient accès qu'à des documents ou segments de documents distincts, assurez-vous de comprendre comment vous allez conserver ces permissions d'accès dans votre solution de segmentation.
Structure du document
Vous devez comprendre la structure du document, y compris la façon dont il est présenté et les types de contenu qu'il contient. La compréhension de la structure et du contenu de vos documents vous aide à prendre les décisions suivantes :
- si le document doit être prétraité pour éliminer les bruits, extraire les médias, reformater ou annoter les éléments à ignorer.
- Ce que vous voulez ignorer ou exclure du document
- les éléments du document que vous souhaitez capturer
- Comment vous voulez fragmenter le document
- Comment traiter les images, les tableaux, les graphiques et les autres médias intégrés ?
Vous trouverez ci-dessous des questions catégorisées qui peuvent vous aider à prendre certaines de ces décisions.
Questions sur les éléments courants que vous pouvez envisager d'ignorer
Certains éléments structurels peuvent ne pas ajouter de sens au document et peuvent être ignorés lors du segmentage. Dans certaines situations, ces éléments peuvent ajouter un contexte précieux et faciliter les requêtes de pertinence dans votre index, mais pas dans toutes. Voici quelques questions sur des fonctionnalités courantes des documents que vous devez évaluer pour déterminer si elles ajoutent de la pertinence ou si elles doivent être ignorées.
- Le document contient-il une table des matières ?
- Y a-t-il des en-têtes et des pieds de page ?
- Y a-t-il des copyrights ou des avertissements ?
- Y a-t-il des notes de bas de page ou des notes de fin ?
- Y a-t-il des filigranes ?
- Y a-t-il des annotations ou des commentaires ?
Questions permettant d'éclairer la stratégie de prétraitement et de segmentation
Les questions suivantes sur la structure du document vous donnent un aperçu qui vous aide à comprendre si vous devez prétraiter le document pour le rendre plus facile à traiter et à informer votre stratégie de segmentation.
- Le document comporte-t-il des données ou des paragraphes en plusieurs colonnes ? Il est préférable de ne pas analyser un contenu multi-colonne comme s’il s’agissait d’une seule colonne.
- Comment le document est-il structuré ? Par exemple, les fichiers HTML utilisent parfois des tableaux pour leur mise en page, qu'il convient de distinguer des données tabulaires intégrées.
- Combien de paragraphes y a-t-il ? Quelle est la longueur des paragraphes ? Les paragraphes ont-ils une longueur à peu près égale ?
- Quelles langues, variantes de langues ou dialectes sont présents dans les documents ?
- Le document contient-il des caractères Unicode ?
- Comment les chiffres sont-ils formatés ? Utilisent-ils des virgules ou des points décimaux ? Sont-ils cohérents ?
- Qu’est-ce qui est uniforme et qu’est-ce qui ne l’est pas dans le document ?
- Y a-t-il une structure d’en-têtes où une signification sémantique peut être extraite ?
- Y a-t-il des puces ou des indentations significatives ?
Questions sur les images
Comprendre les images de votre document vous aide à déterminer votre stratégie de traitement des images. Vous devez savoir quel type d'images vous avez, si elles ont une résolution suffisante pour être traitées et si l'image contient toutes les informations requises. Les questions suivantes vous aideront à comprendre vos besoins en matière de traitement d'images.
- Le document contient-il des images ?
- Quelle est la résolution des images ?
- Y a-t-il du texte intégré dans les images ?
- Y a-t-il des images abstraites qui n'apportent aucune valeur ajoutée ? Par exemple, les icônes n'apportent aucune valeur sémantique. L'ajout d'une description pour les images peut en fait être préjudiciable, car le visuel de l'icône n'a généralement pas grand-chose à voir avec le contenu du document.
- Quelle est la relation entre l'image et le texte qui l'entoure ? Déterminez si les images ont un contenu autonome ou s'il existe un contexte autour de l'image que vous devez utiliser lorsque vous le transmettez à un grand modèle de langage pour obtenir la représentation textuelle. Les légendes sont un exemple de texte environnant qui peut contenir un contexte précieux non inclus dans l'image.
- Existe-t-il une représentation textuelle riche des images, telle que des descriptions d'accessibilité ?
Questions sur les tableaux, graphiques et autres contenus riches
Comprendre quelles informations sont encapsulées dans les tableaux, les graphiques et autres supports vous aide à comprendre ce que vous voulez traiter et comment vous voulez le faire. Les questions suivantes vous aideront à comprendre vos besoins en matière de traitement des tableaux, graphiques et autres médias.
- Le document contient-il des graphiques avec des chiffres ?
- Le document contient-il des tableaux ?
- Les tableaux sont-ils complexes (tableaux imbriqués) ou non complexes ?
- Y a-t-il des légendes pour les tableaux ?
- Quelle est la longueur des tableaux ? Les tableaux longs peuvent nécessiter la répétition des en-têtes par segments.
- Y a-t-il d’autres types de médias intégrés comme des vidéos ou des audios ?
- Y a-t-il des équations mathématiques ou des notations scientifiques dans le document ?
Collecter des documents de test représentatifs
Dans cette étape, vous collectez des documents qui sont la meilleure représentation des documents que vous utilisez dans votre solution de production. Les documents doivent répondre au cas pratique défini et être capables de répondre aux questions recueillies dans la phase parallèle de collecte des questions.
À propos de l’installation
Considérez ces domaines lors de l’évaluation des documents de test potentiellement représentatifs :
- Pertinence : Les documents doivent répondre aux exigences métier de l’application conversationnelle. Par exemple, si vous créez un chatbot chargé d’aider les clients à effectuer des opérations bancaires, les documents doivent correspondre à cette exigence, tels que des documents montrant comment ouvrir ou fermer un compte bancaire. Les documents doivent pouvoir répondre aux questions de test recueillies dans l’étape parallèle. Si les documents ne contiennent pas les informations pertinentes pour les questions, ils ne peuvent pas produire de réponse valide.
- Représentatif - Les documents doivent être représentatifs des différents types de documents utilisés par votre solution. Par exemple, un document d’assurance automobile est différent d’un document d’assurance santé ou d’assurance vie. Supposons que le cas d'utilisation exige que la solution prenne en charge les trois types de documents et que vous ne disposiez que de deux documents d'assurance automobile. Votre solution serait peu performante pour l'intégrité et l'assurance vie. Vous devriez en avoir au moins deux pour chaque variation.
- Qualité physique du document : Les documents doivent être en bon état. Les images scannées, par exemple, peuvent ne pas permettre d’extraire des informations utilisables.
- Qualité du contenu du document : Les documents doivent avoir un contenu de haute qualité. Il ne doit pas y avoir de fautes d'orthographe ou de grammaire. Les grands modèles de langage ne fonctionnent pas bien si vous leur fournissez un contenu de mauvaise qualité.
Le facteur de succès de cette étape est d’être confiant d’un point de vue qualitatif que vous avez une bonne représentation des documents de test pour votre domaine particulier.
Conseils pour les documents de test
- Préférez les documents réels aux documents synthétiques. Les documents réels doivent passer par un processus de nettoyage pour supprimer les informations personnellement identifiables (PII).
- Pour vous assurer que vous traitez tous les types de scénarios, y compris les scénarios futurs prédits, envisagez d'augmenter sélectivement vos documents avec des données synthétiques.
- Si vous devez utiliser des données synthétiques, faites de votre mieux pour les rendre aussi proches que possible des données réelles.
- Assurez-vous que les documents peuvent répondre aux questions qui sont recueillies.
- Vous devriez avoir au moins deux documents pour chaque variante de document.
- Vous pouvez utiliser des grands modèles de langage ou d’autres outils pour évaluer la qualité des documents.
Collecter des requêtes de test
Au cours de cette étape, vous rassemblez des requêtes de test que vous utilisez pour évaluer vos segments, votre solution de recherche et votre ingénierie de requête. Vous effectuez cette opération en même temps que la collecte des documents représentatifs, car vous ne recueillez pas seulement les requêtes, mais aussi la manière dont les documents représentatifs répondent aux requêtes. Avoir à la fois les requêtes d’échantillon et les parties des documents d’échantillon qui répondent à ces requêtes vous permet d’évaluer chaque étape de la solution RAG tout en expérimentant différentes stratégies et approches.
Collecter les résultats des requêtes de test
Les résultats de cette phase incluent le contenu des étapes Collecter des requêtes de test représentatives et Collecter des documents de test représentatifs. Le résultat est une collection contenant les données suivantes :
- Requête : La question, représentant un prompt potentiel d’un utilisateur légitime.
- Contexte : Une collection de tout le texte réel dans les documents qui répondent à la requête. Pour chaque élément de contexte, vous devez inclure la page et le texte réel.
- Réponse : Une réponse valide à la requête. La réponse peut être un contenu directement issu des documents ou elle peut être reformulée à partir d’un ou plusieurs morceaux de contexte.
Créer des requêtes synthétiques
Il est souvent difficile pour les experts en la matière (SME) d’un domaine particulier de constituer une liste complète de questions pour le cas d’utilisation. Une solution à ce défi est de générer des questions synthétiques à partir des documents de test représentatifs qui ont été recueillis. Voici une approche réelle pour générer des questions synthétiques à partir de documents représentatifs :
Segmenter les documents : Décomposez les documents en segments. Cette étape de chunking n’utilise pas la stratégie de fragmentation pour votre solution globale. Il s'agit d'une étape unique que vous utilisez pour générer des requêtes synthétiques. Le chunking peut être effectué manuellement si le nombre de documents est raisonnable.
Générer des requêtes par segment : Pour chaque segment, générez des requêtes soit manuellement, soit en utilisant un grand modèle de langage. Lors de l’utilisation d’un grand modèle de langage, nous commençons généralement par générer deux requêtes par segment. Le grand modèle de langage peut également être utilisé pour créer la réponse. L’exemple suivant montre un prompt qui génère des questions et des réponses pour un segment.
Please read the following CONTEXT and generate two question and answer json objects in an array based on the CONTEXT provided. The questions should require deep reading comprehension, logical inference, deduction, and connecting ideas across the text. Avoid simplistic retrieval or pattern matching questions. Instead, focus on questions that test the ability to reason about the text in complex ways, draw subtle conclusions, and combine multiple pieces of information to arrive at an answer. Ensure that the questions are relevant, specific, and cover the key points of the CONTEXT. Provide concise answers to each question, directly quoting the text from provided context. Provide the array output in strict JSON format as shown in output format. Ensure that the generated JSON is 100 percent structurally correct, with proper nesting, comma placement, and quotation marks. There should not be any comma after last element in the array. Output format: [ { "question": "Question 1", "answer": "Answer 1" }, { "question": "Question 2", "answer": "Answer 2" } ] CONTEXT:
Vérifier la sortie : Vérifiez que les questions sont pertinentes pour le cas d’utilisation et que les réponses répondent à la question. Cette vérification doit être effectuée par un SME.
Requêtes non traitées
Il est important de recueillir des requêtes auxquelles les documents ne répondent pas, ainsi que des requêtes qui sont traitées. Lorsque vous testez votre solution, en particulier lorsque vous testez le grand modèle de langage, vous devez déterminer comment la solution doit répondre aux requêtes pour lesquelles elle n’a pas de contexte suffisant pour répondre. Les approches pour répondre aux requêtes que vous ne pouvez pas traiter incluent :
- Répondre que vous ne savez pas
- Répondre que vous ne savez pas et fournir un lien où l’utilisateur peut trouver plus d’informations
Recueillez des requêtes de test pour les médias intégrés
Comme pour le texte, vous devez rassembler un ensemble varié de questions qui impliquent l'utilisation des médias intégrés pour générer des réponses très pertinentes. Si vous avez des images avec des graphiques, des tableaux, des captures d'écran, assurez-vous d'avoir des questions qui couvrent tous les cas d'utilisation. Si vous avez déterminé dans la partie « images » de la section « analyse du document » que le texte précédant ou suivant l'image est nécessaire pour répondre à certaines questions, assurez-vous que ces questions figurent dans vos requêtes de test.
Conseils pour les requêtes de test
- Déterminez s'il existe un système contenant des questions de clients réels que vous pouvez utiliser. Par exemple, si vous créez un chatbot pour répondre aux questions des clients, vous pouvez peut-être utiliser les questions des clients provenant de votre service d’assistance, de vos FAQ ou de votre système de billetterie.
- Le client ou le SME pour le cas d’utilisation doit agir comme une porte de qualité pour déterminer si les documents recueillis, les requêtes de test associées et les réponses aux requêtes provenant des documents sont complets, représentatifs et corrects.
- La révision de l’ensemble des questions et des réponses doit être effectuée périodiquement pour s’assurer qu’elles continuent de refléter fidèlement les documents sources.