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 le domaine métier de votre solution. Après avoir défini le domaine, vous collectez des documents, effectuez une analyse des documents et rassemblez des exemples de questions pertinents pour le domaine. Vous effectuez ces étapes en parallèle, car elles sont liées. Par exemple, l’analyse des documents vous aide à déterminer les documents de test et les requêtes de test que vous devez collecter. Les questions que vous posez doivent être accessibles en fonction du contenu dans les documents, et les documents doivent répondre aux questions pertinentes.
Cet article fait partie d’une série. Lisez l’introduction.
Déterminer le domaine de la solution
La première étape de ce processus consiste à définir clairement les exigences métier pour la solution ou le cas d’usage. Ces exigences vous aident à déterminer le type de questions auxquelles la solution doit répondre et les données sources ou documents qui vous aident à répondre à ces questions. Dans les phases ultérieures, le domaine de la solution vous aide à informer votre stratégie de modèle d’incorporation.
Analyse de documents
L’objectif de l’analyse des documents est de recueillir suffisamment d’informations sur votre collection de documents pour vous aider à comprendre :
Les différentes classifications de documents. Par exemple, vous pouvez avoir des spécifications de produits, des rapports trimestriels, des contrats d’assurance automobile ou des contrats d’assurance maladie.
Les différents types de documents. Par exemple, vous pouvez avoir des fichiers PDF, des fichiers Markdown, des fichiers HTML ou des fichiers DOCX.
Contraintes de sécurité. Par exemple, vous pouvez exiger l’authentification et l’autorisation d’accéder aux documents selon qu’ils sont accessibles publiquement.
Structure des documents. Par exemple, la longueur des documents peut varier. Ou ils peuvent avoir des sauts de rubrique, des images contextuellement pertinentes ou des données tabulaires.
Les sections suivantes décrivent comment ces informations vous aident à choisir vos stratégies de chargement et de segmentation.
Classification des documents
Vous devez comprendre les différentes classifications de documents pour vous aider à déterminer le nombre de documents de test dont vous avez besoin. Cette partie de l’analyse doit vous indiquer les classifications de haut niveau, telles que l’assurance ou la finance. Il doit également vous parler des sous-classifications, telles que les documents d’assurance maladie ou les documents d’assurance automobile. Vous souhaitez également savoir si les sous-classifications ont des structures ou du contenu différents.
L’objectif est de comprendre toutes les variantes de document que vous avez. Vous pouvez ensuite déterminer le nombre et la répartition des documents de test dont vous avez besoin. Vous ne souhaitez pas dépasser 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 collection 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 Open XML pour les rapports trimestriels, vous avez besoin de documents de test pour chacun de ces types de documents. Comprendre vos types de documents vous aide également à comprendre vos exigences techniques pour le chargement et la segmentation de vos documents. Ces exigences techniques incluent des bibliothèques spécifiques qui peuvent traiter 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 dans un périmètre sécurisé, assurez-vous que votre code peut y accéder ou implémenter un processus pour répliquer en toute sécurité les documents vers un emplacement accessible pour votre code de traitement.
Les documents font parfois référence à des éléments multimédias tels que des images ou des fichiers audio 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 média nécessite une authentification ou une ligne de vue réseau, vous devez vous assurer que votre code peut accéder au média ou que vous avez un processus en place qui a accès et peut répliquer le contenu.
Si votre charge de travail nécessite que différents utilisateurs aient uniquement accès à des documents ou segments de documents distincts, vérifiez que vous comprenez comment conserver ces autorisations d’accès dans votre solution de segmentation.
Structure du document
Vous devez comprendre la structure du document, y compris sa disposition et les types de contenu du document. La compréhension de la structure et du contenu de vos documents vous aide à prendre les décisions suivantes :
Indique si le document nécessite un prétraitement pour nettoyer le bruit, extraire le média, reformater le contenu ou annoter les éléments à ignorer
Que vous souhaitiez ignorer ou exclure du contenu dans le document
É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 ?
Les sections suivantes répertorient les questions classées que vous pouvez utiliser pour vous aider à effectuer certaines de ces déterminations.
Déterminer les éléments que vous pouvez ignorer
Certains éléments structurels peuvent ne pas ajouter de sens au document et peuvent être ignorés lors du segmentage. Dans certains cas, ces éléments peuvent ajouter un contexte précieux et améliorer la pertinence des requêtes à votre index, mais pas tous. Posez les questions suivantes sur les fonctionnalités courantes du document pour voir s’ils ajoutent de la pertinence ou doivent être ignorés.
Le document contient-il une table des matières ?
Y a-t-il des en-têtes ou 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 ?
Déterminer une stratégie de prétraitement et de segmentation
Les questions suivantes sur la structure du document peuvent vous aider à déterminer si vous devez prétraiter le document pour faciliter le traitement. Ils vous aident également à choisir une stratégie de segmentation.
Existe-t-il des données multicolonnes ou des paragraphes multicolumn ? Vous ne souhaitez pas analyser le contenu multicolum de la même façon que le contenu à colonne unique.
Comment le document est-il structuré ? Par exemple, les fichiers HTML utilisent parfois des tables qui doivent être différenciées des données tabulaires incorporées.
Combien de paragraphes y a-t-il ? Quelle est la longueur des paragraphes ? Les paragraphes sont-ils similaires en longueur ?
Quelles langues, variantes de langue ou dialectes se trouvent dans les documents ?
Le document contient-il des caractères Unicode ?
Comment les chiffres sont-ils formatés ? Les virgules ou les décimales sont-elles comprises ? Sont-ils cohérents ?
Quelles parties du document sont uniformes et quelles parties ne sont pas uniformes ?
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 ?
Déterminer vos besoins en matière de traitement d’images
Comprendre les images de votre document peut vous aider à choisir une stratégie de traitement d’images. Vous devez savoir quel type d’images vous disposez, s’ils disposent d’une résolution suffisante pour traiter 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 peuvent ne pas ajouter de valeur sémantique. L’ajout d’une description pour les icônes peut nuire à votre solution, car l’icône n’est généralement pas pertinente pour le contenu du document.
Quelle est la relation entre les images et le texte environnant ? Déterminez si les images ont du contenu autonome ou s’il existe un contexte autour de l’image que vous devez utiliser lorsque vous le transmettez à un modèle de langage. Les légendes sont un exemple de texte environnant qui peut avoir un contexte précieux qui n’est pas inclus dans l’image.
Existe-t-il une représentation textuelle enrichie, telle que des descriptions d’accessibilité des images ?
Déterminer votre tableau, votre graphique et d’autres exigences en matière de traitement multimédia
Comprendre les informations encapsulées dans les tableaux, les graphiques et d’autres médias peut vous aider à déterminer la façon dont vous souhaitez le traiter. Les questions suivantes vous aident à comprendre votre tableau, votre graphique et d’autres exigences en matière de traitement multimédia.
Le document comporte-t-il des graphiques incluant des nombres ?
Le document contient-il des tableaux ?
Les tables sont-elles complexes, telles que les tables imbriquées ou noncomplexes ?
Y a-t-il des légendes pour les tableaux ?
Combien de temps les tables sont-elles longues ? Les tables longues peuvent nécessiter des en-têtes répétitifs en blocs.
Existe-t-il d’autres types de médias incorporés, tels que des vidéos ou des fichiers audio ?
Existe-t-il des équations mathématiques ou des notations scientifiques dans le document ?
Collecter des documents de test représentatifs
Dans cette étape, rassemblez les documents qui représentent le mieux les documents que vous utilisez dans votre solution. Les documents doivent répondre au cas d’usage défini et répondre aux questions que vous avez collectées dans la phase parallèle de collecte de questions.
À propos de l’installation
Tenez compte des domaines suivants lorsque vous évaluez des documents de test représentatifs potentiels :
Pertinence : Les documents doivent répondre aux exigences métier de l’application conversationnelle. Par exemple, si vous créez un bot de conversation qui aide les clients à effectuer des opérations bancaires, les documents doivent répondre à cette exigence. Par exemple, les documents doivent montrer comment ouvrir ou fermer un compte bancaire. Les documents doivent être en mesure de répondre aux questions de test que vous rassemblez à l’étape parallèle. Si les documents n’ont pas d’informations pertinentes pour les questions, votre solution ne peut pas produire de réponse valide.
Représentation : Les documents doivent représenter les différents types de documents que votre solution utilise. Par exemple, un document d’assurance automobile contient des informations différentes d’un document d’assurance maladie ou vie. Supposons que le cas d’usage nécessite la solution pour prendre en charge les trois types d’assurance, mais que vous n’avez que des documents d’assurance automobile. Votre solution peut s’avérer médiocre pour les opérations d’assurance-vie et de santé. Vous devez disposer d’au moins deux documents pour chaque variante.
qualité des documents physiques : Les documents doivent être en forme utilisable. Les images analysées, par exemple, peuvent ne pas vous permettre d’extraire des informations utilisables.
qualité du contenu du document : Les documents doivent avoir du contenu de haute qualité. Ils ne doivent pas contenir d’fautes d’orthographe ou d’erreurs grammaticales. Les modèles linguistiques ne fonctionnent pas correctement si vous leur fournissez du contenu de qualité médiocre.
Pour collecter correctement des documents de test, vous devez être de confiance qualitative que les documents de test représentent entièrement et avec précision votre domaine spécifique.
Conseils pour les documents de test
Choisissez des documents réels sur des documents synthétiques. Les documents réels doivent passer par un processus de nettoyage pour supprimer les données personnelles.
Envisagez d’augmenter de manière sélective vos documents avec des données synthétiques. Ce processus vous permet de vous assurer que vos documents couvrent tous les types de scénarios, y compris les scénarios futurs prédits. Si vous devez utiliser des données synthétiques, faites de votre mieux pour qu’elles ressemblent autant que possible à des données réelles.
Assurez-vous que les documents peuvent répondre aux questions que vous rassemblez.
Avoir au moins deux documents pour chaque variante de document.
Utilisez des modèles linguistiques ou d’autres outils pour vous aider à évaluer la qualité des documents.
Collecter des requêtes de test
Dans cette étape, vous collectez des requêtes de test que vous utilisez pour évaluer vos blocs, votre solution de recherche et votre ingénierie rapide. Effectuez cette étape pendant que vous rassemblez les documents représentatifs. Vous devez collecter les requêtes et déterminer la façon dont les documents représentatifs répondent à ces requêtes en même temps. En ayant à la fois les exemples de requêtes et les parties des exemples de documents qui répondent à ces requêtes, vous pouvez évaluer chaque étape de la solution RAG pendant que vous expérimentez différentes stratégies et approches.
Collecter les résultats des requêtes de test
La sortie de cette phase inclut le contenu de la collecter des requêtes de test représentatives étape et le collecter des documents de test représentatifs étape. La sortie est une collection qui contient les données suivantes :
Requête : La question, qui représente l’invite potentielle d’un utilisateur légitime.
Context : collection de tout le texte réel dans les documents qui traitent 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 du contenu directement à partir des documents, ou il peut être réédulé à partir d’un ou plusieurs éléments 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 consiste à générer des questions synthétiques à partir des documents de test représentatifs que vous rassemblez. Les étapes suivantes décrivent une approche réelle pour générer des questions synthétiques à partir de documents représentatifs :
Segmentez les documents. Décomposez les documents en blocs. N’utilisez pas la stratégie de segmentation pour votre solution globale. Utilisez cette étape ponctuelle que vous utilisez pour générer des requêtes synthétiques. Vous pouvez effectuer la segmentation manuellement si le nombre de documents est raisonnable.
Générez des requêtes pour chaque bloc. Pour chaque bloc, générez des requêtes manuellement ou à l’aide d’un modèle de langage. Lorsque vous utilisez un modèle de langage, vous commencez généralement par générer deux requêtes pour chaque bloc. Vous pouvez également utiliser le modèle de langage 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, and directly quote the text from the provided context. Provide the array output in strict JSON format as shown in the output format. Ensure that the generated JSON is completely structurally correct, including proper nesting, comma placement, and quotation marks. There shouldn't be a comma after the last element in the array. Output format: [ { "question": "Question 1", "answer": "Answer 1" }, { "question": "Question 2", "answer": "Answer 2" } ] CONTEXT:
Vérifiez la sortie. Vérifiez que les questions sont pertinentes pour le cas d’usage et que les réponses répondent à la question. Une PME doit effectuer cette vérification.
Requêtes non traitées
Il est important de collecter des requêtes que les documents n’adressent pas et les requêtes qu’ils effectuent. Lorsque vous testez votre solution, et en particulier lorsque vous testez le modèle de langage, vous devez déterminer comment la solution doit répondre aux requêtes qu’il n’a pas suffisamment de contexte pour répondre. Pour répondre aux requêtes auxquelles la solution ne peut pas répondre, la solution peut :
Indique qu’il ne connaît pas la réponse.
Indiquez qu’il ne connaît pas la réponse et fournissez un lien dans lequel 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 ou des captures d’écran, vérifiez que vous avez des questions qui couvrent tous les cas d’usage. Si vous déterminez dans la partie images de l’étape d’analyse du document que le texte avant ou après l’image est requis pour répondre à certaines questions, assurez-vous que vous avez ces questions 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 bot de conversation pour répondre aux questions des clients, vous pouvez utiliser des questions client à partir de votre support technique, faq ou système de tickets.
Le client ou la PME pour le cas d’usage doit agir comme une porte de qualité pour déterminer si les documents collectés, les requêtes de test associées et les réponses aux requêtes des documents sont complètes, représentatives et correctes.
Passez en revue régulièrement le corps des questions et réponses pour vous assurer qu’ils continuent de refléter avec précision les documents sources.