نظام RAG للمستندات محلي أولاً مع بحث هجين ودعم متعدد التنسيقات
احتاج فريق يعمل على بناء أدوات للمطورين إلى نظام ذكاء مستندات محلي بالكامل يحافظ على الخصوصية، قادر على استيعاب تنسيقات ملفات متعددة، وبناء قواعد معرفة قابلة للبحث، والإجابة على استعلامات اللغة الطبيعية باستخدام Retrieval-Augmented Generation — دون إرسال أي بيانات إلى external APIs.
ناقش مشروعك
التحدي
كانت حلول RAG الحالية لديها قيود كبيرة على حالات الاستخدام التي تركز على الخصوصية والمطورين:
- الاعتماد على API خارجي — تتطلب معظم أدوات RAG إرسال محتوى المستندات إلى APIs التضمين المستندة إلى السحابة، مما ينتهك متطلبات الخصوصية
- دعم محدود للتنسيقات — عادةً ما تتعامل الحلول مع النص العادي أو PDF فقط، متجاهلة spreadsheets و Word docs و HTML و Markdown
- تقسيم غير فعال (Chunking) — تجاهل تقسيم النص الساذج بنية المستند (صفحات، أوراق، عناوين)، مما أدى إلى إنشاء أجزاء (chunks) ضعيفة السياق
- فجوات الكلمات المفتاحية — أخطأ البحث القائم على التضمين (embedding) فقط في التقاط التطابقات الدقيقة للكلمات المفتاحية التي يمكن للبحث المعجمي (lexical search) التقاطها
- عدم القدرة على التعامل مع جداول البيانات — لم تتمكن أنظمة RAG من التعامل مع البيانات الجدولية المهيكلة أو الإجابة على استعلامات التصفية/التجميع
- عدم إعادة الترتيب — غالبًا ما أظهر الاسترجاع الأولي نتائج ذات صلة جزئياً فقط بدون مرشح جودة للمرور الثاني
حلنا
لقد قمنا ببناء نظام RAG محلي أولاً كامل مع استيعاب المستندات متعددة التنسيقات، وتقسيم (chunking) يراعي البنية، وتوليد التضمينات (embedding) محلياً، ومسار بحث هجين (دلالي + نص كامل + حداثة)، وإعادة ترتيب بواسطة cross-encoder، وواجهة مستخدم قائمة على الويب — وكل ذلك يعمل بالكامل على جهاز المستخدم.
البنية
- محملات المستندات (Document Loaders): محاليل (parsers) خاصة بالتنسيق لـ PDF و DOCX و XLSX و CSV و HTML و Markdown والنص العادي
- مقسِّم (Chunker): تقسيم يراعي البنية ويحافظ على حدود الصفحة والورقة والعنوان
- تضمينات (Embeddings): نموذج تضمين محلي عبر Transformers.js (لا توجد مكالمات API خارجية)
- قاعدة بيانات المتجهات (Vector Database): LanceDB (بدون خادم، قائم على الملفات) لتخزين التضمينات (embedding) والبحث عن التشابه
- البحث عن النص الكامل (Full-Text Search): فهرسة قائمة على Trigram للمطابقة المعجمية
- إعادة الترتيب (Reranker): نموذج Cross-encoder لتسجيل النتائج بناءً على السياق
- محلل الاستعلامات (Query Analyzer): توجيه اكتشاف النية بين الاستعلامات الدلالية والمهيكلة
- خادم الويب (Web Server): واجهة Express.js API مع إدارة المشاريع ونقاط نهاية البحث
- الواجهة الأمامية (Frontend): واجهة مستخدم قائمة على الويب لتحميل المستندات وإدارتها والبحث التفاعلي
مسار معالجة المستندات
محملات متعددة التنسيقات
يكتشف نمط التسجيل نوع الملف تلقائيًا ويوجه إلى المحلل (parser) المناسب:
- PDF — استخراج النص مع تجزئة على مستوى الصفحة
- Word (.docx/.doc) — تحليل يراعي العناوين ويحافظ على تسلسل المستند الهرمي
- Excel/CSV — تحليل ورقة بورقة مع اكتشاف الرؤوس ومحتوى على مستوى الصف
- HTML — استخراج يراعي العلامات (tags) مع الحفاظ على البنية
- Markdown — تحليل الأقسام بناءً على العناوين
- Plain Text — تجزئة قائمة على السطر
يستخرج كل محمل البيانات الوصفية (metadata) (العنوان، المؤلف، تاريخ الإنشاء، عدد الصفحات/الأوراق، عدد الكلمات) إلى جانب المحتوى، مما ينتج أقساماً مهيكلة مع مراجع المصدر.
تقسيم (Chunking) يراعي البنية
على عكس تقسيم النص الساذج، يحترم المقسِّم (chunker) حدود المستندات:
- يحافظ على فواصل الصفحات (PDFs)، وحدود الأوراق (spreadsheets)، وتسلسل العناوين الهرمي (Word/Markdown)
- تحديد الحجم بناءً على الرمز (token) مع حجم جزء (chunk) وتداخل قابلين للتكوين
- ارتداد هرمي: يقسم حسب الأقسام أولاً، ثم الفقرات، ثم الجمل
- يحتفظ كل جزء (chunk) ببيانات المصدر الوصفية (metadata) (رقم الصفحة، اسم الورقة، العنوان) للإسناد
التضمين والفهرسة (Embedding & Indexing)
نموذج التضمين المحلي
- يعمل بالكامل محليًا عبر Transformers.js — لا تغادر أي بيانات الجهاز
- نموذج كمومي لتحسين الأداء
- تضمين دفعي للمعالجة المجمعة الفعالة
- اقتطاع تلقائي عند حدود الكلمات مع تطبيع L2
تخزين المتجهات
يوفر LanceDB تخزين متجهات بدون خادم:
- قائم على الملفات (لا حاجة لخادم قاعدة بيانات منفصل)
- عزل لكل مشروع مع فهارس مستقلة
- مفاتيح ذاكرة التخزين المؤقت المستندة إلى SHA256 لإلغاء الازدواجية
- بيانات وصفية مخزنة بجانب المتجهات للاسترجاع المفلتر
مسار البحث الهجين
يجمع مسار الاسترجاع بين ثلاث إشارات ترتيب للحصول على نتائج أفضل من أي نهج فردي:
الإشارة 1: بحث التضمين (الدلالي) (Embedding Search (Semantic))
يجد بحث تشابه المتجهات أجزاء (chunks) ذات معنى مرتبط حتى عند استخدام كلمات مختلفة. يتعامل مع إعادة الصياغة، والمرادفات، والاستعلامات المفاهيمية.
الإشارة 2: البحث عن النص الكامل (المعجمي) (Full-Text Search (Lexical))
تلتقط الفهرسة القائمة على Trigram مع تشابه Jaccard التطابقات الدقيقة للكلمات المفتاحية التي قد يفوتها بحث التضمين (embedding search) — وهو أمر مهم للمصطلحات الفنية والأسماء والمعرفات.
الإشارة 3: تعزيز الحداثة
يفضل ترجيح التضاؤل الأسي المستندات التي تم الوصول إليها أو تعديلها مؤخرًا، مما يضمن ظهور المعلومات المحدثة أولاً.
دمج النتائج
يتم دمج الإشارات بأوزان قابلة للتكوين (افتراضيًا: 50% دلالي، 25% معجمي، 25% حداثة)، ويتم تطبيعها وتصفيتها بحد أدنى للدرجة.
إعادة الترتيب بواسطة Cross-Encoder
بعد الاسترجاع الأولي، يعيد نموذج cross-encoder تسجيل المرشحين الأوائل:
- تسجيل يراعي السياق يأخذ في الاعتبار أزواج الاستعلام والمستند معًا (وليس بشكل مستقل)
- حساب تعزيز الكلمات المفتاحية لتداخل المصطلحات
- تسجيل مختلط (cross-encoder + إشارات الكلمات المفتاحية)
- ينتج قائمة مرتبة نهائية بدقة أعلى من الاسترجاع الأولي وحده
دعم البيانات المهيكلة
لمحتوى جداول البيانات، يوفر النظام قدرات إضافية:
- الكشف التلقائي عن أنواع الأعمدة (رقمي، تاريخ، منطقي، نصي)
- تصفية باللغة الطبيعية (مثل، "الموظفين في الهندسة الذين تتجاوز رواتبهم الحد الأدنى")
- دعم التجميع (العدد، المجموع، المتوسط، الحد الأدنى، الحد الأقصى)
- يوجه محلل الاستعلامات الاستعلامات المهيكلة إلى محرك مخصص بدلاً من بحث التضمين (embedding search)
واجهة الويب
- إدارة المشاريع — إنشاء مشاريع قاعدة المعرفة، وتحديثها، وحذفها
- تحميل المستندات — تحميل الملفات بالسحب والإفلات مع الكشف التلقائي عن التنسيق
- إنشاء المستندات — إنشاء المستندات من النص مباشرة في واجهة المستخدم
- البحث التفاعلي — واجهة استعلام اللغة الطبيعية مع نتائج مرتبة
- الإحصائيات — حجم الفهرس، عدد المستندات، وتوزيع التنسيقات لكل مشروع
الميزات الرئيسية
- محلي بالكامل — جميع المعالجة على الجهاز؛ لا توجد مكالمات API خارجية للتضمينات أو البحث
- 9 تنسيقات إدخال — PDF, DOCX, DOC, XLSX, XLS, CSV, HTML, Markdown, plain text
- تقسيم (Chunking) يراعي البنية — يحافظ على الصفحات والأوراق والعناوين كحدود للأجزاء (chunks)
- البحث الهجين — يجمع بين الإشارات الدلالية والمعجمية والحداثة لاسترجاع أفضل
- إعادة الترتيب بواسطة Cross-Encoder — تسجيل للمرور الثاني لنتائج ذات دقة أعلى
- الاستعلامات المهيكلة — تصفية وتجميع باللغة الطبيعية على بيانات جداول البيانات
- قاعدة بيانات متجهات بدون خادم — تخزين قائم على الملفات باستخدام LanceDB بدون أعباء بنية تحتية إضافية
- كتابة المستندات — قدرات التصدير لإنشاء PDF و DOCX و XLSX
- عزل المشاريع — قواعد معرفة مستقلة مع فهارس منفصلة
- واجهة مستخدم الويب (Web UI) — واجهة كاملة لإدارة المستندات والبحث التفاعلي
النتائج
المكدس التقني
caseStudyDetail.more دراسات الحالة
استكشف المزيد من تطبيقاتنا التقنية
تحليل جداول البيانات والمستندات المدعوم بالذكاء الاصطناعي مع تنسيق متعدد الوكلاء والمراجعة المرجعية للمستندات
احتاج فريق بيانات مؤسسي إلى تحليل واستعلام وتحرير مجموعات كبيرة من جداول البيانات والمستندات (Excel, CSV, Google Sheets, PDFs, Word docs) باستخدام اللغة الطبيعية — مع القدرة على المراجعة المرجعية للبيانات عبر ملفات متعددة وتنفيذ مهام سير عمل تحليلية متعددة الخطوات دون الحاجة إلى معالجة البيانات يدويًا.
معالجة الفواتير المدعومة بـ AI باستخدام OCR ودمج QuickBooks
كانت شركة متوسطة الحجم تعالج مئات فواتير الموردين شهريًا بحاجة إلى التخلص من إدخال البيانات يدويًا عن طريق استخلاص بيانات الفاتورة تلقائيًا باستخدام AI/OCR ومزامنتها مباشرةً مع QuickBooks للمسك الدفتري وتتبع المدفوعات.
مستعد لتحويل عملك؟
دعنا نناقش كيف يمكننا تطبيق حلول مشابهة لتحدياتك.