نظام مقارنة المستندات باستخدام RAG
نظام يعتمد على الجيل المعزز للاسترجاع (RAG) لإجراء مقارنات سياقية بين وثيقتين. يستخدم هذا النظام Azure OpenAI لمعالجة اللغة والتضمين، وChromaDB لتخزين المتجهات، وFastAPI للواجهة الخلفية، وStreamlit لواجهة المستخدم.
سمات
- تحميل ومعالجة تنسيقات المستندات المتعددة (PDF، DOCX، TXT)
- مقارنة المستندات المستندة إلى RAG مع البحث الدلالي
- واجهة ويب تفاعلية مع عرض مقارنة جنبًا إلى جنب
- استعلامات المقارنة المخصصة
- نتائج المقارنة للتحميل
- كفاءة تقطيع المستندات ومعالجتها
- تخزين المتجهات باستخدام ChromaDB
- واجهة REST API الخلفية مع FastAPI
المتطلبات الأساسية
- بايثون 3.8+
- الوصول إلى Azure OpenAI API
- مساحة تخزين كافية لقاعدة بيانات المتجهات
تثبيت
- استنساخ المستودع:
git clone < repository-url >
cd document-comparison-system
- تثبيت الحزم المطلوبة:
pip install -r requirements.txt
- قم بإنشاء ملف
.env
في جذر المشروع باستخدام بيانات اعتماد Azure OpenAI الخاصة بك:
AZURE_OPENAI_API_KEY=your_api_key
AZURE_OPENAI_ENDPOINT=your_endpoint
AZURE_DEPLOYMENT_NAME=your_deployment_name
AZURE_EMBEDDINGS_DEPLOYMENT_NAME=your_embeddings_deployment_name
هيكل المشروع
project_root/
├── app.py # Streamlit frontend
├── backend.py # FastAPI backend
├── processor.py # Document processing and RAG logic
├── config.py # Configuration settings
└── requirements.txt # Project dependencies
تشغيل التطبيق
- بدء تشغيل الخادم الخلفي:
- في محطة جديدة، ابدأ الواجهة الأمامية لـ Streamlit:
- افتح المتصفح الخاص بك وانتقل إلى
http://localhost:8501
للوصول إلى التطبيق.
الاستخدام
تحميل المستندات:
- استخدم أدوات تحميل الملفات لتحميل مستندين للمقارنة
- التنسيقات المدعومة: PDF، DOCX، TXT
- انتظر تأكيد المعالجة
مقارنة المستندات:
- بمجرد تحميل كلا المستندين، يمكنك البدء في المقارنة
- اختياريًا، أدخل استعلام مقارنة مخصصًا
- انقر فوق "مقارنة المستندات" لإنشاء التحليل
عرض النتائج:
- يتم عرض نتائج المقارنة في ثلاث علامات تبويب:
- المقارنة: التحليل الشامل
- الوثيقة 1 مقتطفات: الأجزاء ذات الصلة من الوثيقة الأولى
- مقتطفات من الوثيقة 2: الأجزاء ذات الصلة من الوثيقة الثانية
- قم بتنزيل النتائج الكاملة كملف JSON
إعادة ضبط:
- استخدم زر "إعادة الضبط" لمسح الجلسة الحالية والبدء من جديد
نقاط نهاية API
توفر الواجهة الخلفية لـ FastAPI نقاط النهاية التالية:
نشر / تحميل
تحميل ومعالجة مستند واحد.
- الطلب: بيانات النموذج متعدد الأجزاء مع الملف
- الرد: معرف المستند ورسالة النجاح
ما بعد / قارن
قارن بين وثيقتين.
- حدود:
- doc1_id: معرف المستند الأول
- doc2_id: معرف المستند الثاني
- الاستعلام: استعلام مقارنة مخصص اختياري
- الرد: نتائج المقارنة بما في ذلك التحليل والمقتطفات ذات الصلة
إعدادات
إعدادات التكوين الرئيسية في config.py
:
-
CHUNK_SIZE
: حجم أجزاء المستند (الافتراضي: 1000) -
CHUNK_OVERLAP
: التداخل بين القطع (الافتراضي: 200) -
SUPPORTED_FILES
: قائمة أنواع الملفات المدعومة -
CHROMA_PERSIST_DIRECTORY
: موقع تخزين قاعدة بيانات المتجهات
التفاصيل الفنية
معالجة المستندات
- يتم تقسيم المستندات إلى أجزاء باستخدام RecursiveCharacterTextSplitter
- تتم معالجة النص مسبقًا لإزالة الأحرف الخاصة وتطبيع المسافات البيضاء
- يتم تضمين كل قطعة باستخدام عمليات تضمين Azure OpenAI
- يتم تخزين القطع في ChromaDB مع بيانات تعريف المستند
تنفيذ RAG
- يستخدم بحث التشابه للعثور على الأجزاء ذات الصلة من كلا الوثيقتين
- ينفذ البحث المختلط من خلال إمكانيات البحث في ChromaDB
- مطالبات مخصصة لتوليد التحليل المقارن
- معلمات الاسترجاع القابلة للتكوين
تخزين المتجهات
- يتم استخدام ChromaDB لتخزين واسترجاع المتجهات بكفاءة
- يتيح التخزين المستمر التخزين المؤقت للمستندات التي تمت معالجتها
- تصفية البيانات الوصفية لعمليات البحث الخاصة بالمستندات
معالجة الأخطاء
يتضمن النظام معالجة شاملة للأخطاء من أجل:
- أنواع الملفات غير المدعومة
- فشل المعالجة
- أخطاء اتصال واجهة برمجة التطبيقات
- معرفات المستند غير صالحة
التحسينات المستقبلية
التحسينات المحتملة:
- دعم لمزيد من تنسيقات الملفات
- خوارزميات إعادة الترتيب المتقدمة
- مقارنة المستندات المتعددة الوسائط
- مصادقة المستخدم
- تاريخ المقارنة
- استراتيجيات تقطيع أكثر تطوراً
- آليات التخزين المؤقت المتقدمة
المساهمة
المساهمات هي موضع ترحيب! لا تتردد في تقديم طلبات السحب.
رخصة
هذا المشروع مرخص بموجب ترخيص MIT - راجع ملف الترخيص للحصول على التفاصيل.