يستخدم Op Vault مكدس OP (Openai + Pinecone Vector Database) لتمكين المستخدمين من تحميل ملفات المعرفة المخصصة الخاصة بهم وطرح أسئلة حول محتوياتهم.
Vault.pash.city

مع الإعداد السريع ، يمكنك تشغيل الإصدار الخاص بك من خادم Golang هذا جنبًا إلى جنب مع واجهة React Frontiply سهلة الاستخدام تتيح للمستخدمين طرح أسئلة Openai حول قاعدة المعرفة المحددة المقدمة. ينصب التركيز الأساسي على المحتوى القابل للقراءة البشرية مثل الكتب والرسائل والمستندات الأخرى ، مما يجعله أداة عملية وقيمة لاستخراج المعرفة وإجابات الأسئلة. يمكنك تحميل كتب ومستندات مكتبة بأكملها واستلام إجابات مدببة مع اسم الملف والقسم المحدد داخل الملف الذي يعتمد عليه الإجابة!

مع قبو ، يمكنك:
اتبع مستندات GO هنا
أوصي بتثبيت NVM واستخدامه لتثبيت العقدة 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 ولصق نقطة نهاية API Pinecone الخاصة بك: echo "https://example-50709b5.svc.asia-southeast1-gcp.pinecone.io" > secret/pinecone_api_endpoint
تثبيت تبعيات حزمة JavaScript:
npm install
قم بتشغيل خادم الويب Golang (المنفذ الافتراضي :8100 ):
npm start
في نافذة طرفية أخرى ، قم بتشغيل WebPack لتجميع رمز JS وإنشاء ملف backdle.js:
npm run dev
تفضل بزيارة الإصدار المحلي من الموقع على http: // localhost: 8100
في مثال لقطات الشاشة ، قمت بتحميل كتبتين من أفلاطون وبعض الرسائل التي كتبها ألكساندر هاميلتون ، حيث عرضت قدرة OP Vault على الإجابة على الأسئلة بناءً على المحتوى الذي تم تحميله.





يستخدم خادم Golang Post APIs لمعالجة التحميلات الواردة والرد على الأسئلة:
/upload لتحميل الملفات
/api/question للإجابة على الأسئلة
يتم الإعلان عن جميع نقاط نهاية API في ملف Vault-Web-Server/Main.go.
يحتوي ملف Vault-Web-Server/postapi/fileupload.go على منطق UploadHandler للتعامل مع التحميلات الواردة على الواجهة الخلفية. تكون وظيفة التحميل في حزمة postapi مسؤولة عن التعامل مع تحميلات الملفات (مع الحد الأقصى لحجم التحميل الكلي البالغ 300 ميجابايت) ومعالجتها في التضمينات لتخزينها في Pinecone. إنه يقبل ملفات PDF و EPUB و .docx وملفات النص العادي ، ويستخلص النص منها ، ويقسم المحتوى إلى قطع. باستخدام Openai API ، فإنه يحصل على تضمينات لكل قطعة وتراجع (إدراج أو تحديثات) التضمين في Pinecone. تقوم الوظيفة بإرجاع استجابة JSON التي تحتوي على معلومات حول الملفات التي تم تحميلها وحالة المعالجة الخاصة بها.
بعد الحصول على تضمينات Openai لكل جزء من ملف تم تحميله ، يقوم الخادم بتخزين جميع التضمينات ، إلى جانب البيانات الوصفية المرتبطة بكل تضمين في Pinecone DB. يتم إنشاء البيانات الوصفية لكل تضمين في وظيفة upsertembeddingstopinecone ، مع المفاتيح والقيم التالية:
file_name : اسم الملف الذي تم استخراج قطعة النص منه.start : موضع حرف البدء من قطعة النص في الملف الأصلي.end : موضع الحرف النهائي من نص النص في الملف الأصلي.title : عنوان القطع ، وهو أيضًا اسم الملف في هذه الحالة.text : نص الجزء.هذه البيانات الوصفية مفيدة لتوفير السياق للتضمينات ويستخدم لعرض معلومات إضافية حول التضمينات المتطابقة عند استرداد النتائج من قاعدة بيانات Pinecone.
وظيفة QuestionHandler في Vault-Web-Server/postapi/Questions.GO هي المسؤولة عن التعامل مع جميع الأسئلة الواردة. عند إدخال سؤال على الواجهة الأمامية ويضغط المستخدم على "بحث" (أو أدخل) ، يستخدم الخادم واجهة برمجة تطبيقات Openai Openai مرة أخرى للحصول على تضمين للسؤال (AKA Query Vector). يتم استخدام ناقل الاستعلام هذا للاستعلام عن Pinecone DB للحصول على السياق الأكثر صلة للسؤال. أخيرًا ، تم تصميم مطالبة عن طريق تعبئة السياق الأكثر صلة + السؤال في سلسلة مطالبة تلتزم بحدود Openai Token (يتم استخدام مكتبة Go Tiktoken لتقدير عدد الرمز المميز).
تم تصميم الواجهة الأمامية باستخدام React.js less للتصميم.
إذا كنت ترغب في قراءة المزيد حول هذا الموضوع ، أوصي بهذا المنشور من مدونة Pinecone:
أتمنى أن تستمتع به (:
لدي حاليا حجم الملف الفردي الأقصى المُعين على 3 ميغابايت. إذا كنت ترغب في زيادة هذا الحد ، فقم بتحرير الثوابت MAX_FILE_SIZE و MAX_TOTAL_UPLOAD_SIZE في fileUpload.go.
pdfs ، .txt ، .rtf ، .docx ، .epub ، و plaintext.
في الآونة الأخيرة ، حصر Pinecone استخدام مساحات الأسماء لمستخدمي الطبقة المجانية. إذا كنت على طبقة مجانية تم إنشاؤها حديثًا ، فستطبق هذه القيود عليك.