Dieses Repository enthält ein Projekt, das demonstriert, wie das RAM-Framework (Abruf-Augmented Generation) mit dem GPT-4O-Modell von OpenAI und einer Pinecone-Vektor-Datenbank verwendet wird, um einen CSV-Datensatz abzufragen. Das Projekt umfasst das Erstellen von Vektor -Einbettungen aus den Daten in der CSV -Datei, das Speichern von Emetten in der Pinecone -Datenbank und dann die Vektor -Einbettungsdaten mithilfe von natürlichen Sprachabfragen ab.
Inhaltsverzeichnis
Einführung
Voraussetzungen
Getestete Plattform und Pakete
Verwendung
Daten einnehmen und Einbettungen erstellen
Abfragen der Daten
Wie es funktioniert
Lizenz
Dieses Projekt zeigt die Verwendung von Techniken zur Verarbeitung natürlicher Sprache, um Daten in einer CSV -Datei abzufragen. Durch die Nutzung des GPT-4-Modells von OpenAI und die Vektordatenbank von PineCone können wir Einbetten für die Daten erstellen und diese Einbetten verwenden, um genaue Antworten auf Benutzeranfragen abzurufen.
Stellen Sie vor Beginn sicher, dass Sie Folgendes haben:
API -Integration : Zur Integration in OpenAI und PineCone müssen Sie die jeweiligen API -Tasten, Host -Informationen (Pinecone) für diese Plattformen erhalten und konfigurieren. Stellen Sie Ihre OpenAI- und Pnecone -API -Schlüssel sowie den Pinecone -Host als Umgebungsvariablen unter Linux ein. Verwenden Sie die folgenden Linux -Befehle, um diese Variablen zu exportieren:
exportieren openai_api_key = 'your-openai-api-key' '
exportieren
Exportieren Sie PineCone_host = 'Your-Pinecone-Host'
OpenAI-API: OpenAI-Modell "Text-Embedding-ada-ada-ad-002" und "GPT-4O", die zur Erzeugung von Einbettungen und LLM-Unterstützung verwendet werden. Stellen Sie sicher, dass Sie ein OpenAI -Konto mit gültigen API -Schlüssel haben. Sie können Ihre API-Schlüssel von der OpenAI-Plattform (https://platform.openai.com/) erhalten und diese verwalten (https://platform.openai.com/organization/api-keys). Stellen Sie außerdem sicher, dass Ihr Konto eine ausreichende Verwendungsquote aufweist, da dieses Beispiel ein gezahltes OpenAI -Konto erfordert.
Pnecone -Umgebung (Pnecone -kostenloses Konto verwendet https://www.pinecone.io/): 1) Pinecone Index wird verwendet. 2) Abmessungen: 1536 3) Hosttyp: Serverlos.
CentOS Linux Release 8.5.2111. Erstellen Sie eine virtuelle Umgebung (optional, aber empfohlen), um Projektabhängigkeiten zu isolieren.
Python 3.8.8
Pandas 2.0.3
OpenAI 1.30.3
Tinecone 4.0.0
Numpy 1.24.4
Argparse 1.1
Daten einnehmen und Einbettungen erstellen
csv_path = "your_csv_file_path" [Create-Chunks-Embeddings Store-Vectordb-CSV-Dataset.py]
PineCone_index_name = "your_pinecone_index_name" [Create-Chunks-Embeddings-Store-Vektordb-CSV-Datenet.py]
index_name = "your_pinecone_index_name" [query-prompt-for-vector-embeddings.py]
Ändern Sie die Spalten -Titel in der Funktion read_csv_data so, dass sie mit den Spalten in Ihrer CSV -Datei übereinstimmt. Weitere Informationen finden Sie im Abschnitt CSV -Datei an die Anpassung für Ihren CSV -Dateiabschnitt .
Sie können OpenAI -LLM -Modelle verwenden, die auf Ihren Anforderungen basieren:
Modell = "GPT-4O", # Sie können GPT-4 oder GPT-3,5-Turbo oder ein anderes OpenAI-LLM-Modell verwenden. [Abfrage-Prompt-for-Vektor-Embeddings.py]
Führen Sie das Skript aus, um die Daten zu lesen, Einbettungen zu generieren und sie in Pinecon zu speichern
#Python create-Chunks-embeddings Store-Vectordb-csv-dataset.py
Abfragen der Daten
#Python Query-Prompt-for-Vector-Embeddings.py "Ihre Abfrage hier"
Beispiel: Python Query-Prompt-for-Vector-Embeddings.Py "Erzähl mir von der Handlung des Films Xyz"
Geben Sie Ihre nächste Abfrage ein (oder geben Sie 'Beenden' in die Kündigung ein): In welchem Jahr wurde dieser Film veröffentlicht?
Chunkeln der CSV
Das Skript "Create-Chunks-Embeddings Store-Vectordb-CSV-Datenet.py" liest die CSV-Datei und kombiniert relevante Spalten in einer einzelnen Textzeichenfolge für jede Zeile. Diese Textzeichenfolge enthält Details zu Spalten für jede Zeile - jede Zeile enthält unterschiedliche Informationen (z. B. Informationen für einen Film). Der kombinierte Text für jede Zeile wird dann verwendet, um Einbettungen mithilfe der OpenAI -API zu erzeugen. Die Vektor -Einbettungen werden in einem Tinecone -Index gespeichert.
Nutzung von Openai's GPT-4 LLM
Das Projekt nutzt OpenAs GPT-4 großes Sprachmodell (LLM) auf zwei primäre Weise:
Generieren von Einbettungen: Die Textdaten aus jeder Zeile der CSV-Datei werden als Eingabe für das Einbettungsmodell von OpenAI (Text-Embedding-ada-ad-002) verwendet. Dieses Modell verwandelt den Text in eine hochdimensionale Vektoreinbettung, die die semantische Bedeutung des Textes erfasst. Diese Einbettungen werden dann in der Vektordatenbank von Pinecone für ein effizientes Abruf gespeichert.
Abfragen der natürlichen Sprache: Wenn ein Benutzer eine Abfrage einreicht, generiert das Skript eine Einbettung für den Abfragetext mit demselben Einbettungsmodell. Diese Abfrageeinbettung wird dann verwendet, um die Pnecone -Vektor -Datenbank nach den semantisch ähnlichen Textbrocken (dh Zeilen aus der CSV -Datei) durchzuführen. Die relevanten Textbrocken werden abgerufen und an das GPT-4-Modell von OpenAI übergeben, um eine umfassende und kontextuell genaue Antwort auf die Abfrage des Benutzers zu generieren.
Kombinieren Sie den Kontext für verbesserte Antworten
Um sicherzustellen, dass die Antworten genau und relevant sind, behält das Skript einen Kontext früherer Abfragen und Antworten bei. Dieser Kontext wird mit den abgerufenen Textbrocken kombiniert, um GPT-4 eine umfassende Sicht auf die Informationen zu bieten. Dieser Ansatz verbessert die Fähigkeit des Modells, detaillierte und genaue Antworten zu generieren, die in den in der CSV -Datei bereitgestellten Daten beruhen.
Anpassen für Ihre CSV -Datei
Um sicherzustellen, dass das Skript korrekt mit Ihrer CSV-Datei funktioniert, aktualisieren Sie die Spalten "Create-Chunks-Embeddings-Stors-Vectordb-CSV-Datenetset.py" so, dass sie den Spalten in Ihrer CSV-Datei übereinstimmen. Hier ist ein Beispiel dafür, wie Sie die Funktion anpassen können:
#User sollten Spalten durch die Liste der Spaltennamen ersetzen, die sie verwenden möchten - Beispiel unten
Spalten = ["Rank", "Director", "Genre", "Plot", "Schauspieler", "Bewertungen"] # Ersetzen Sie Spalten durch Spaltennamen Ihrer CSV -Datei
Dieses Projekt ist unter der Apache 2.0 -Lizenz lizenziert. Weitere Informationen finden Sie in der Lizenzdatei.