OP Vault menggunakan OP Stack (OpenAI + Pinecone Vector Database) untuk memungkinkan pengguna mengunggah file KnowledgeBase khusus mereka sendiri dan mengajukan pertanyaan tentang isinya.
vault.pash.city

Dengan pengaturan cepat, Anda dapat meluncurkan versi Anda sendiri dari server Golang ini bersama dengan frontend React yang ramah pengguna yang memungkinkan pengguna untuk mengajukan pertanyaan openai tentang basis pengetahuan spesifik yang disediakan. Fokus utamanya adalah pada konten yang dapat dibaca manusia seperti buku, surat, dan dokumen lainnya, menjadikannya alat yang praktis dan berharga untuk ekstraksi pengetahuan dan jawaban pertanyaan. Anda dapat mengunggah seluruh buku dan dokumen perpustakaan dan menerima jawaban runcing bersama dengan nama file dan bagian spesifik dalam file yang menjadi dasar jawabannya!

Dengan lemari besi, Anda dapat:
Ikuti Go Docs di sini
Saya sarankan menginstal NVM dan menggunakannya untuk menginstal Node V19
sudo apt-get install -y poppler-utils di ubuntu, atau brew install poppler di mac
secretsecret/openai_api_key dan tempel kunci API openai Anda ke dalamnya: echo "your_openai_api_key_here" > secret/openai_api_key
secret/pinecone_api_key dan Tempel Kunci API Pinecone Anda ke dalamnya: echo "your_pinecone_api_key_here" > secret/pinecone_api_key
Saat menyiapkan indeks Pinecone Anda, gunakan ukuran vektor 1536 dan jaga semua pengaturan default tetap sama.
secret/pinecone_api_endpoint dan tempel titik akhir API Pinecone Anda ke dalamnya: echo "https://example-50709b5.svc.asia-southeast1-gcp.pinecone.io" > secret/pinecone_api_endpoint
Instal JavaScript Paket Dependencies:
npm install
Jalankan Golang WebServer (port default :8100 ):
npm start
Di jendela terminal lain, jalankan webpack untuk mengkompilasi kode JS dan membuat file bundle.js:
npm run dev
Kunjungi versi lokal situs di http: // localhost: 8100
Dalam contoh tangkapan layar, saya mengunggah beberapa buku oleh Plato dan beberapa surat oleh Alexander Hamilton, menampilkan kemampuan Op Vault untuk menjawab pertanyaan berdasarkan konten yang diunggah.





Server Golang menggunakan post API untuk memproses unggahan yang masuk dan menanggapi pertanyaan:
/upload untuk mengunggah file
/api/question untuk menjawab pertanyaan
Semua titik akhir API dinyatakan dalam file Vault-Web-Server/Main.go.
File vault-web-server/postapi/fileupload.go berisi logika UploadHandler untuk menangani unggahan yang masuk pada backend. Fungsi UploadHandler dalam paket PostAPI bertanggung jawab untuk menangani unggahan file (dengan ukuran unggahan total maksimum 300 MB) dan memprosesnya ke dalam embeddings untuk disimpan di pinecone. Ia menerima file teks PDF, Epub, .docx, dan polos, mengekstrak teks dari mereka, dan membagi konten menjadi potongan -potongan. Menggunakan OpenAI API, ia memperoleh embeddings untuk setiap potongan dan upsert (menyisipkan atau memperbarui) embeddings menjadi pinecone. Fungsi mengembalikan respons JSON yang berisi informasi tentang file yang diunggah dan status pemrosesannya.
Setelah mendapatkan embeddings openai untuk setiap bagian dari file yang diunggah, server menyimpan semua embeddings, bersama dengan metadata yang terkait untuk setiap embedding di Pinecone DB. Metadata untuk setiap embedding dibuat dalam fungsi UpsertembeddingStopinecone, dengan kunci dan nilai -nilai berikut:
file_name : Nama file tempat potongan teks diekstraksi.start : Posisi karakter awal dari potongan teks di file asli.end : Posisi karakter akhir dari potongan teks dalam file asli.title : Judul potongan, yang juga merupakan nama file dalam kasus ini.text : Teks potongan.Metadata ini berguna untuk memberikan konteks ke embeddings dan digunakan untuk menampilkan informasi tambahan tentang embeddings yang cocok ketika mengambil hasil dari database Pinecone.
Fungsi QuestionHandler di Vault-Web-Server/Postapi/Questions.Go bertanggung jawab untuk menangani semua pertanyaan yang masuk. Ketika sebuah pertanyaan dimasukkan di frontend dan pengguna menekan "pencarian" (atau enter), server menggunakan OpenAi Embeddings API sekali lagi untuk mendapatkan embedding untuk pertanyaan (alias query vector). Vektor kueri ini digunakan untuk meminta Pinecone DB untuk mendapatkan konteks yang paling relevan untuk pertanyaan tersebut. Akhirnya, prompt dibangun dengan mengemas konteks yang paling relevan + pertanyaan dalam string prompt yang menganut batas token openai (perpustakaan Go Tiktoken digunakan untuk memperkirakan jumlah token).
Frontend dibangun menggunakan React.js dan less untuk gaya.
Jika Anda ingin membaca lebih lanjut tentang topik ini, saya merekomendasikan posting ini dari blog Pinecone:
Saya harap Anda menikmatinya (:
Saat ini saya memiliki ukuran file individu maks ke 3MB. Jika Anda ingin meningkatkan batas ini, edit konstanta MAX_FILE_SIZE dan MAX_TOTAL_UPLOAD_SIZE di fileupload.go.
Pdfs, .txt, .rtf, .docx, .epub, dan plaintext.
Baru -baru ini, Pinecone membatasi penggunaan namespaces untuk pengguna tingkat gratis. Jika Anda berada di tingkat gratis yang baru dibuat, pembatasan ini akan berlaku untuk Anda.