OP Vault ใช้ OP Stack (OpenAI + PINECONE VECTOR DATABASE) เพื่อให้ผู้ใช้สามารถอัปโหลดไฟล์ฐานความรู้ที่กำหนดเองและถามคำถามเกี่ยวกับเนื้อหาของพวกเขา
Vault.pash.City

ด้วยการตั้งค่าอย่างรวดเร็วคุณสามารถเปิดตัวเซิร์ฟเวอร์ Golang รุ่นนี้พร้อมกับส่วนหน้า REACT ที่ใช้งานง่ายซึ่งช่วยให้ผู้ใช้สามารถถามคำถาม OpenAI เกี่ยวกับฐานความรู้เฉพาะที่มีให้ จุดสนใจหลักคือเนื้อหาที่มนุษย์อ่านได้เช่นหนังสือตัวอักษรและเอกสารอื่น ๆ ทำให้เป็นเครื่องมือที่ใช้งานได้จริงและมีคุณค่าสำหรับการแยกความรู้และการตอบคำถาม คุณสามารถอัปโหลดหนังสือและเอกสารมูลค่าของห้องสมุดทั้งหมดและรับคำตอบที่แหลมพร้อมกับชื่อของไฟล์และส่วนเฉพาะภายในไฟล์ที่คำตอบนั้นขึ้นอยู่กับ!

ด้วยห้องนิรภัยคุณสามารถ:
ติดตามเอกสาร Go ที่นี่
ฉันขอแนะนำให้ติดตั้ง NVM และใช้เพื่อติดตั้ง Node V19
sudo apt-get install -y poppler-utils บน Ubuntu หรือ brew install poppler บน Mac
secretsecret/openai_api_key และวางคีย์ OpenAI API ของคุณลงไป: echo "your_openai_api_key_here" > secret/openai_api_key
secret/pinecone_api_key และวางคีย์ Pinecone API ของคุณลงไป: echo "your_pinecone_api_key_here" > secret/pinecone_api_key
เมื่อตั้งค่าดัชนี Pinecone ของคุณให้ใช้ขนาดเวกเตอร์ 1536 และเก็บการตั้งค่าเริ่มต้นทั้งหมดไว้เหมือนกัน
secret/pinecone_api_endpoint และวางจุดปลาย Pinecone API ของคุณลงไป: echo "https://example-50709b5.svc.asia-southeast1-gcp.pinecone.io" > secret/pinecone_api_endpoint
ติดตั้ง JavaScript Package Dependencies:
npm install
เรียกใช้ Golang Webserver (พอร์ตเริ่มต้น :8100 ):
npm start
ในหน้าต่างเทอร์มินัลอื่นเรียกใช้ WebPack เพื่อรวบรวมรหัส JS และสร้างไฟล์ Bundle.js:
npm run dev
เยี่ยมชมไซต์เวอร์ชันท้องถิ่นที่ http: // localhost: 8100
ในภาพหน้าจอตัวอย่างฉันอัปโหลดหนังสือสองสามเล่มโดย Plato และจดหมายบางฉบับโดย Alexander Hamilton แสดงความสามารถของ OP Vault เพื่อตอบคำถามตามเนื้อหาที่อัปโหลด





