OP Vault verwendet die OP -Stack (OpenAI + Pinecone Vector -Datenbank), damit Benutzer ihre eigenen benutzerdefinierten KnowledgeBase -Dateien hochladen und Fragen zu ihren Inhalten stellen können.
vault.pash.city

Mit Quick Setup können Sie Ihre eigene Version dieses Golang-Servers zusammen mit einem benutzerfreundlichen React Frontend starten, mit dem Benutzer OpenAI-Fragen zur spezifischen Wissensbasis stellen können. Der Hauptaugenmerk liegt auf menschlich-lesbaren Inhalten wie Büchern, Briefen und anderen Dokumenten, wodurch es zu einem praktischen und wertvollen Instrument für Wissensextraktion und Fragen zur Beantwortung ist. Sie können Bücher und Dokumente einer gesamten Bibliothek hochladen und die Punkte mit dem Namen der Datei und des spezifischen Abschnitts in der Datei, auf die die Antwort basiert!

Mit dem Gewölbe können Sie:
Folgen Sie den Go -Dokumenten hier
Ich empfehle, NVM zu installieren und den Knoten V19 zu installieren
sudo apt-get install -y poppler-utils auf Ubuntu oder brew install poppler auf Mac
secret Ordner einsecret/openai_api_key und fügen Sie Ihre OpenAI -API -Taste ein: echo "your_openai_api_key_here" > secret/openai_api_key
secret/pinecone_api_key und fügen Sie Ihre Pinecone -API -Taste in sie ein: echo "your_pinecone_api_key_here" > secret/pinecone_api_key
Verwenden Sie beim Einrichten Ihres Pnecone -Index eine Vektorgröße von 1536 und führen Sie alle Standardeinstellungen gleich.
secret/pinecone_api_endpoint und fügen Sie Ihren Pinecone -API -Endpunkt ein, in das sie: echo "https://example-50709b5.svc.asia-southeast1-gcp.pinecone.io" > secret/pinecone_api_endpoint
Installieren Sie JavaScript -Paketabhängigkeiten:
npm install
Führen Sie den Golang -Webserver aus (Standardport :8100 ):
npm start
Führen Sie in einem anderen Terminalfenster WebPack aus, um den JS -Code zu kompilieren und eine Bündel.js -Datei zu erstellen:
npm run dev
Besuchen Sie die lokale Version der Website unter http: // localhost: 8100
In den Beispiel -Screenshots habe ich ein paar Bücher von Platon und einige Briefe von Alexander Hamilton hochgeladen, um die Fähigkeit des OP -Vault zu präsentieren, Fragen basierend auf dem hochgeladenen Inhalt zu beantworten.





Der Golang -Server verwendet Post -APIs, um eingehende Uploads zu verarbeiten und auf Fragen zu antworten:
/upload zum Hochladen von Dateien hoch
/api/question zur Beantwortung von Fragen
Alle API-Endpunkte werden in der Datei Vault-Web-Server/Main.go deklariert.
Die Datei Vault-Web-Server/Postapi/FileUpload.go enthält die UploadHandler -Logik zum Umgang mit eingehenden Uploads im Backend. Die UploadHandler -Funktion im Postapi -Paket ist für die Bearbeitung von Dateien -Uploads (mit einer maximalen Gesamt -Upload -Größe von 300 MB) verantwortlich und verarbeitet sie in Einbettungsdings, um sie in Tinecone zu speichern. Es akzeptiert PDF-, EPUB-, .docx- und Klartextdateien, extrahiert Text von ihnen und unterteilt den Inhalt in Stücke. Unter Verwendung von OpenAI -API erhalten die Einbettungen für jeden Stücke und den Störungen (Einfügungen oder Aktualisierungen) die Einbettungen in Tinecone. Die Funktion gibt eine JSON -Antwort mit Informationen zu den hochgeladenen Dateien und ihrem Verarbeitungsstatus zurück.
Nachdem der Server für jeden Stück einer hochgeladenen Datei OpenAI -Einbettungen erhalten hat, speichert der Server alle Einbettungen zusammen mit Metadaten, die für jede Einbettung in Tinecone DB zugeordnet sind. Die Metadaten für jede Einbettung erzeugt in der upsertembeddingStopinecone -Funktion mit den folgenden Schlüssel und Werten:
file_name : Der Name der Datei, aus der der Textanteil extrahiert wurde.start : Die Startcharakterposition des Textanteils in der Originaldatei.end : Die Endcharakterposition des Textanteils in der Originaldatei.title : Der Titel des Chunk, der in diesem Fall auch der Dateiname ist.text : Der Text des Stücks.Diese Metadaten sind nützlich, um den Einbettungsdings einen Kontext bereitzustellen, und wird verwendet, um zusätzliche Informationen über die übereinstimmenden Einbettungsdings anzuzeigen, wenn die Ergebnisse aus der Pinecone -Datenbank abgerufen werden.
Die QuestionHandler in Vault-Web-Server/Postapi/Fragen.go ist für die Bearbeitung aller eingehenden Fragen verantwortlich. Wenn in der Frontend eine Frage eingegeben wird und der Benutzer "Suche" (oder Eingabetaste) drückt, verwendet der Server die OpenAI -Einbettungs -API erneut, um eine Einbettung für die Frage zu erhalten (auch bekannt als Abfragevektor). Dieser Abfragetektor wird verwendet, um Pinecone DB abzufragen, um den relevantesten Kontext für die Frage zu erhalten. Schließlich wird eine Eingabeaufforderung erstellt, indem der relevanteste Kontext + die Frage in einer Eingabeaufforderungszeichenfolge gepackt wird, in der die Token -Grenzwerte geöffnet werden (die Go Tiktoken -Bibliothek wird zur Schätzung der Token -Anzahl) verwendet).
Das Frontend wird mit React.js und less zum Styling gebaut.
Wenn Sie mehr über dieses Thema erfahren möchten, empfehle ich diesen Beitrag im Pinecone -Blog:
Ich hoffe es gefällt euch (::
Derzeit habe ich die maxorische Dateigröße auf 3 MB eingestellt. Wenn Sie diese Grenze erhöhen möchten, bearbeiten Sie die Konstanten MAX_FILE_SIZE und MAX_TOTAL_UPLOAD_SIZE in FileUpload.go.
Pdfs, .txt, .rtf, .docx, .epub und plelligtext.
Vor kurzem begrenzte PineCone die Verwendung von Namespaces für kostenlose Benutzer -Benutzer. Wenn Sie eine neu erstellte kostenlose Stufe haben, gelten diese Einschränkungen für Sie.