Ce référentiel contient un projet qui montre comment utiliser le cadre de génération (RAG) (RAG) de récupération avec le modèle GPT-4O et la base de données vectorielle de PineCone d'OpenAI pour interroger un ensemble de données CSV. Le projet consiste à créer des incorporations vectorielles à partir des données dans le fichier CSV, à stocker des intégres dans la base de données de pinone, puis à interroger les données d'intégration de vecteur à l'aide de requêtes en langage naturel.
Table des matières
Introduction
Condition préalable
Plate-forme et packages testés
Usage
Ingérer des données et créer des intérêts
Interroger les données
Comment ça marche
Licence
Ce projet présente l'utilisation des techniques de traitement du langage naturel pour interroger les données stockées dans un fichier CSV. En tirant parti du modèle GPT-4 d'OpenAI et de la base de données vectorielle de PineCone, nous pouvons créer des incorporations pour les données et utiliser ces incorporations pour récupérer des réponses précises aux requêtes utilisateur.
Avant de commencer, assurez-vous d'avoir ce qui suit:
Intégration de l'API : Pour l'intégration avec OpenAI et PineCone, vous devez obtenir et configurer les informations API respectives, Host (Pinecone) pour ces plates-formes. Définissez vos touches API Openai et PineCone et l'hôte PineCone comme variables d'environnement dans Linux. Utilisez les commandes Linux suivantes pour exporter ces variables:
exporter openai_api_key = 'your-openai-api-key'
Exporter pinecone_api_key = 'Votre Pinecone-API-Key'
Exporter pinecone_host = 'Votre Pinecone-Host'
API OpenAI: modèle OpenAI "Text-Embedding-Ada-002" et "GPT-4O" utilisé pour générer des intégres et le support LLM. Assurez-vous d'avoir un compte OpenAI avec des clés API valides. Vous pouvez obtenir vos clés API à partir de la plate-forme OpenAI (https://platform.openai.com/) et les gérer (https://platform.openai.com/organisation/API-Keys). De plus, assurez-vous que votre compte dispose d'un quota d'utilisation suffisant, car cet exemple nécessite un compte OpenAI payé.
PineCone Environment (compte gratuit de Pinecone utilisé https://www.pineconcone.io/): 1) L'index de pincone est utilisé 2) Dimensions: 1536 3) Type d'hôte: sans serveur.
Centos Linux version 8.5.2111. Créez un environnement virtuel (facultatif mais recommandé) pour isoler les dépendances du projet.
Python 3.8.8
Pandas 2.0.3
Openai 1.30.3
Pinone 4.0.0
Numpy 1.24.4
Argparse 1.1
Ingérer des données et créer des intérêts
csv_path = "your_csv_file_path" [create-chunks-embeddings-store-vectordb-csv-dataset.py]
pineCone_index_name = "your_pineconcone_index_name" [create-chunks-embeddings-store-vectordb-csv-dataset.py]
index_name = "your_pinecone_index_name" [query-comptpt-for-vector-embeddings.py]
Modifiez les titres de colonne de la fonction read_csv_data pour correspondre aux colonnes de votre fichier CSV. Voir la personnalisation de votre section Fichier CSV pour plus de détails.
Vous pouvez utiliser des modèles Openai LLM en fonction de vos besoins:
Model = "GPT-4O", # Vous pouvez utiliser GPT-4 ou GPT-3.5-turbo ou autre modèle Openai LLM. [Query-Pompt-for-Vector-embeddings.py]
Exécutez le script pour lire les données, générer des intégres et les stocker dans Pinecon
#python Create-chunks-embeddings-store-vectordb-csv-dataset.py
Interroger les données
#Python Query-Prumpt-for-vector-embeddings.py "Votre question ici"
Exemple: Python Query-Prumpt-for-Vector-embeddings.py "Parlez-moi de l'intrigue du film XYZ"
Entrez votre prochaine requête (ou tapez «sortie» pour quitter): quelle année ce film est sorti?
Couper les données de CSV, créer des incorporations vectorielles et stocker des incorporations dans la base de données Pinecone
Le script "Create-chunks-embeddings-store-vectordb-csv-dataset.py" lit le fichier CSV et combine des colonnes pertinentes en une seule chaîne de texte pour chaque ligne. Cette chaîne de texte comprend des détails de colonnes pour chaque ligne - chaque ligne contient des informations distinctes (par exemple, des informations pour un film). Le texte combiné pour chaque ligne est ensuite utilisé pour générer des intégres à l'aide de l'API d'Openai. Les incorporations vectorielles sont stockées dans un index de pinone.
Tirer parti du GPT-4 LLM d'Openai
Le projet exploite le modèle de grande langue GPT-4 d'OpenAI (LLM) de deux manières principales:
Génération d'intégration: les données de texte de chaque ligne du fichier CSV sont utilisées comme entrée dans le modèle d'intégration d'Openai (text-embedding-ada-002). Ce modèle transforme le texte en un vecteur de haute dimension incorporant qui capture la signification sémantique du texte. Ces intérêts sont ensuite stockés dans la base de données vectorielle de Pinecone pour une récupération efficace.
Interrogation en langage naturel: Lorsqu'un utilisateur soumet une requête, le script génère une intégration pour le texte de la requête en utilisant le même modèle d'intégration. Cette incorporation de requête est ensuite utilisée pour rechercher la base de données de vecteur de pinone pour les morceaux de texte les plus similaires sémantiquement (c'est-à-dire les lignes du fichier CSV). Les morceaux de texte pertinents sont récupérés et transmis au modèle GPT-4 d'OpenAI pour générer une réponse complète et contextuellement précise à la requête de l'utilisateur.
Combiner le contexte pour des réponses améliorées
Pour garantir que les réponses sont exactes et pertinentes, le script maintient un contexte de requêtes et de réponses précédentes. Ce contexte est combiné avec les morceaux de texte récupérés pour fournir à GPT-4 une vue complète des informations. Cette approche améliore la capacité du modèle à générer des réponses détaillées et précises qui sont fondées sur les données fournies dans le fichier CSV.
Personnalisation pour votre fichier CSV
Pour vous assurer que le script fonctionne correctement avec votre fichier CSV, mettez à jour les colonnes "Create-chunks-embeddings-store-vectordb-csv-dataset.py" pour correspondre aux colonnes de votre fichier CSV. Voici un exemple de la façon dont vous pouvez personnaliser la fonction:
#Users doit remplacer les colonnes par la liste des noms de colonne qu'ils souhaitent utiliser - Exemple ci-dessous
colonnes = ["Rank", "Director", "Genre", "Plot", "Actors", "Ratings"] # Remplacez les colonnes par des noms de colonne de votre fichier CSV
Ce projet est concédé sous licence Apache 2.0. Voir le fichier de licence pour plus de détails.