เซิร์ฟเวอร์ Golang ใช้ Post APIs เพื่อประมวลผลการอัปโหลดที่เข้ามาและตอบคำถาม:
/upload สำหรับการอัปโหลดไฟล์
/api/question สำหรับการตอบคำถาม
จุดสิ้นสุด API ทั้งหมดจะถูกประกาศในไฟล์ vault-web-server/main.go
ไฟล์ vault-web-server/postapi/fileupload.go มีตรรกะ UploadHandler สำหรับการจัดการการอัปโหลดที่เข้ามาในแบ็กเอนด์ ฟังก์ชั่น UploadHandler ในแพ็คเกจ PostAPI มีหน้าที่รับผิดชอบในการจัดการการอัปโหลดไฟล์ (ด้วยขนาดการอัปโหลดทั้งหมดสูงสุด 300 MB) และประมวลผลลงใน embeddings เพื่อจัดเก็บใน Pinecone มันรับไฟล์ PDF, epub, .docx และไฟล์ข้อความธรรมดาดึงข้อความออกจากพวกเขาและแบ่งเนื้อหาออกเป็นชิ้น การใช้ OpenAI API จะได้รับการฝังตัวสำหรับแต่ละก้อนและ upserts (แทรกหรืออัปเดต) การฝังตัวลงใน pinecone ฟังก์ชั่นส่งคืนการตอบกลับ JSON ที่มีข้อมูลเกี่ยวกับไฟล์ที่อัปโหลดและสถานะการประมวลผล
หลังจากได้รับ embeddings openai สำหรับแต่ละก้อนของไฟล์ที่อัปโหลดเซิร์ฟเวอร์จะเก็บ embeddings ทั้งหมดพร้อมกับข้อมูลเมตาที่เกี่ยวข้องสำหรับการฝังแต่ละครั้งใน Pinecone DB ข้อมูลเมตาสำหรับการฝังแต่ละครั้งจะถูกสร้างขึ้นในฟังก์ชัน upsertembeddingstopinecone พร้อมคีย์และค่าต่อไปนี้:
file_name : ชื่อของไฟล์ที่สกัดข้อความถูกแยกออกมาstart : ตำแหน่งอักขระเริ่มต้นของชิ้นข้อความในไฟล์ต้นฉบับend : ตำแหน่งอักขระตอนจบของข้อความที่มีในไฟล์ต้นฉบับtitle : ชื่อเรื่องของก้อนซึ่งเป็นชื่อไฟล์ในกรณีนี้text : ข้อความของก้อนข้อมูลเมตานี้มีประโยชน์สำหรับการจัดทำบริบทให้กับ Embeddings และใช้เพื่อแสดงข้อมูลเพิ่มเติมเกี่ยวกับการฝังที่จับคู่เมื่อดึงผลลัพธ์จากฐานข้อมูล Pinecone
ฟังก์ชั่น QuestionHandler ใน vault-web-server/postapi/question.go รับผิดชอบในการจัดการคำถามที่เข้ามาทั้งหมด เมื่อมีการป้อนคำถามในส่วนหน้าและผู้ใช้กด "ค้นหา" (หรือ Enter) เซิร์ฟเวอร์ใช้ OpenAI EMBEDDINGS API อีกครั้งเพื่อรับการฝังสำหรับคำถาม (AKA Query Vector) เวกเตอร์แบบสอบถามนี้ใช้ในการสืบค้น Pinecone DB เพื่อรับบริบทที่เกี่ยวข้องมากที่สุดสำหรับคำถาม ในที่สุดพรอมต์จะถูกสร้างขึ้นโดยการบรรจุบริบทที่เกี่ยวข้องมากที่สุด + คำถามในสตริงพร้อมท์ที่ปฏิบัติตามขีด จำกัด โทเค็น Openai (ห้องสมุด Go Tiktoken ใช้เพื่อประเมินจำนวนโทเค็น)
ส่วนหน้าถูกสร้างขึ้นโดยใช้ React.js และ less สำหรับการจัดแต่งทรงผม
หากคุณต้องการอ่านเพิ่มเติมเกี่ยวกับหัวข้อนี้ฉันขอแนะนำโพสต์นี้จากบล็อก Pinecone:
ฉันหวังว่าคุณจะสนุกกับมัน (:
ขณะนี้ฉันมีขนาดไฟล์สูงสุดแต่ละไฟล์ตั้งค่าเป็น 3MB หากคุณต้องการเพิ่มขีด จำกัด นี้ให้แก้ไขค่าคงที่ MAX_FILE_SIZE และ MAX_TOTAL_UPLOAD_SIZE ในค่าคงที่ fileUpload.go
pdfs, .txt, .rtf, .docx, .epub และ plaintext
เมื่อเร็ว ๆ นี้ Pinecone จำกัด การใช้เนมสเปซสำหรับผู้ใช้ระดับฟรี หากคุณอยู่ในระดับฟรีที่สร้างขึ้นใหม่ข้อ จำกัด เหล่านี้จะนำไปใช้กับคุณ