الهدف الأساسي من هذا المشروع هو عرض قدرات البحث عن المتجهات من خلال توفير واجهة سهلة الاستخدام تمكن المستخدمين من إجراء عمليات بحث سياقية عبر مجموعة من المستندات النصية. من خلال الاستفادة من قوة BERT من Hugging Face وFAISS من Facebook، فإننا نعيد مقاطع نصية وثيقة الصلة استنادًا إلى المعنى الدلالي لاستعلام المستخدم بدلاً من مجرد مطابقات الكلمات الرئيسية. يعد هذا المشروع بمثابة نقطة انطلاق للمطورين والباحثين والمتحمسين الذين يرغبون في التعمق أكثر في عالم البحث عن النص السياقي وتعزيز تطبيقاتهم باستخدام أحدث تقنيات البرمجة اللغوية العصبية.
هدفي هو التأكد من أننا نفهم قاعدة بيانات المتجهات خلف الكواليس من البداية.
لقطة شاشة للتطبيق:
لكي تعمل على نظامك، يمكنك تثبيت جميع الحزم الضرورية عبر النقطة باستخدام ملفات المتطلبات:
pip install -r requirements.txt
لمعلوماتك، أنا أستخدم Python 3.10.1.
ومع ذلك، إذا كان لديك وحدة معالجة رسومات، يُطلب منك تثبيت وحدة معالجة الرسومات FAISS لإجراء عمليات تكامل أسرع وأكبر لقاعدة البيانات.
النسخة الحالية من هذا المشروع تشمل:
في حين أن المشروع يقدم نظام بحث سياقي وظيفي، فقد تم تصميمه ليكون معياريًا، مما يسمح بالتوسع المحتمل والتكامل في أنظمة أو تطبيقات أكبر.
يكمن أساس هذا المشروع في الاعتقاد بأن تقنيات البرمجة اللغوية العصبية الحديثة يمكن أن تقدم نتائج بحث أكثر دقة وملاءمة للسياق مقارنة بالطرق التقليدية المعتمدة على الكلمات الرئيسية. وفيما يلي تفصيل لنهجنا:
بناءً على هذا النهج، قمت بتقسيم المشروع إلى قسمين:
القسم 1: إنشاء بيانات موجهة قابلة للبحث
في هذا القسم، نقوم أولاً بقراءة المدخلات من المستندات، وتقسيمها إلى أجزاء أصغر، وإنشاء متجهات باستخدام نموذج قائم على BERT، ثم تخزينها بكفاءة باستخدام FAISS. هنا مخطط التدفق الذي يوضح نفس الشيء.
نقوم بإنشاء ملف فهرس FAISS الذي يحتوي على تمثيل متجه للوثيقة المقسمة. نقوم أيضًا بتخزين فهرس كل قطعة. يتم الحفاظ على هذا حتى لا نضطر إلى الاستعلام عن قاعدة البيانات/المستندات مرة أخرى. وهذا يساعدنا في إزالة عمليات القراءة الزائدة عن الحاجة.
نقوم بتنفيذ هذا القسم باستخدام create_index.py. سيتم إنشاء الملفين أعلاه. إذا كنت بحاجة إلى استخدام نماذج أخرى، فهل أنت مستعد للقيام بذلك من خلال HuggingFace hub؟
ملاحظة: إذا وجدت مشكلات في إعداد المعلمة الفائقة للأبعاد، فراجع ملف config.json الخاص بالنماذج للعثور على تفاصيل حول أبعاد النموذج الذي تحاول استخدامه.
القسم 2: إنشاء واجهة تطبيق قابلة للبحث
في هذا القسم، هدفي هو بناء واجهة تسمح للمستخدمين بالتفاعل مع المستندات. أعطي الأولوية للتصميم البسيط دون التسبب في عقبات إضافية.
index.html
: صفحة HTML للواجهة الأمامية لإدخال استعلامات البحث.app.py
: تطبيق Flask الذي يخدم الواجهة الأمامية ويتعامل مع استعلامات البحث.search_engine.py
: يحتوي على منطق لإنشاء التضمين وبحث FAISS وتمييز الكلمات الرئيسية. /context_search/
- templates/
- index.html
- static/
- css/
- style.css
- images/
- img1.png
- img2.png
- Approach.png files
- app.py
- search_engine.py
- create_index.py
- index_to_chunk.pkl
- faiss_index.idx
faiss_index.idx
) وتعيينًا مصاحبًا من الفهرس إلى مقطع النص ( index_to_chunk.pkl
). python app.py
-- OR --
flask run --host=127.0.0.1 --port=5000
http://localhost:5000
.هناك دائما مجال للتحسينات. فيما يلي بعض التحسينات المحتملة والميزات الإضافية التي يمكن دمجها:
هذا المشروع تحت رخصة MIT. لا تتردد في الاستخدام عن طريق الاستشهاد والتعديل والتوزيع والمساهمة. اقرأ المزيد.
إذا كنت مهتمًا بتحسين هذا المشروع، فنحن نرحب بمساهماتك! يرجى فتح طلب سحب أو إصدار في هذا المستودع. أقوم بشكل أساسي بإعطاء الأولوية للأشياء المذكورة أعلاه للقيام بالتحسينات. سيتم أيضًا النظر في طلبات السحب الأخرى ولكن ذات أولوية أقل.
شكرا مقدما على اهتمامك. :سعيد: .