OP Vault utilise la pile OP (base de données OpenAI + Pinecone Vector) pour permettre aux utilisateurs de télécharger leurs propres fichiers de base de connaissances personnalisés et de poser des questions sur leur contenu.
vault.pash.city

Avec une configuration rapide, vous pouvez lancer votre propre version de ce serveur Golang ainsi qu'un frontend React convivial qui permet aux utilisateurs de poser des questions OpenAI sur la base de connaissances spécifique fournie. L'accent est mis sur le contenu lisible par l'homme comme les livres, les lettres et autres documents, ce qui en fait un outil pratique et précieux pour l'extraction des connaissances et les réponses aux questions. Vous pouvez télécharger pour une bibliothèque entière de livres et de documents et recevoir des réponses pointues ainsi que le nom du fichier et la section spécifique dans le fichier sur lequel la réponse est basée!

Avec le coffre-fort, vous pouvez:
Suivez les docs Go ici
Je recommande d'installer NVM et de l'utiliser pour installer le nœud v19
sudo apt-get install -y poppler-utils on ubuntu, ou brew install poppler sur mac
secretsecret/openai_api_key et collez votre clé API Openai: echo "your_openai_api_key_here" > secret/openai_api_key
secret/pinecone_api_key et collez votre clé API Pinecone: echo "your_pinecone_api_key_here" > secret/pinecone_api_key
Lors de la configuration de votre index de Pinecone, utilisez une taille de vecteur de 1536 et gardez tous les paramètres par défaut.
secret/pinecone_api_endpoint et collez votre point de terminaison de l'API PineCone: echo "https://example-50709b5.svc.asia-southeast1-gcp.pinecone.io" > secret/pinecone_api_endpoint
Installez les dépendances des packages JavaScript:
npm install
Exécutez le serveur Web Golang (port par défaut :8100 ):
npm start
Dans une autre fenêtre de terminal, exécutez WebPack pour compiler le code JS et créer un fichier bundle.js:
npm run dev
Visitez la version locale du site à http: // localhost: 8100
Dans l'exemple de captures d'écran, j'ai téléchargé quelques livres de Platon et quelques lettres d'Alexander Hamilton, présentant la capacité d'OP Vault à répondre aux questions en fonction du contenu téléchargé.





Le serveur Golang utilise des API Post pour traiter les téléchargements entrants et répondre aux questions:
/upload pour télécharger des fichiers
/api/question pour répondre aux questions
Tous les points de terminaison API sont déclarés dans le fichier Vault-web-Server / Main.go.
Le fichier Vault-Web-Server / PostAPI / Fileupload.go contient la logique UploadHandler pour gérer les téléchargements entrants sur le backend. La fonction Téléchargement Handleur dans le package postAPI est responsable de la gestion des téléchargements de fichiers (avec une taille totale de téléchargement maximale de 300 Mo) et de les traiter dans des intégres à stocker en pinecone. Il accepte les fichiers PDF, ePub, .Docx et texte brut, les extrait de texte et divise le contenu en morceaux. À l'aide de l'API OpenAI, il obtient des intégres pour chaque morceau et upsert (insert ou met à jour) les intégres dans Pinecone. La fonction renvoie une réponse JSON contenant des informations sur les fichiers téléchargés et leur statut de traitement.
Après avoir obtenu des incorporations Openai pour chaque morceau d'un fichier téléchargé, le serveur stocke tous les intégres, ainsi que les métadonnées associées à chaque intégration dans Pinecone DB. Les métadonnées pour chaque intégration sont créées dans la fonction UpserMeddingStopineCone, avec les clés et valeurs suivantes:
file_name : le nom du fichier à partir duquel le morceau de texte a été extrait.start : la position de caractère de départ du morceau de texte dans le fichier d'origine.end : la position du caractère final du morceau de texte dans le fichier d'origine.title : Le titre du morceau, qui est également le nom de fichier dans cette affaire.text : le texte du morceau.Ces métadonnées sont utiles pour fournir un contexte aux intégres et sont utilisés pour afficher des informations supplémentaires sur les intégres appariés lors de la récupération des résultats de la base de données de Pinecone.
La fonction QuestionHandler dans Vault-Web-Server / PostAPI / Questions.Go est responsable de la gestion de toutes les questions entrantes. Lorsqu'une question est saisie sur le frontend et que l'utilisateur appuie sur "Recherche" (ou Entrée), le serveur utilise à nouveau l'API Openai Embeddings pour obtenir une intégration pour la question (AKA Query Vector). Ce vecteur de requête est utilisé pour interroger Pinecone DB pour obtenir le contexte le plus pertinent pour la question. Enfin, une invite est construite en emballant le contexte le plus pertinent + la question dans une chaîne d'invite qui adhère aux limites de jetons Openai (la bibliothèque Go Tiktoken est utilisée pour estimer le nombre de jetons).
Le frontend est construit à l'aide de React.js et less pour le style.
Si vous souhaitez en savoir plus sur ce sujet, je recommande cet article sur le blog PineCone:
J'espère que vous l'apprécierez (:
J'ai actuellement la taille du fichier individuel maximale définie sur 3 Mo. Si vous souhaitez augmenter cette limite, modifiez les constantes MAX_FILE_SIZE et MAX_TOTAL_UPLOAD_SIZE dans fileupload.go.
PDFS, .TXT, .RTF, .DOCX, .EPUB ET PLINDText.
Récemment, Pinecone a limité l'utilisation d'espaces de noms pour les utilisateurs de niveau gratuit. Si vous êtes sur un niveau gratuit nouvellement créé, ces restrictions s'appliqueront à vous.