Dieses Projekt bietet eine einfache Webanwendung, mit der Benutzer ein PDF -Dokument hochladen, Vektor -Einbettungen aus seinen Inhalten generieren und dann mit einer Textabfrage nach Informationen innerhalb des Dokuments suchen können. OpenAIs Einbettungs- und Sprachmodelle werden zum Erstellen von Vektoreinbettungen und Informationsabruf verwendet.
PDF -Dokumentaufnahme : Benutzer können PDF -Dokument über die Weboberfläche zum Abrufen von Informationen hochladen.
Vektor -Einbettungen erzeugen : Der Textinhalt wird aus der PDF extrahiert und unter Verwendung von Langchain in kleinere Stücke aufgeteilt. Einbettungsdings werden für jeden Chunk unter Verwendung von OpenAIs Texteinbettungsmodell (z. B. Text-Embedding-ada-ad-002) generiert.
Speicher der Vektordatenbank : Speichern Sie die generierten Vektor -Einbettungen in einer Vektor -Datenbank wie Pinecone für die Ähnlichkeitssuche.
Nutzerabfragen verfeinern : Benutzeranfragen werden mithilfe der OpenAI -API von Chat Complement Fertigstellung verfeinert, um die Suchgenauigkeit zu verbessern.
Suchen Sie nach Informationen : Benutzer können Textabfragen eingeben, um nach Informationen innerhalb des hochgeladenen Dokuments zu suchen. Das System ruft relevante Textbrocken basierend auf ihrer Vektorähnlichkeit mit der Abfrageeinbettung ab.
Antwort generieren : Basierend auf den abgerufenen Textbrocken, dem Kontext (vorherigen Abfragen und Antworten) und der Abfrage des Benutzers wird eine Antwort mit OpenAI-Modellen (GPT-4O, GPT-4 oder GPT-3,5-Turbo) generiert. Benutzer können das OpenAI -Modell über die Weboberfläche auswählen. Die Auswahl des Modells kann sich auf den Antwortstil, den Detail und die Genauigkeit auswirken.
In der Anforderungen.TXT -Datei werden die erforderlichen Python -Pakete und deren Versionen aufgeführt, die für die Ausführung der Anwendung erforderlich sind. Hier ist eine Aufschlüsselung jedes Pakets:
Flask : Ein leichtes Python -Web -Framework zum Erstellen von Webanwendungen.
Pinecone-Client : Die offizielle Python-Client-Bibliothek für die Interaktion mit Pinecone, die in Ihrer Anwendung verwendete Vektordatenbank.
OpenAI : Die offizielle Python -Client -Bibliothek für die OpenAI -API, mit der Texteinbettungen generiert und mit den Sprachmodellen von OpenAI interagiert werden.
PYPDF2 : Eine Pure-Python-Bibliothek zum Extrahieren von Text aus PDF-Dateien.
Langchain : Ein Rahmen zum Erstellen von Anwendungen mit großsprachigen Modellen, die in Ihrer Anwendung zur Textaufteilung und zum Knacken verwendet werden.
Numpy : Ein Paket für wissenschaftliches Computer in Python, das zur Arbeit mit mehrdimensionalen Arrays und Vektoren verwendet wird.
Um diese Abhängigkeiten zu installieren, können Sie eine neue virtuelle Python -Umgebung erstellen und den folgenden Befehl ausführen:
PIP Installation -r Anforderungen.txt
Für die Integration in OpenAI und Pinecone müssen Sie die jeweiligen API -Tasten (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'
Stellen Sie sicher, dass Sie ein OpenAI -Konto mit gültigen API -Schlüssel haben. Sie können Ihre API-Schlüssel über die OpenAI-Plattform (https://platform.openai.com/) erstellen oder abrufen 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 wird als Linux -Betriebssystem verwendet. Ein Cloud Linux VM mit einer öffentlichen IP (optional) wurde auf Webschnittstellen getestet. Lokale IP kann ebenfalls verwendet werden. Erstellen Sie eine virtuelle Python -Umgebung (optional, aber empfohlen), um Projektabhängigkeiten zu isolieren.
Die Anwendung bietet eine Weboberfläche mit Flask, einem Python -Web -Framework. Benutzer können PDF-Dokument hochladen, Abfragen eingeben, das zu verwendende OpenAI-Sprachmodell (GPT-3.5-Turbo, GPT-4 oder GPT-4O) auswählen und detaillierte Antworten auf der Grundlage der Informationen, die aus den hochgeladenen PDF-Dokumenten extrahiert wurden, detaillierte Antworten erhalten.
PDF -Dokument einnehmen und Vektor -Einbettungen erstellen
Die Anwendung bietet eine Weboberfläche, in der Benutzer PDF -Dokumente hochladen können. Beim Hochladen einer PDF -Datei wird der Textinhalt aus dem Dokument extrahiert und unter Verwendung des RecursivecharacterTextSPSPLITTERTERTERS aus der Langchain -Bibliothek in kleinere Brocken aufgeteilt. Dieser Spaltprozess stellt sicher, dass der Text gleichzeitig in überschaubare Stücke unterteilt ist und gleichzeitig den Kontext aufrechterhalten wird.
Als nächstes werden Vektoreinbettungen für jeden Text-Chunk mithilfe von OpenAIs Text-Embedding-ada-ad-002-Modell generiert. Diese Einbettungen sind hochdimensionale Vektoren, die die semantische Bedeutung des Textes erfassen und eine effiziente Ähnlichkeitssuche ermöglichen.
Speichern von Vektoreinbettungen in Tinecone
Die generierten Vektor -Einbettungen sowie ihre entsprechenden Textbrocken und Seitenzahlen werden in einer Tinecone -Vektor -Datenbank gespeichert. Pinecone ist eine skalierbare und effiziente Vektor-Datenbank, die zum Speichern und Abfragen hochdimensionaler Vektoren entwickelt wurde.
Abfrageverarbeitung
Wenn ein Benutzer eine Abfrage über die Webschnittstelle einreicht, verarbeitet die Anwendung sie in den folgenden Schritten:
Abfrageverfeinerung:
Die Abfrage des Benutzers wird an das Sprachmodell von OpenAI (z. B. GPT-3,5-Turbo, GPT-4 oder GPT-4O) gesendet, um die Abfrage für eine bessere Suchgenauigkeit zu verfeinern und zu verbessern.
Einbettung der Erzeugung für die Abfrage
Die raffinierte Abfrage wird mit einem Vektor-Einbettung unter Verwendung von OpenAIs Text-Embedding-ada-ad-002-Modell umgewandelt.
Ähnlichkeitssuche:
Die Abfrageeinbettung wird verwendet, um die Pnecone -Vektor -Datenbank nach den semantisch ähnlichen Textbrocken basierend auf der Vektorähnlichkeit zu durchsuchen.
Hinweis : Um den Pinecone -Index abzufragen und die Top -Ergebnisse abzurufen, wird der folgende Code verwendet (App.Py).
#Adjust und experimentieren Sie den Wert top_k basierend auf Ihrem Anwendungsfall
Ergebnisse = PineCone_index.Query (vector = padded_query_vector.tolist (), top_k = 1, include_metadata = true)
Der Parameter TOP_K gibt die Anzahl der Top -Ergebnisse an, die aus der Abfrage zurückgegeben werden sollen. Das Anpassen des Top_k -Werts kann sich auf die Qualität der Abfrageantworten auswirken. Ein höherer Top_k -Wert kann umfassendere Ergebnisse liefern, aber auch weniger relevante Daten einführen. Umgekehrt kann ein niedrigerer Top_k -Wert präzisere, aber weniger Ergebnisse liefern. Es ist wichtig, mit verschiedenen TOP_K -Werten zu experimentieren, um die optimale Balance für Ihren spezifischen Anwendungsfall zu finden. Beachten Sie außerdem, dass die Erhöhung des TOP_K -Werts auch die Kosten beeinflusst, insbesondere wenn ein kostenpflichtiges OpenAI -Modell zur Verarbeitung der Ergebnisse verwendet wird. Höhere TOP_K -Werte führen dazu, dass mehr Daten an das Modell gesendet und verarbeitet werden, was zu erhöhten Nutzungsgebühren führen kann.
HINWEIS : Der Parameter Score_Threshold bestimmt die Mindestrelevanzbewertung, die für ein Ergebnis erforderlich ist, um die Qualität der Abfrageantwort zu beeinflussen. Passen Sie also den Schwellenwert anhand Ihres Anwendungsfalls und Ihrer Experimente an (app.py).
#Serben Sie den Schwellenwert basierend auf Ihrem Anwendungsfall.
Score_threshold = 0,65
Antwortgenerierung:
Die aus der Datenbank abgerufenen Textbrocken werden mit dem vorherigen Kontext (falls vorhanden) und der ursprünglichen Benutzerabfrage kombiniert. Diese Informationen werden dann an das Sprachmodell von OpenAI gesendet (das gleiche Modell, das für Abfrageverfeinerungen verwendet wird), um eine umfassende und kontextbezogene Antwort zu generieren.
Kontext -Bewusstseinsantwort:
Die Anwendung behält einen Kontext früherer Abfragen und Antworten bei. Dieser Kontext wird während des Schritts der Antwortgenerierung an das Sprachmodell von OpenAI übergeben, um sicherzustellen, dass die generierten Antworten den Gesprächsgeschichte berücksichtigen und genaue und kontextbezogene Informationen liefern.
Befolgen Sie die folgenden Schritte, um die Anwendung auszuführen:
Aktivieren Sie Ihre virtuelle Python -Umgebung (optional): (venv) [Benutzer@host project_directory]#
Führen Sie das App.py -Skript aus: Python App.py
Die Anwendung wird auf Port 5000 ausgeführt, und Sie sehen möglicherweise eine ähnliche Ausgabe wie die folgenden:
Stellen Sie sicher, dass die Anwendung aktiv nach eingehenden Verbindungen auf Port 5000 hört:
netstat -aultpn | Grep -i 5000 TCP 0 0 0.0.0.0:5000 0.0.0.0:* Hören Sie 525661/Python
http://127.0.0.1:5000/ (für den lokalen Zugang)
http: // vm public ip: 5000/(für den Remotezugriff über das Internet)
HINWEIS : Wenn Sie planen, auf die Anwendung über die öffentliche IP zugreifen zu können, können Sie über die Firewall der VM eingehender Datenverkehr auf Port 5000 zulassen. Dadurch wird sichergestellt, dass die Kommunikation über die öffentliche IP zulässig ist, und Sie können auf die Weboberfläche zugreifen.
Stellen Sie außerdem sicher, dass der Ordner auf Ihrem Linux -Computer, der eine hochgeladene PDF -Datei enthält, die PDF -Datei nicht mit demselben Namen enthält. Wenn die Datei bereits vorhanden ist, wird sie überschrieben.
Wählen Sie die PDF -Datei aus und laden Sie sie mit der Schaltfläche "Upload" hoch.
Klicken Sie auf die "Prozessdatei" (in dieser Phase werden Vektoreinbettungen erstellt und in der Pinecone -Datenbank gespeichert).
Geben Sie Ihre Suchanfrage ein. Wählen Sie OpenAI -Sprachmodelle im Dropdown -Menü.
Überprüfen Sie die Abfrageantwort. Nachfolgendfragen einreichen.
Klicken Sie nach Abschluss auf die "End -Sitzung" (sie löst die Reinigung aus - Löschen von hochgeladenen Dateien und Vektor -Einbettungen in der Datenbank).
Drücken Sie auf dem Linux Macine Strg+C, um die Anwendung (app.py) zu schließen.