محرك البحث الدلالي مكتوب في جافا كمشروع جامعي
تحذير
هذا المشروع ليس على الإطلاق جاهز للإنتاج . تم تطويره كمشروع جامعي ، كدليل على المفهوم. إذا رأيت هذه الرسالة ، فهذا يعني أنني أقوم بالفعل بتطوير إصدار جديد من هذا المشروع ، والذي يعتمد على بنية الخدمات الدقيقة ، وهي أكثر تحسينًا.
تحتاج إلى تحديد بعض env vars:
export MILVUS_HOST=localhost MILVUS_PORT=19530 MONGODB_URI=mongodb://localhost:27017/ RABBITMQ_HOST=localhost RABBITMQ_USERNAME=user RABBITMQ_PASSWORD=pass MODEL_PATH=models/model.onnx تحتاج إلى نموذج التضمين بتنسيق ONNX. لقد استخدمت هذا النموذج: Cointembert/labse-en-ru. للتحويل ، استخدمت الأداة المساعدة من هذه المقالة: التصدير إلى ONNX. أيضًا ، يمكنك استخدام أي نموذج تضمين بتنسيق ONNX مع بعد متجه 768. ضع النموذج في مجلد النماذج ، مثل models/model.onnx
بناء وتشغيل المشروع مع:
./gradlew runستكون واجهة برمجة التطبيقات متاحة على المنفذ 4567
ملحوظة
تمت كتابة المشروع مع التركيز على حقيقة أنه سيكون من الممكن تشغيل أكبر عدد ممكن من عمال الفهرسة. ولكن نظرًا للمواعيد النهائية الضيقة ، لم يكن هناك وقت كافٍ للتحسين ، ويقوم كل عامل فهرسة بتحميل نموذج في ذاكرته. الجري بحذر!
مخطط انسيابي TD
ش (المستخدم)
A (API user)
S (خدمة البحث)
أنا (خدمة الفهرسة)
ه (نموذج التضمين)
DM [(Mongo)]
DV [(Milvus)]
ص [(الأرانب)]
u -> | طلب API | أ
A -> | إرسال مهمة الفهرسة إلى قائمة الانتظار | ص
R -> | استلام المهمة | أنا
أنا -> | تخزين الكلمات الرئيسية | DM
أنا -> | إنشاء المزيد من مهام الفهرسة | ص
أنا -> | استخراج من النص | ه
ه -> | تخزين التضمين | DV
A -> | طلب البحث | ق
S -> | استخراج من الاستعلام | ه
S -> | الاستعلام بواسطة الكلمات الرئيسية | DM
S -> | الاستعلام عن طريق التضمين | DV