Vous pouvez utiliser les modèles de base dans IBM watsonx.ai pour générer des résultats factuellement exacts, fondés sur les informations d'une base de connaissances, en appliquant le modèle RAG ( retrieval-augmented generation ).
Cette vidéo fournit une méthode visuelle pour apprendre les concepts et les tâches de cette documentation.
Chapitres de la vidéo
Copy link to section
[ 0:08 ] Description du scénario [ 0:27 ] Vue d'ensemble du modèle [ 1:03 ] Base de connaissances [ 1:22 ] Composant de recherche [ 1:41 ] Invite enrichie du contexte [ 2:13 ] Génération de la sortie [ 2:31 ] Solution complète [ 2:55 ] Considérations relatives à la recherche [ 3:58 ] Considérations relatives au texte de l'invite [ 5:01 ] Considérations relatives à l'expliquabilité
La mise à disposition d'un contexte dans votre invite améliore la précision
Copy link to section
Les modèles de base peuvent générer une sortie qui est factuellement inexacte pour diverses raisons. Une façon d'améliorer la précision de la sortie générée consiste à fournir les faits nécessaires en tant que contexte dans votre texte d'invite.
Exemple
Copy link to section
L'invite suivante inclut le contexte permettant d'établir certains faits:
Aisha recently painted the kitchen yellow, which is her favorite color.
Aisha's favorite color is
Copy to clipboardCopié dans le presse-papiers
À moins qu'Aisha ne soit une personne célèbre dont la couleur préférée a été mentionnée dans de nombreux articles en ligne inclus dans des ensembles de données de prétraitement courants, sans le contexte au début de l'invite, aucun modèle de base ne peut générer de manière fiable la fin de phrase correcte à la fin de l'invite.
Si vous invitez un modèle avec du texte qui inclut un contexte rempli de faits, la sortie générée par le modèle est plus susceptible d'être exacte. Pour plus de détails, voir Génération d'une sortie factuellement précise.
Le modèle de génération augmentée par la recherche
Copy link to section
Vous pouvez étendre la technique d'inclusion de contexte dans vos invites en utilisant les informations d'une base de connaissances.
Le diagramme suivant illustre le modèle de génération avec récupération. Bien que le diagramme montre un exemple de réponse à des questions, le même flux de travaux prend en charge d'autres cas d'utilisation.
Le modèle de génération augmentée par récupération comprend les étapes suivantes :
Recherchez dans votre base de connaissances du contenu lié à la question d'un utilisateur.
Extrayez les résultats de recherche les plus pertinents dans votre invite en tant que contexte et ajoutez une instruction, telle que " Répondez à la question suivante en utilisant uniquement les informations des passages suivants.
Seulement si le modèle de base que vous utilisez n'est pas adapté aux instructions : ajoutez quelques exemples qui démontrent le format d'entrée et de sortie attendu.
Envoyer le texte combiné de l'invite (instruction + résultats de la recherche + question) au modèle de fondation.
Le modèle de base utilise les informations contextuelles de l'invite pour générer une réponse factuelle.
L'origine de la génération assistée par récupération
Copy link to section
Le terme " génération augmentée par récupération " (RAG) a été introduit dans ce document : Génération augmentée par récupération pour les tâches de NLP à forte intensité de connaissances. « Nous construisons des modèles RAG où la mémoire paramétrique est un transformateur d' seq2seq s pré-entraîné, et la mémoire non paramétrique est un index vectoriel dense de Wikipédia, accessible avec un récupérateur neuronal ré-entraîné. »
Dans cet article, le terme modèles RAG fait référence à une implémentation spécifique d'un extracteur (un encodeur de requête spécifique et un index de recherche de document vectoriel) et d'un générateur (un modèle de langage génératif pré-entraîné spécifique). Toutefois, l'approche de base de la recherche et de la génération peut être généralisée pour utiliser des composants d'extracteur et des modèles de base différents.
Base de connaissance
Copy link to section
La base de connaissances peut être n'importe quelle collection d'artefacts contenant des informations, tels que:
Informations sur les processus dans les pages wiki internes de la société
Fichiers dans GitHub (dans n'importe quel format: Markdown, texte en clair, JSON, code)
Messages dans un outil de collaboration
Rubriques de la documentation du produit, qui peuvent inclure des blocs de texte longs
Passages de texte dans une base de données prenant en charge les requêtes SQL (Structured Query Language), telles que Db2
Un magasin de documents avec une collection de fichiers, tels que des contrats juridiques stockés sous forme de fichiers PDF
Tickets de support client dans un système de gestion de contenu
Extracteur
Copy link to section
L'extracteur peut être n'importe quelle combinaison d'outils de recherche et de contenu qui renvoie de manière fiable du contenu pertinent à partir de la base de connaissances, y compris des outils de recherche tels que IBM Watson Discovery ou des API de recherche et de contenu telles que celles fournies par GitHub.
Les bases de données vectorielles sont également des récupérateurs efficaces. Une base de données vectorielle stocke non seulement les données, mais aussi un imbrication vectorielle des données, qui est une représentation numérique des données qui capture leur signification sémantique. Au moment de la requête, un imbrication vectorielle du texte de la requête est utilisée pour rechercher les correspondances appropriées.
IBM watsonx.ai n'inclut pas de base de données vectorielles, mais vous pouvez utiliser les modèles de fondation dans watsonx.ai avec n’importe quelle base de données vectorielles du marché. Les exemples de carnets illustrent les étapes de connexion aux bases de données vectorielles les plus utilisées, telles que Cloud Pak for Data et Elasticsearch.
Pour vous aider à mettre en œuvre un modèle RAG dans lequel le récupérateur utilise du texte vectorisé, watsonx.ai propose une API d'intégration et des modèles d'intégration que vous pouvez utiliser pour convertir des phrases et des passages en vecteurs. Pour plus d'informations sur ce type d'implémentation de RAG, voir Utilisation de texte vectorisé avec des tâches de génération augmentées par la recherche.
Générateur
Copy link to section
Le composant générateur peut utiliser n'importe quel modèle dans watsonx.ai, en fonction de votre cas d'utilisation, du format d'invite et du contenu que vous extrayez pour le contexte.
Exemple de projet
Copy link to section
Importer un exemple de projet avec des carnets de notes et d'autres ressources qui mettent en œuvre une solution de questions et réponses en utilisant la génération augmentée par récupération. Le projet vous montre comment faire les choses suivantes :
Utilisez des fichiers HTML, PDF, DOC ou PPT comme base de connaissances et un index vectoriel Elasticsearch comme outil de recherche. (Vous devez créer l'instance de service Elasticsearch séparément)
Écrire une fonction d' Python, qui interroge l'index vectoriel pour rechercher des informations liées à une question, puis déduit un modèle de base et vérifie que la réponse générée ne contient pas de contenu halluciné.
Utilisez des modèles de messages-guides qui vous aideront à formuler des messages-guides efficaces pour les modèles de fondation.
Suivez le modèle efficacement avec les utilitaires RAG de la bibliothèque watsonx.ai Python.
Mettre en œuvre la phase suivante de l'implémentation d'un RAG en incluant des fonctions de collecte et d'analyse du retour d'information des utilisateurs sur les réponses générées.
Cet exemple de bloc-notes utilise des articles courts dans IBM Watson Discovery comme base de connaissances et l'API Discovery pour effectuer des requêtes de recherche.
La documentation watsonx.ai dispose d'une fonction de recherche et de réponse qui peut répondre aux questions de base en utilisant les rubriques de la documentation comme base de connaissances.
Contient les étapes et le code pour démontrer la prise en charge de la génération augmentée par récupération avec LangChain dans watsonx.ai. Il introduit des commandes pour l'extraction de données, la création et l'interrogation de bases de connaissances et le test de modèles.
Exemple avec LangChain et une base de données vectorielle Elasticsearch
Montre comment utiliser LangChain pour appliquer un modèle d'imbrication à des documents dans une base de données vectorielle Elasticsearch . Le bloc-notes indexe ensuite et utilise le magasin de données pour générer des réponses aux questions entrantes.
Démontre comment utiliser la bibliothèque Elasticsearch Python pour appliquer un modèle d'intégration à des documents dans une base de données vectorielle Elasticsearch . Le bloc-notes indexe ensuite et utilise le magasin de données pour générer des réponses aux questions entrantes.
Exemple avec LangChain et une base de données SingleStoreDB
Montre comment appliquer la génération augmentée par récupération à de grands modèles linguistiques dans watsonx en utilisant la base de données SingleStoreDB.