تحديث خطوط أنابيب معالجة المستندات القديمة وخفض التكاليف
تقليل الصيانة من خلال دمج منطق التحويل إلى Markdown
إذا كنت تقضي 5 ساعات إضافية كل أسبوع في إدخال المئات من ملفات PDF وPPT وExcel في نظام RAG الخاص بك، فإن السبب يكمن في مكتبات التحليل (parsing) المجزأة. الهيكل الحالي الذي يمزج بين PyPDF2 وopenpyxl يزيد من تعقيد الكود فقط. من خلال اعتماد مكتبة MarkItDown من مايكروسوفت، يمكنك التخلص من منطق المعالجة المتشعب والمعقد.
عند إعادة هيكلة خط الأنابيب (pipeline)، استخدم نمط مصنع المعالج (processor factory pattern):
- تخلص من المكتبات المتناثرة لكل تنسيق ووحد واجهة الاستدعاء باستخدام دالة
convert() من MarkItDown.
- قم بتفريع طريقة المعالجة بناءً على تعقيد المستند. استخدم محللاً خفيفاً للنصوص البسيطة، واختر MarkItDown للمستندات المعقدة التي تحتوي على العديد من الجداول.
- قم بعزل جميع التبعيات في حاويات Docker (بإصدار Python 3.11 أو أعلى) وقم بنشرها عبر FastAPI.
يجعل هذا الهيكل محرك التحليل قابلاً للتوسع بشكل مستقل. إذا تم الحفاظ على بنية الجدول، فإن ذلك يقلل من أخطاء حفظ الجداول عند قراءة المستندات بواسطة نماذج اللغة الكبيرة (LLM) بنسبة 34% (بناءً على إعلان مايكروسوفت لعام 2024).
توفير 30% من تكاليف واجهة برمجة التطبيقات (API) من خلال المعالجة المسبقة لـ Markdown
تتناسب تكاليف رموز (tokens) التضمين طردياً مع طول ملف Markdown. تحتوي المخرجات التي تنتجها MarkItDown على بيانات تعريف (metadata) أو ضجيج لا داعي لإرساله إلى نماذج اللغة الكبيرة. بمجرد تصفية هذا المحتوى، يمكنك خفض تكاليف واجهة برمجة التطبيقات بنسبة 30%.
قم ببناء منطق تصفية فعال:
- استخدم وحدة
re في بايثون لتقليل الأسطر الفارغة المتتالية (\n{3,}) إلى سطرين، واحذف نصوص حقوق النشر المتكررة في الأسفل أو وسوم HTML باستخدام التعبيرات النمطية.
- استخدم
MarkdownHeaderTextSplitter للتقسيم بناءً على العناوين. إدارة أجزاء فرعية للبحث وأجزاء أصلية للسياق تحسن دقة البحث.
- استخدم تجزئة MD5 لمنع التضمين المكرر لنفس التقرير من الأساس.
من خلال الاهتمام بكفاءة الرموز، يمكنك خفض تكاليف واجهة برمجة تطبيقات المؤسسة الشهرية بشكل ملحوظ.
إدارة جودة البيانات باستخدام اختبار اللقطات (Snapshot Testing)
عند تغيير إصدار المكتبة، تتغير نتائج التحليل بشكل طفيف. توقف عن التحقق اليدوي حيث يقوم المهندسون بفتح الملفات واحداً تلو الآخر. سيؤدي اعتماد اختبار اللقطات إلى اكتشاف تدهور الجودة على الفور.
قم بإنشاء بيئة اختبار وحدة لمنع التراجع (regression):
- قم بتثبيت إضافة
pytest-regressions واحفظ ملفات Markdown المحولة بشكل جيد كملفات "Master الذهبية".
- اجعل سكربت الاختبار يقارن نتائج التحويل بملفات Master الذهبية في كل مرة. أرسل تنبيهاً فورياً في حال حدوث فرق (diff).
- استخدم نماذج محولات الجمل (sentence transformers) لقياس التشابه الجيبي (cosine similarity) بين الأصل والمحول. يمكنك ضبط النظام ليقوم بتسجيل السجلات (logs) فقط عندما يكون معدل الحفاظ على التنسيق أقل من 0.9.
هذا النظام الآلي يلغي عمليات المقارنة اليدوية التي كانت تستهلك 5 ساعات أسبوعياً.
زيادة سرعة المهام المجمعة من خلال المعالجة المتوازية
معالجة آلاف المستندات بشكل تسلسلي هو إهدار للنظام. باستخدام concurrent.futures.ProcessPoolExecutor لتعميم المعالجة المجمعة، يمكنك إنهاء المهام التي كانت تستغرق أياماً في غضون ساعات فقط.
قم بتنفيذ معمارية التوازي كالتالي:
- إذا كانت ذاكرة الخادم 16 جيجابايت، فقم بتقييد عدد العاملين (workers) بـ 20 إلى 25. الزيادة المفرطة ستؤدي فقط إلى أخطاء في الذاكرة.
- قم بتقسيم الملفات إلى مجموعات من 50 إلى 100، واستدعِ جامع القمامة (garbage collection) قسراً في كل مجموعة للتخلص من تسريبات الذاكرة.
- افصل ملفات PDF ذات الحجم الكبير التي تتجاوز 10 ميجابايت إلى طابور (queue) مخصص ليتولاها عاملون ذوو أداء عالٍ.
تساعد هذه الطريقة في استخدام موارد النظام بكفاءة مع الحفاظ على حداثة البيانات.