محرك بحث ذكي لأرشيف بحثي: استعلام طبيعي على آلاف الوثائق
سير عمل لمراكز الأبحاث والباحثين: تحويل أرشيف PDFs و DOCX و notes (آلاف الوثائق) إلى قاعدة معرفة قابلة للسؤال بلغة طبيعية، مع citations دقيقة وتحديث آلي للأرشيف الجديد.
الهدف من مسار العمل
تحويل أرشيف ثابت (50,000+ وثيقة في بعض السيناريوهات) إلى أداة بحث ذكية تجيب على أسئلة معقدة بلغة طبيعية وتشير إلى المصدر الدقيق (ملف + صفحة). تخفيض زمن البحث عن معلومة من ساعات إلى ثوانٍ.
مخطط البنية والربط الهندسي
خطوات التشغيل التفصيلية
الخطوات
التفاصيل البرمجية والتهيئة
## المشكلة مركز أبحاث متراكم لديه أرشيف عمره عقود: مقالات أكاديمية مُحمَّلة، تقارير حقوقية، وثائق ميدانية، محاضر اجتماعات، مقابلات مفرغة. البحث بـ Ctrl+F داخل كل ملف غير عملي. Google Drive search سطحي. متطلبات الباحث: "ما المنهجيات المستخدمة في دراسات عام 2020 حول موضوع X؟" — سؤال لا يجيب عنه أي محرك بحث تقليدي. ## المُدخلات - أرشيف وثائق متعدد الصيغ (PDF نصية، PDF ممسوحة، DOCX, MD, TXT) - Apache Tika أو Unstructured للاستخراج - Tesseract OCR للـ PDFs الممسوحة - embedding model: bge-m3 للعربية والإنجليزية - vector DB: Qdrant أو Chroma (Qdrant أنسب للحجم 50k+) - Ollama: qwen2.5:14b أو 32b كـ generator - Open WebUI كـ frontend للسؤال - n8n للأتمتة (rescan دوري، إضافة وثائق جديدة) ## المُخرجات - Vector index قابل للاستعلام بآلاف الوثائق - إجابات بلغة طبيعية مع citations (اسم الملف، رقم الصفحة، الفقرة) - تنبيهات للباحثين عن مواضيع يتابعونها (عند إضافة وثائق جديدة لها صلة) - تقارير دورية: أكثر الأسئلة طُرحت، أكثر الوثائق رُجِع إليها ## مخطط Mermaid ```mermaid graph LR subgraph Ingest A[Documents Folder] --> B[Tika - text extract] B --> C[Tesseract OCR if scanned] C --> D[Chunking 800 tokens] D --> E[bge-m3 embeddings] E --> F[(Qdrant Vector DB)] end subgraph Query G[Researcher in Open WebUI] -->|Question| H[Open WebUI] H --> I[Embed query] I --> F F -->|Top-K chunks| J[Ollama qwen2.5] J -->|Answer + citations| H H --> G end K[New documents] -.daily scan.-> A ``` ## نقاط الفشل - OCR على نصوص عربية رديئة: تشوّه في النص. الحل: Tesseract مع نموذج عربي حديث + بشكل أمثل تدريب نموذج OCR على نمط الوثائق المحدد للمنظمة. - النموذج يجيب من ذاكرته لا من الوثائق: prompt النظام يجب أن يكون صارماً + temperature منخفض (0.2-0.3). - Hallucination في citations: النموذج يخترع أرقام صفحات. الحل: تحقق automated — استخراج citations من الجواب، التأكد أنها تطابق metadata الـ chunks المسترجعة. - البحث على وثائق بلغات متعددة (عربي + إنجليزي مختلطين): bge-m3 multi-lingual لكن النتائج قد تتذبذب. الحل: collections منفصلة لكل لغة، أو cross-lingual reranker. - حجم الأرشيف يتجاوز Qdrant memory: الحل: Qdrant على disk-based storage مع caching، أو scaling أفقي. - وثائق محمية بكلمة مرور: Tika يفشل. الحل: قائمة استثناءات يدوية، أو فك الحماية يدوياً قبل الـ ingestion. ## نقاط المراجعة البشرية - كل إجابة من النموذج تذكر مصادر — الباحث يتحقق من المصدر قبل الاستشهاد - النموذج لا يستبدل القراءة الأكاديمية — هو أداة دلالة على وثائق ذات صلة - نتائج الـ rerank الآلي لا تُعتمد كنهائية للأبحاث الجدية — مراجعة بشرية للوثائق المرتبة - تنبيهات الاهتمام للباحثين هي اقتراحات — هم يقررون ما إذا كانت الوثيقة فعلاً ذات صلة - Glossary أكاديمي يبنيه الفريق ويُغذّى في prompt النظام لضمان دقة المصطلحات ## اعتبارات الخصوصية الأرشيف البحثي قد يحوي: • وثائق غير منشورة (مسودات، مقالات قيد المراجعة). • بيانات مشاركين في دراسات (مقابلات، شهادات). • مراسلات داخلية حساسة. الحماية: • كل البنية محلية. لا يخرج شيء. • صلاحيات Open WebUI الدقيقة: كل باحث يرى Collections المخوّل لها. • audit logs لكل استعلام: من سأل ماذا، متى. مهم للمشاريع التي تشترط ذلك. • Backups مشفّرة، رحلة آمنة. • للوثائق التي تحوي PII (بيانات مشاركين)، فكّر في تشخيرها (pseudonymization) قبل الـ ingestion — استبدل الأسماء بـ معرّفات. ## ملاحظات الصيانة إعادة فهرسة دورية: مع تطور embedding models، النموذج الجديد قد يعطي نتائج أفضل. خطّط لـ re-embedding سنوياً. مراقبة جودة الإجابات شهرياً (samples). تحديث Glossary الأكاديمي مع نمو الأرشيف. أرشفة الوثائق القديمة جداً إلى collection منفصل (ليست في الـ default search لتسريع الاستعلامات الأخدث).