Ce carnet contient les étapes et le code pour démontrer le soutien de la récupération de la génération augmentée dans Watsonx.ai. Il présente des commandes pour la récupération des données, la construction et la requête de la base de connaissances et les tests de modèle.
Utilisez le modèle LLM, Langchain et Milvus pour créer un système de génération augmentée (RAG) de récupération. Cela nous permettra de poser des questions sur nos documents (qui n'étaient pas inclus dans les données de formation), sans amener le modèle de grande langue (LLM). Lorsque vous utilisez RAG, si vous avez une question, vous faites d'abord une étape de récupération pour récupérer les documents pertinents d'une base de données spéciale, une base de données vectorielle où ces documents ont été indexés.
La génération augmentée (RAG) de récupération est un modèle polyvalent qui peut débloquer un certain nombre de cas d'utilisation nécessitant un rappel factuel d'informations, tels que l'interrogation d'une base de connaissances en langage naturel.
Les modèles de grandes langues (LLM) ont prouvé leur capacité à comprendre le contexte et à fournir des réponses précises à diverses tâches PNL, y compris un résumé, des questions et réponses, une fois invité. Tout en étant en mesure de fournir de très bonnes réponses aux questions sur les informations avec lesquelles ils ont été formés, ils ont tendance à halluciner lorsque le sujet concerne les informations qu'ils ne connaissent pas, c'est-à-dire que c'est incluse dans leurs données de formation. La génération augmentée de récupération combine des ressources externes avec les LLM. Les deux principaux composants d'un chiffon sont donc un retriever et un générateur.
La partie Retriever peut être décrite comme un système capable de coder nos données afin que vous puissiez facilement récupérer les parties pertinentes lors de l'interrogation. Le codage se fait à l'aide de Text Incorpings, c'est-à-dire un modèle formé pour créer une représentation vectorielle des informations. La meilleure option pour implémenter un retriever est une base de données vectorielle. En tant que base de données vectorielle, il existe plusieurs options, à la fois des produits open source ou commerciaux. Peu d'exemples sont Chromadb, Mevius, Faiss, Pinecone, Weavate. Notre option dans ce cahier sera une instance locale de ChromAdB (persistant).
Pour la partie du générateur, l'option évidente est un LLM. Dans ce cahier, nous utiliserons un modèle LLAMA V2 quantifié, de la collection Kaggle Models.
L'orchestration du Retriever et du générateur se fera à l'aide de Langchain. Une fonction spécialisée de Langchain nous permet de créer le générateur de récepteur dans une ligne de code.
Dans sa forme la plus simple, RAG nécessite 3 étapes:
690 000 mots pour le texte nettoyé de Wikipedia.
Il y a trois fichiers de questions, un pour chaque année d'étudiants: S08, S09 et S10.
Les fichiers "Questeranswerpairs.txt" contiennent à la fois les questions et réponses. Les colonnes de ce fichier sont les suivantes:
Les questions qui ont été jugées pauvres ont été rejetées à partir de cet ensemble de données.
Il y a souvent plusieurs lignes avec la même question, qui apparaissent si ces questions ont été répondues par plusieurs individus. https://www.kaggle.com/rtatman/questionanswer-dataset