Vous pouvez utiliser des modèles de base dans IBM watsonx.ai pour générer une sortie factuellement précise qui est basée sur des informations dans une base de connaissances en appliquant le modèle de génération d'extension d'extraction.
Cette vidéo fournit une méthode visuelle pour apprendre les concepts et les tâches de cette documentation.
Chapitres de la vidéo
[ 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
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
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
À 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 les ensembles de données de préformation courants, sans le contexte au début de l'invite, aucun foundation model ne peut générer de manière fiable l'achèvement correct de la phrase à 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.
Modèle de génération étendu d'extraction
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 d'extension d'extraction. 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 d'extension d'extraction implique 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 foundation model que vous utilisez n'est pas adapté à l'enseignement: 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 foundation model.
- Le foundation model utilise les informations contextuelles de l'invite pour générer une réponse factuelle.
Origine de l'extraction-génération augmentée
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 dans lesquels la mémoire paramétrique est un transformateur seq2seq pré-formé, et la mémoire non paramétrique est un index vectoriel dense de Wikipedia, accessible avec un extracteur neuronal pré-formé.
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
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
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é. Le exemples de cahiers illustrer les étapes de connexion aux bases de données vectorielles populaires, telles que Chroma et Elasticsearch.
Pour vous aider à implémenter 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 RAG, voir Utilisation de texte vectorisé avec des tâches de génération étendue à l'extraction.
Générateur
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
Importez un exemple de projet avec des blocs-notes et d'autres actifs qui implémentent une solution de questions et réponses à l'aide de la génération avec récupération augmentée. 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 Python qui interroge l'index vectoriel pour rechercher des informations relatives à une question, puis déduit un foundation model et vérifie que la réponse générée ne contient pas de contenu halluciné.
- Utilisez les modèles d'invites qui vous aident à formuler des invites efficaces pour les modèles de fondation IBM granite-7b-lab et Meta Llama 3.1.
- 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.
Essayez le projet d'exemple Q&A avec RAG Accelerator.
Exemples
Les exemples suivants montrent comment appliquer le modèle de génération d'extension d'extraction.
Exemple | Descriptif | Lier |
---|---|---|
Introduction simple | Utilise une petite base de connaissances et un composant de recherche simple pour illustrer le modèle de base. | Introduction à la génération augmentée par la recherche |
Introduction simple avec Discovery | 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. | Introduction simple à la génération augmentée par la recherche avec watsonx.ai et Discovery |
Exemple dans le monde réel | 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. | Répondre aux questions de watsonx.ai en utilisant un foundation model |
Exemple avec LangChain | Contient les étapes et le code permettant d'illustrer la prise en charge de la géné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. | Utiliser watsonx et LangChain pour répondre aux questions en utilisant RAG |
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. | Utiliser watsonx, Elasticsearch et LangChain pour répondre aux questions (RAG) |
Exemple avec la bibliothèque Elasticsearch Python | 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. | Utiliser watsonx et la bibliothèque Elasticsearch Python pour répondre aux questions (RAG) |
Exemple avec LangChain et une base de données SingleStoreDB | Montre comment appliquer la génération augmentée par extraction à de grands modèles de langage dans watsonx en utilisant la base de données SingleStoreDB. | RAG avec SingleStoreDB et watsonx |
En savoir plus
Essayez les tutoriels suivants:
- Promouvoir un foundation model à l'aide de Prompt Lab
- Promouvoir un foundation model à l'aide du modèle de génération augmentée par la recherche
Rubrique parent: Développement de solutions d'IA génératives