mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-07-11 06:12:11 +02:00
update more languages
Signed-off-by: Alex Jenkins <kjenkins60@gatech.edu>
This commit is contained in:
parent
835acaa70e
commit
16c2f12a54
249 changed files with 117186 additions and 186 deletions
|
|
@ -11,19 +11,31 @@
|
|||
### التنفيذ الحالي
|
||||
|
||||
يعمل أصل البيانات حاليًا على النحو التالي:
|
||||
<<<<<<< HEAD
|
||||
يتم تخزين بيانات وصف المستند كـ RDF triples في الرسم البياني المعرفي.
|
||||
=======
|
||||
يتم تخزين بيانات وصف المستند كـ "ثلاثيات" RDF في الرسم البياني للمعرفة.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
يربط معرف المستند البيانات الوصفية بالمستند، بحيث يظهر المستند كعقدة في الرسم البياني.
|
||||
عند استخراج الحواف (العلاقات/الحقائق) من المستندات، تربط علاقة `subjectOf` الحافة المستخرجة بالمستند المصدر.
|
||||
|
||||
### المشاكل في النهج الحالي
|
||||
|
||||
<<<<<<< HEAD
|
||||
1. **تحميل البيانات الوصفية المتكرر:** يتم تجميع بيانات وصف المستند وتحميلها بشكل متكرر مع كل مجموعة من الـ triples المستخرجة من هذا المستند. هذا مضيعة ويزيد من التكرار - نفس البيانات الوصفية تنتقل كحمولة مع كل مخرج استخراج.
|
||||
=======
|
||||
1. **تحميل البيانات الوصفية المتكرر:** يتم تجميع بيانات وصف المستند وتحميلها بشكل متكرر مع كل مجموعة من "الثلاثيات" المستخرجة من هذا المستند. هذا مضيعة ويزيد من التكرار - حيث تنتقل نفس البيانات الوصفية كحمولة مع كل مخرج استخراج.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
2. **أصل بيانات سطحي:** تربط العلاقة `subjectOf` الحالية الحقائق مباشرة بالمستند ذي المستوى الأعلى فقط. لا توجد رؤية لسلسلة التحويل - أي الصفحة التي جاءت منها الحقيقة، أو الجزء، أو طريقة الاستخراج المستخدمة.
|
||||
|
||||
### الحالة المرغوبة
|
||||
|
||||
<<<<<<< HEAD
|
||||
1. **تحميل البيانات الوصفية مرة واحدة:** يجب تحميل بيانات وصف المستند مرة واحدة وإرفاقها بعقدة المستند ذات المستوى الأعلى، وليس تكرارها مع كل مجموعة من الـ triples.
|
||||
=======
|
||||
1. **تحميل البيانات الوصفية مرة واحدة:** يجب تحميل بيانات وصف المستند مرة واحدة وإرفاقها بعقدة المستند ذات المستوى الأعلى، وليس تكرارها مع كل مجموعة من "الثلاثيات".
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
2. **رسم بياني كامل لأصل البيانات:** التقاط سلسلة التحويل الكاملة من المستند المصدر عبر جميع القطع الأثرية الوسيطة وصولاً إلى الحقائق المستخرجة. على سبيل المثال، تحويل مستند PDF:
|
||||
|
||||
|
|
@ -40,6 +52,7 @@
|
|||
→ ...
|
||||
```
|
||||
|
||||
<<<<<<< HEAD
|
||||
3. **التخزين الموحد:** يتم تخزين الرسم البياني للأصل (provenance DAG) في نفس الرسم البياني للمعرفة كما يتم تخزين المعرفة المستخرجة. يتيح ذلك الاستعلام عن الأصل بنفس الطريقة التي يتم بها الاستعلام عن المعرفة - من خلال تتبع الحواف صعودًا في السلسلة من أي حقيقة إلى موقع مصدرها الدقيق.
|
||||
|
||||
4. **معرفات مستقرة:** لكل قطعة أثرية وسيطة (صفحة، جزء) معرف مستقر كعقدة في الرسم البياني.
|
||||
|
|
@ -47,6 +60,15 @@
|
|||
5. **الربط بين الأب والطفل:** يتم ربط المستندات المشتقة بآبائها وصولاً إلى المستند المصدر الرئيسي باستخدام أنواع علاقات متسقة.
|
||||
|
||||
6. **تخصيص الحقائق بدقة:** تشير العلاقة `subjectOf` في الحواف المستخرجة إلى الأصل الفوري (الجزء)، وليس المستند الرئيسي. يتم استعادة الأصل الكامل من خلال التنقل عبر الرسم البياني للأصل.
|
||||
=======
|
||||
3. **التخزين الموحد:** يتم تخزين الرسم البياني للأصل (provenance DAG) في نفس الرسم البياني للمعرفة مثل المعرفة المستخرجة. يتيح ذلك الاستعلام عن الأصل بنفس الطريقة التي يتم بها الاستعلام عن المعرفة - من خلال تتبع الحواف صعودًا في السلسلة من أي حقيقة إلى موقع مصدرها الدقيق.
|
||||
|
||||
4. **معرفات مستقرة:** لكل قطعة أثرية وسيطة (صفحة، جزء) معرف مستقر كعقدة في الرسم البياني.
|
||||
|
||||
5. **الربط بين الأبناء والآباء:** يتم ربط المستندات المشتقة بآبائها وصولاً إلى المستند المصدر الرئيسي باستخدام أنواع علاقات متسقة.
|
||||
|
||||
6. **تخصيص الحقائق بدقة:** تشير العلاقة `subjectOf` في الحواف المستخرجة إلى الأصل الفوري (الجزء)، وليس المستند الرئيسي. يتم استعادة الأصل الكامل من خلال اجتياز الرسم البياني للأصل.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
## حالات الاستخدام
|
||||
|
||||
|
|
@ -58,6 +80,7 @@
|
|||
1. يرسل المستخدم استعلامًا إلى وكيل GraphRAG.
|
||||
2. يسترجع الوكيل الحقائق ذات الصلة من الرسم البياني للمعرفة لصياغة استجابة.
|
||||
3. وفقًا لمواصفات الأصل في وقت الاستعلام، يقوم الوكيل بالإبلاغ عن الحقائق التي ساهمت في الاستجابة.
|
||||
<<<<<<< HEAD
|
||||
4. يربط كل حقيقة بمصدره (الجزء) عبر الرسم البياني للأصل.
|
||||
5. ترتبط الأجزاء بالصفحات، وترتبط الصفحات بمستندات المصدر.
|
||||
|
||||
|
|
@ -68,6 +91,18 @@
|
|||
فهم بالضبط من أين في المستند (في أي صفحة، في أي قسم) نشأت الحقيقة.
|
||||
|
||||
**القيمة:** يمكن للمستخدمين التحقق من صحة الاستجابات التي تم إنشاؤها بواسطة الذكاء الاصطناعي مقابل المصادر الأولية، مما يعزز الثقة ويمكن المستخدمين من التحقق من الحقائق.
|
||||
=======
|
||||
4. ترتبط كل حقيقة بمصدرها من خلال الرسم البياني للأصل.
|
||||
5. ترتبط الأجزاء بالصفحات، وترتبط الصفحات بمستندات المصدر.
|
||||
|
||||
**النتيجة في تجربة المستخدم:** يعرض الواجهة استجابة نموذج اللغة (LLM) جنبًا إلى جنب مع تحديد مصدر المعلومات. يمكن للمستخدم:
|
||||
رؤية الحقائق التي دعمت الاستجابة.
|
||||
الانتقال من الحقائق إلى الأجزاء إلى الصفحات إلى المستندات.
|
||||
مراجعة المستندات المصدر الأصلية للتحقق من الادعاءات.
|
||||
فهم بالضبط من أين في المستند (في أي صفحة، في أي قسم) نشأت الحقيقة.
|
||||
|
||||
**القيمة:** يمكن للمستخدمين التحقق من الاستجابات التي تم إنشاؤها بواسطة الذكاء الاصطناعي مقابل المصادر الأولية، مما يعزز الثقة ويمكن المستخدمين من التحقق من الحقائق.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
### UC2: تصحيح جودة الاستخراج
|
||||
|
||||
|
|
@ -79,6 +114,7 @@
|
|||
|
||||
### UC4: حذف البيانات / الحق في النسيان
|
||||
|
||||
<<<<<<< HEAD
|
||||
يجب إزالة مستند المصدر (بسبب اللائحة العامة لحماية البيانات، أو لأسباب قانونية، إلخ). تتبع الرسم البياني للأصل للعثور على جميع الحقائق المشتقة وإزالتها.
|
||||
|
||||
### UC5: حل النزاعات
|
||||
|
|
@ -90,6 +126,19 @@
|
|||
بعض المصادر أكثر موثوقية من غيرها. يمكن ترجيح الحقائق أو تصفيتها بناءً على سلطة/جودة مستندات الأصل.
|
||||
|
||||
### UC7: مقارنة مسار الاستخراج
|
||||
=======
|
||||
يجب إزالة مستند المصدر (بسبب GDPR، أو لأسباب قانونية، وما إلى ذلك). ابحث في الرسم البياني للأصل وأزل جميع الحقائق المشتقة.
|
||||
|
||||
### UC5: حل النزاعات
|
||||
|
||||
تتناقض حقيقتان مع بعضهما البعض. تتبع كلتاهما إلى مصادرهما لفهم السبب واتخاذ قرار بشأن أي منهما يجب الوثوق به (المصدر الأكثر موثوقية، أو الأحدث، وما إلى ذلك).
|
||||
|
||||
### UC6: وزن سلطة المصدر
|
||||
|
||||
بعض المصادر أكثر موثوقية من غيرها. يمكن وزن الحقائق أو تصفيتها بناءً على سلطة/جودة مستندات الأصل.
|
||||
|
||||
### UC7: مقارنة مسارات الاستخراج
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
قارن المخرجات من طرق/إصدارات استخراج مختلفة. أي أداة استخراج أنتجت حقائق أفضل من نفس المصدر؟
|
||||
|
||||
|
|
@ -101,6 +150,7 @@
|
|||
|
||||
#### القدرات الحالية (تم تنفيذها بالفعل)
|
||||
|
||||
<<<<<<< HEAD
|
||||
**ربط المستندات من الأب إلى الابن:**
|
||||
`parent_id` الحقل في `DocumentMetadata` - يربط المستند الابن بالمستند الأب
|
||||
`document_type` الحقل - القيم: `"source"` (أصلي) أو `"extracted"` (مشتق)
|
||||
|
|
@ -129,22 +179,66 @@
|
|||
`trustgraph-flow/trustgraph/librarian/service.py` - معالج الخدمة، تحميل المستند
|
||||
`trustgraph-flow/trustgraph/tables/library.py` - تخزين جدول Cassandra
|
||||
`trustgraph-base/trustgraph/schema/services/library.py` - تعريفات المخططات
|
||||
=======
|
||||
**ربط المستندات من النوع "الأب-الابن":**
|
||||
الحقل `parent_id` في `DocumentMetadata` - يربط المستند الابن بالمستند الأب.
|
||||
الحقل `document_type` - القيم: `"source"` (أصلي) أو `"extracted"` (مشتق).
|
||||
واجهة برمجة تطبيقات `add-child-document` - لإنشاء مستند ابن مع `document_type = "extracted"` تلقائيًا.
|
||||
واجهة برمجة تطبيقات `list-children` - لاسترداد جميع المستندات الابناء لمستند أب معين.
|
||||
الحذف المتتالي - يؤدي إزالة مستند الأب تلقائيًا إلى حذف جميع مستندات الأبناء.
|
||||
|
||||
**تحديد المستند:**
|
||||
معرفات المستندات محددة من قبل العميل (وليس تم إنشاؤها تلقائيًا).
|
||||
المستندات مفهرسة بواسطة مفتاح مركب `(user, document_id)` في Cassandra.
|
||||
يتم إنشاء معرفات الكائنات (UUIDs) داخليًا لتخزين الكائنات الثنائية.
|
||||
|
||||
**دعم البيانات الوصفية:**
|
||||
الحقل `metadata: list[Triple]` - ثلاثيات RDF للبيانات الوصفية المنظمة.
|
||||
`title`، `comments`، `tags` - بيانات وصفية أساسية للمستند.
|
||||
`time` - الطابع الزمني، `kind` - نوع MIME.
|
||||
|
||||
**هيكل التخزين:**
|
||||
يتم تخزين البيانات الوصفية في Cassandra (مساحة مفاتيح `librarian`، جدول `document`).
|
||||
يتم تخزين المحتوى في تخزين الكائنات الثنائية MinIO/S3 (حاوية `library`).
|
||||
تسليم محتوى ذكي: المستندات الأقل من 2 ميجابايت مضمنة، ويتم بث المستندات الأكبر حجمًا.
|
||||
|
||||
#### الملفات الرئيسية
|
||||
|
||||
`trustgraph-flow/trustgraph/librarian/librarian.py` - العمليات الأساسية لأمين المكتبة.
|
||||
`trustgraph-flow/trustgraph/librarian/service.py` - معالج الخدمة، تحميل المستند.
|
||||
`trustgraph-flow/trustgraph/tables/library.py` - متجر جدول Cassandra.
|
||||
`trustgraph-base/trustgraph/schema/services/library.py` - تعريفات المخططات.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### الثغرات التي يجب معالجتها
|
||||
|
||||
يحتوي أمين المكتبة على اللبنات الأساسية ولكن حاليًا:
|
||||
<<<<<<< HEAD
|
||||
1. الربط من الأب إلى الابن ذو مستوى واحد فقط - لا توجد أدوات مساعدة لتصفح الرسوم البيانية متعددة المستويات
|
||||
2. لا يوجد مفردات قياسية لأنواع العلاقات (مثل `derivedFrom`، `extractedFrom`)
|
||||
3. بيانات التتبع الوصفية (طريقة الاستخراج، والثقة، وموضع الجزء) غير موحدة
|
||||
4. لا توجد واجهة برمجة تطبيقات للاستعلام للتنقل عبر سلسلة التتبع الكاملة من حقيقة إلى المصدر
|
||||
=======
|
||||
1. ربط الأب-الابن ذو مستوى واحد فقط - لا توجد أدوات مساعدة لتصفح الرسوم البيانية متعددة المستويات.
|
||||
2. لا يوجد مفردات قياسية لأنواع العلاقات (مثل `derivedFrom`، `extractedFrom`).
|
||||
3. بيانات التتبع الوصفية (طريقة الاستخراج، والثقة، وموضع الجزء) غير موحدة.
|
||||
4. لا توجد واجهة برمجة تطبيقات للاستعلام للتنقل عبر سلسلة التتبع الكاملة من حقيقة إلى المصدر.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
## تصميم التدفق الشامل
|
||||
|
||||
يتبع كل معالج في خط الأنابيب نمطًا متسقًا:
|
||||
<<<<<<< HEAD
|
||||
استقبال معرف المستند من البنية التحتية
|
||||
جلب المحتوى من أمين المكتبة
|
||||
إنتاج القطع الأثرية الفرعية
|
||||
لكل قطعة أثرية فرعية: حفظ في أمين المكتبة، وإصدار حافة إلى الرسم البياني، وتمرير المعرف إلى البنية التحتية
|
||||
=======
|
||||
استقبال معرف المستند من المصدر العلوي.
|
||||
جلب المحتوى من أمين المكتبة.
|
||||
إنتاج القطع الأثرية الفرعية.
|
||||
لكل قطعة أثرية فرعية: حفظ في أمين المكتبة، وإصدار حافة إلى الرسم البياني، وتمرير المعرف إلى المكون التالي.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
### تدفقات المعالجة
|
||||
|
||||
|
|
@ -239,11 +333,19 @@ PDF: Document → Pages → Chunks → Triples/Embeddings
|
|||
Text: Document → Chunks → Triples/Embeddings
|
||||
```
|
||||
|
||||
<<<<<<< HEAD
|
||||
التصميم يتكيف مع كل من المصدر والصفحة لأن وحدة التقسيم تعالج مدخلاتها بشكل عام - فهي تستخدم أي معرف مستند تتلقاه كمعرف رئيسي، بغض النظر عما إذا كان ذلك مستند مصدر أم صفحة.
|
||||
|
||||
### مخطط البيانات الوصفية (PROV-O)
|
||||
|
||||
تستخدم البيانات الوصفية المتعلقة بالأصل علم الوجود W3C PROV-O. يوفر هذا مفردات قياسية ويمكن أن يمكّن التوقيع/المصادقة المستقبلية لنتائج الاستخراج.
|
||||
=======
|
||||
التصميم يتكيف مع كلتا الحالتين لأن وحدة التقسيم تعالج مدخلاتها بشكل عام - فهي تستخدم أي معرف مستند تتلقاه كمعرف رئيسي، بغض النظر عما إذا كان ذلك مستندًا أصليًا أم صفحة.
|
||||
|
||||
### مخطط البيانات الوصفية (PROV-O)
|
||||
|
||||
تستخدم البيانات الوصفية المتعلقة بالأصل علم الوجود W3C PROV-O. يوفر هذا مفردات قياسية ويمكن أن يتيح في المستقبل التوقيع والمصادقة على مخرجات الاستخراج.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### المفاهيم الأساسية في PROV-O
|
||||
|
||||
|
|
@ -264,7 +366,11 @@ Text: Document → Chunks → Triples/Embeddings
|
|||
|
||||
#### البيانات الوصفية في كل مستوى
|
||||
|
||||
<<<<<<< HEAD
|
||||
**المستند المصدر (يتم إصداره بواسطة Librarian):**
|
||||
=======
|
||||
**المستند الأصلي (يتم إصداره بواسطة Librarian):**
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
```
|
||||
doc:123 a prov:Entity .
|
||||
doc:123 dc:title "Research Paper" .
|
||||
|
|
@ -289,7 +395,11 @@ activity:pdf-extract-456 tg:componentVersion "1.2.3" .
|
|||
activity:pdf-extract-456 prov:startedAtTime "2024-01-15T10:30:00Z" .
|
||||
```
|
||||
|
||||
<<<<<<< HEAD
|
||||
**الجزء (يتم إصداره بواسطة وحدة التجميع):**
|
||||
=======
|
||||
**جزء (يتم إصداره بواسطة أداة التقسيم):**
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
```
|
||||
chunk:123-1-1 a prov:Entity .
|
||||
chunk:123-1-1 prov:wasDerivedFrom page:123-1 .
|
||||
|
|
@ -355,7 +465,11 @@ activity:extract-999 tg:ontology <http://example.org/ontologies/business-v1> .
|
|||
| `tg:chunkOverlap` | Activity | التداخل المُكوَّن بين الأجزاء |
|
||||
| `tg:componentVersion` | Activity | إصدار مكون TG |
|
||||
| `tg:llmModel` | Activity | نموذج LLM المستخدم للاستخراج |
|
||||
<<<<<<< HEAD
|
||||
| `tg:ontology` | Activity | عنوان URI للأنطولوجيا المستخدم لتوجيه الاستخراج |
|
||||
=======
|
||||
| `tg:ontology` | Activity | عنوان URI للدلالة المستخدم لتوجيه الاستخراج |
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
| `tg:embeddingModel` | Activity | النموذج المستخدم للتضمينات |
|
||||
| `tg:sourceText` | Statement | النص الدقيق الذي تم استخراج ثلاثية منه |
|
||||
| `tg:sourceCharOffset` | Statement | الإزاحة الحرفية داخل الجزء حيث يبدأ النص المصدر |
|
||||
|
|
@ -363,7 +477,11 @@ activity:extract-999 tg:ontology <http://example.org/ontologies/business-v1> .
|
|||
|
||||
#### تهيئة المفردات (لكل مجموعة)
|
||||
|
||||
<<<<<<< HEAD
|
||||
الرسم البياني المعرفي محايد للأنطولوجيا ويبدأ فارغًا. عند كتابة بيانات سلالة PROV-O إلى مجموعة لأول مرة، يجب تهيئة المفردات باستخدام تسميات RDF لجميع الفئات والمحددات. يضمن ذلك عرضًا قابلاً للقراءة بواسطة الإنسان في الاستعلامات وواجهة المستخدم.
|
||||
=======
|
||||
الرسم البياني المعرفي محايد بالنسبة للدلالات ويبدأ فارغًا. عند كتابة بيانات سلالة PROV-O إلى مجموعة لأول مرة، يجب تهيئة المفردات باستخدام تسميات RDF لجميع الفئات والمحددات. يضمن ذلك عرضًا قابلاً للقراءة بواسطة الإنسان في الاستعلامات وواجهة المستخدم.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
**فئات PROV-O:**
|
||||
```
|
||||
|
|
@ -372,7 +490,11 @@ prov:Activity rdfs:label "Activity" .
|
|||
prov:Agent rdfs:label "Agent" .
|
||||
```
|
||||
|
||||
<<<<<<< HEAD
|
||||
**المُتَعَدِّيات (Predicates) الخاصة بـ PROV-O:**
|
||||
=======
|
||||
**المفردات (Predicates) الخاصة بـ PROV-O:**
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
```
|
||||
prov:wasDerivedFrom rdfs:label "was derived from" .
|
||||
prov:wasGeneratedBy rdfs:label "was generated by" .
|
||||
|
|
@ -403,12 +525,21 @@ tg:sourceCharLength rdfs:label "source character length" .
|
|||
|
||||
**ملاحظة حول التنفيذ:** يجب أن يكون هذا الإطار اللغوي ذاتي الإعادة - آمنًا للتشغيل عدة مرات دون إنشاء تكرارات. يمكن تشغيله في معالجة المستند الأول في المجموعة، أو كخطوة منفصلة لتهيئة المجموعة.
|
||||
|
||||
<<<<<<< HEAD
|
||||
#### أصل الجزء الفرعي (طموح)
|
||||
|
||||
للحصول على معلومات تفصيلية حول الأصل، سيكون من المفيد تسجيل المكان الدقيق داخل جزء معين حيث تم استخراج الثلاثي. هذا يسمح بـ:
|
||||
|
||||
تسليط الضوء على النص المصدر الدقيق في واجهة المستخدم.
|
||||
التحقق من دقة الاستخراج مقابل المصدر.
|
||||
=======
|
||||
#### مصدر المعلومات التفصيلية (طموح)
|
||||
|
||||
للحصول على معلومات تفصيلية حول المصدر، سيكون من المفيد تسجيل المكان الدقيق داخل جزء معين حيث تم استخراج الثلاثيات منه. هذا يسمح بـ:
|
||||
|
||||
تسليط الضوء على النص المصدر الدقيق في واجهة المستخدم.
|
||||
التحقق من دقة الاستخراج مقارنة بالمصدر.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
تصحيح جودة الاستخراج على مستوى الجملة.
|
||||
|
||||
**مثال مع تتبع الموضع:**
|
||||
|
|
@ -434,21 +565,34 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
|
|||
|
||||
**اعتبارات التنفيذ:**
|
||||
|
||||
<<<<<<< HEAD
|
||||
قد لا توفر استخراج البيانات باستخدام نماذج اللغة الكبيرة (LLM) بشكل طبيعي مواقع الأحرف.
|
||||
يمكن توجيه نموذج اللغة الكبيرة لإرجاع الجملة/العبارة المصدرية بالإضافة إلى الثلاثيات المستخرجة.
|
||||
بدلاً من ذلك، يمكن إجراء معالجة لاحقة لمطابقة الكيانات المستخرجة بشكل تقريبي مع النص المصدر.
|
||||
يوجد مقايضة بين تعقيد الاستخراج ودقة تتبع المصدر.
|
||||
قد يكون من الأسهل تحقيق ذلك باستخدام طرق الاستخراج المنظمة بدلاً من استخراج البيانات المجردة باستخدام نماذج اللغة الكبيرة.
|
||||
=======
|
||||
قد لا توفر عملية الاستخراج القائمة على نماذج اللغة الكبيرة (LLM) بشكل طبيعي مواقع الأحرف.
|
||||
يمكن توجيه نموذج اللغة الكبيرة لإرجاع الجملة/العبارة المصدرية بالإضافة إلى الثلاثيات المستخرجة.
|
||||
بدلاً من ذلك، يمكن إجراء معالجة لاحقة لمطابقة الكيانات المستخرجة بشكل تقريبي مع النص الأصلي.
|
||||
يوجد مقايضة بين تعقيد الاستخراج ودقة تتبع المصدر.
|
||||
قد يكون من الأسهل تحقيق ذلك باستخدام طرق الاستخراج المنظمة بدلاً من استخراج نماذج اللغة الكبيرة غير المنظمة.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
هذا الأمر مصنف على أنه طموح - يجب تنفيذ تتبع المصدر على مستوى المقطع أولاً، مع تتبع المقطع الفرعي كتحسين مستقبلي إذا كان ذلك ممكنًا.
|
||||
|
||||
### نموذج التخزين المزدوج
|
||||
|
||||
<<<<<<< HEAD
|
||||
يتم بناء رسم بياني لتتبع المصدر بشكل تدريجي أثناء تدفق المستندات عبر مسار العمل:
|
||||
=======
|
||||
يتم بناء رسم بياني (DAG) لتتبع المصدر تدريجيًا أثناء تدفق المستندات عبر مسار العمل:
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
| التخزين | ما يتم تخزينه | الغرض |
|
||||
|-------|---------------|---------|
|
||||
| أمين المكتبة | محتوى المستند + روابط الأبناء | استرجاع المحتوى، حذف متسلسل |
|
||||
<<<<<<< HEAD
|
||||
| الرسم البياني للمعرفة | حواف الأبناء، وبيانات وصفية | استعلامات تتبع المصدر، إسناد الحقائق |
|
||||
|
||||
تحتفظ كلا التخزينين بنفس هيكل الرسم البياني. يحتوي أمين المكتبة على المحتوى، بينما يحتوي الرسم البياني على العلاقات ويمكنه تمكين استعلامات التصفح.
|
||||
|
|
@ -464,6 +608,23 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
|
|||
4. **بناء تدريجي للرسم البياني** - يضيف كل معالج مستواه إلى الرسم البياني. يتم بناء سلسلة تتبع المصدر الكاملة بشكل تدريجي.
|
||||
|
||||
5. **تحسين ما بعد التقطيع** - بعد التقطيع، تحمل الرسائل كلاً من المعرف والمحتوى. تكون القطع صغيرة (2-4 كيلوبايت)، لذلك يؤدي تضمين المحتوى إلى تجنب عمليات الذهاب والإياب غير الضرورية إلى أمين المكتبة مع الحفاظ على تتبع المصدر عبر المعرف.
|
||||
=======
|
||||
| الرسم البياني المعرفي | حواف الأبناء، بالإضافة إلى البيانات الوصفية | استعلامات تتبع المصدر، إسناد الحقائق |
|
||||
|
||||
تحتفظ كلتا الحالتين بنفس هيكل الرسم البياني. تحتفظ أمين المكتبة بالمحتوى، بينما يحتفظ الرسم البياني بالعلاقات ويمكنه تمكين استعلامات التصفح.
|
||||
|
||||
### المبادئ الأساسية للتصميم
|
||||
|
||||
1. **معرف المستند كوحدة تدفق** - تمرر المعالجات المعرفات، وليس المحتوى. يتم جلب المحتوى من أمين المكتبة عند الحاجة.
|
||||
|
||||
2. **الإرسال مرة واحدة من المصدر** - يتم كتابة البيانات الوصفية في الرسم البياني مرة واحدة عند بدء المعالجة، وليس بشكل متكرر في المراحل اللاحقة.
|
||||
|
||||
3. **نمط معالج متسق** - يتبع كل معالج نفس النمط: الاستقبال/الجلب/الإنتاج/الحفظ/الإرسال/التوجيه.
|
||||
|
||||
4. **بناء تدريجي للرسم البياني** - يضيف كل معالج مستواه إلى الرسم البياني. يتم بناء سلسلة تتبع المصدر الكاملة بشكل تدريجي.
|
||||
|
||||
5. **تحسين ما بعد التقسيم إلى أجزاء** - بعد التقسيم إلى أجزاء، تحمل الرسائل كلاً من المعرف والمحتوى. الأجزاء صغيرة (2-4 كيلوبايت)، لذا فإن تضمين المحتوى يتجنب عمليات الذهاب والإياب غير الضرورية إلى أمين المكتبة مع الحفاظ على تتبع المصدر عبر المعرف.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
## مهام التنفيذ
|
||||
|
||||
|
|
@ -480,13 +641,21 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
|
|||
|
||||
**1. واجهة جديدة: اتصال بمخزن الثلاثيات**
|
||||
|
||||
<<<<<<< HEAD
|
||||
يحتاج أمين المكتبة إلى إرسال حواف بيانات وصفية للمستند مباشرة إلى الرسم البياني للمعرفة عند بدء المعالجة.
|
||||
=======
|
||||
تحتاج أمين المكتبة إلى إرسال حواف بيانات وصفية لمستندات الأبناء مباشرة إلى الرسم البياني المعرفي عند بدء المعالجة.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
إضافة عميل/ناشر مخزن الثلاثيات إلى خدمة أمين المكتبة.
|
||||
عند بدء المعالجة: إرسال بيانات وصفية للمستند الجذر كحواف في الرسم البياني (مرة واحدة).
|
||||
|
||||
**2. مفردات أنواع المستندات**
|
||||
|
||||
<<<<<<< HEAD
|
||||
توحيد قيم `document_type` لأبناء المستند:
|
||||
=======
|
||||
توحيد قيم `document_type` لمستندات الأبناء:
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
`source` - المستند الذي تم تحميله أصلاً.
|
||||
`page` - صفحة مستخرجة من المصدر (PDF، إلخ).
|
||||
`chunk` - جزء نصي مشتق من الصفحة أو المصدر.
|
||||
|
|
@ -495,16 +664,26 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
|
|||
|
||||
| الواجهة | التغيير |
|
||||
|-----------|--------|
|
||||
<<<<<<< HEAD
|
||||
| مخزن الثلاثيات | اتصال صادر جديد - إرسال حواف بيانات وصفية للمستند |
|
||||
=======
|
||||
| مخزن الثلاثيات | اتصال صادر جديد - إرسال حواف بيانات وصفية لمستندات الأبناء |
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
| بدء المعالجة | إرسال البيانات الوصفية إلى الرسم البياني قبل توجيه معرف المستند |
|
||||
|
||||
### تغييرات مستخرج PDF
|
||||
|
||||
#### الحالة الحالية
|
||||
|
||||
<<<<<<< HEAD
|
||||
يتلقى محتوى المستند (أو يتدفق المستندات الكبيرة).
|
||||
يستخرج النص من صفحات PDF.
|
||||
يوجه محتوى الصفحة إلى وحدة التقطيع.
|
||||
=======
|
||||
يتلقى محتوى المستند (أو يقوم بتدفق المستندات الكبيرة).
|
||||
يستخرج النص من صفحات PDF.
|
||||
يوجه محتوى الصفحة إلى وحدة تقسيم إلى أجزاء.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
لا يوجد تفاعل مع أمين المكتبة أو مخزن الثلاثيات.
|
||||
|
||||
#### التغييرات المطلوبة
|
||||
|
|
@ -517,36 +696,57 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
|
|||
|
||||
**2. واجهة جديدة: اتصال بمخزن الثلاثيات**
|
||||
|
||||
<<<<<<< HEAD
|
||||
يحتاج مستخرج PDF إلى إرسال حواف الأبناء إلى الرسم البياني للمعرفة.
|
||||
=======
|
||||
يحتاج مستخرج PDF إلى إرسال حواف الأبناء إلى الرسم البياني المعرفي.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
إضافة عميل/ناشر مخزن الثلاثيات.
|
||||
لكل صفحة: إرسال حافة تربط مستند الصفحة بالمستند الأصل.
|
||||
|
||||
**3. تغيير تنسيق الإخراج**
|
||||
|
||||
بدلًا من إرسال محتوى الصفحة مباشرةً، أرسل مُعرّف مستند الصفحة.
|
||||
<<<<<<< HEAD
|
||||
سيقوم المقطع (Chunker) بجلب المحتوى من أمين المكتبة (librarian) باستخدام المعرّف.
|
||||
=======
|
||||
سيقوم المقطع (Chunker) بجلب المحتوى من المكتبة (librarian) باستخدام المعرّف.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### ملخص التغييرات في الواجهة
|
||||
|
||||
| الواجهة | التغيير |
|
||||
|-----------|--------|
|
||||
<<<<<<< HEAD
|
||||
| أمين المكتبة (Librarian) | واجهة تصدير جديدة - حفظ المستندات الفرعية |
|
||||
| قاعدة البيانات الثلاثية (Triple store) | واجهة تصدير جديدة - إرسال علاقات الأبناء والبنات |
|
||||
=======
|
||||
| المكتبة (librarian) | إخراج جديد - حفظ المستندات الفرعية |
|
||||
| المستودع الثلاثي (Triple store) | إخراج جديد - إرسال علاقات الأبناء |
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
| رسالة الإخراج | تغيير من المحتوى إلى مُعرّف المستند |
|
||||
|
||||
### تغييرات المقطع (Chunker)
|
||||
|
||||
#### الحالة الحالية
|
||||
|
||||
<<<<<<< HEAD
|
||||
يستقبل محتوى الصفحة/النص
|
||||
يقسم إلى أجزاء (chunks)
|
||||
يرسل محتوى الجزء إلى المعالجات اللاحقة
|
||||
لا يوجد تفاعل مع أمين المكتبة أو قاعدة البيانات الثلاثية
|
||||
=======
|
||||
يتلقى محتوى الصفحة/النص
|
||||
يقسم إلى أجزاء
|
||||
يرسل محتوى الجزء إلى المعالجات اللاحقة
|
||||
لا يوجد تفاعل مع المكتبة أو المستودع الثلاثي
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### التغييرات المطلوبة
|
||||
|
||||
**1. تغيير طريقة معالجة الإدخال**
|
||||
|
||||
<<<<<<< HEAD
|
||||
استقبل مُعرّف المستند بدلًا من المحتوى، وجلبه من أمين المكتبة.
|
||||
أضف عميل أمين المكتبة إلى خدمة المقطع.
|
||||
جلب محتوى الصفحة باستخدام مُعرّف المستند.
|
||||
|
|
@ -560,36 +760,69 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
|
|||
|
||||
أرسل علاقات الأبناء والبنات إلى الرسم البياني المعرفي.
|
||||
أضف عميل/ناشر قاعدة البيانات الثلاثية.
|
||||
=======
|
||||
استقبل مُعرّف المستند بدلاً من المحتوى، وجلبه من المكتبة.
|
||||
أضف عميل المكتبة إلى خدمة المقطع.
|
||||
جلب محتوى الصفحة باستخدام مُعرّف المستند.
|
||||
|
||||
**2. واجهة جديدة: عميل المكتبة (للكتابة)**
|
||||
|
||||
احفظ كل جزء كمستند فرعي في المكتبة.
|
||||
لكل جزء: اتصل بـ `add-child-document` مع `parent = مُعرّف مستند الصفحة`
|
||||
|
||||
**3. واجهة جديدة: اتصال بالمستودع الثلاثي**
|
||||
|
||||
أرسل علاقات الأبناء إلى الرسم البياني المعرفي.
|
||||
أضف عميل/ناشر المستودع الثلاثي.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
لكل جزء: أرسل علاقة تربط مستند الجزء بمستند الصفحة.
|
||||
|
||||
**4. تغيير تنسيق الإخراج**
|
||||
|
||||
<<<<<<< HEAD
|
||||
أرسل كلاً من مُعرّف مستند الجزء ومحتوى الجزء (تحسين لاحق للمقطع).
|
||||
تستقبل المعالجات اللاحقة المعرّف لأغراض التتبع + المحتوى للعمل به.
|
||||
=======
|
||||
أرسل كلاً من مُعرّف مستند الجزء ومحتوى الجزء (تحسين بعد تقسيم الجزء).
|
||||
تتلقى المعالجات اللاحقة المعرّف لتتبع المصدر + المحتوى للعمل به.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### ملخص التغييرات في الواجهة
|
||||
|
||||
| الواجهة | التغيير |
|
||||
|-----------|--------|
|
||||
| رسالة الإدخال | تغيير من المحتوى إلى مُعرّف المستند |
|
||||
<<<<<<< HEAD
|
||||
| أمين المكتبة (Librarian) | واجهة تصدير جديدة (قراءة وكتابة) - جلب المحتوى، حفظ المستندات الفرعية |
|
||||
| قاعدة البيانات الثلاثية (Triple store) | واجهة تصدير جديدة - إرسال علاقات الأبناء والبنات |
|
||||
=======
|
||||
| المكتبة (librarian) | إخراج جديد (قراءة وكتابة) - جلب المحتوى، حفظ المستندات الفرعية |
|
||||
| المستودع الثلاثي (Triple store) | إخراج جديد - إرسال علاقات الأبناء |
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
| رسالة الإخراج | تغيير من المحتوى فقط إلى المعرّف + المحتوى |
|
||||
|
||||
### تغييرات مُستخرج المعرفة (Knowledge Extractor)
|
||||
|
||||
#### الحالة الحالية
|
||||
|
||||
<<<<<<< HEAD
|
||||
يستقبل محتوى الجزء
|
||||
يستخرج الثلاثيات والتضمينات
|
||||
يرسل إلى قاعدة البيانات الثلاثية ومخزن التضمينات
|
||||
`subjectOf` تشير العلاقة إلى المستند ذي المستوى الأعلى (وليس الجزء)
|
||||
=======
|
||||
يتلقى محتوى الجزء
|
||||
يستخرج الثلاثيات والتضمينات
|
||||
يرسل إلى المستودع الثلاثي ومستودع التضمينات
|
||||
تشير علاقة `subjectOf` إلى المستند ذي المستوى الأعلى (وليس الجزء).
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### التغييرات المطلوبة
|
||||
|
||||
**1. تغيير طريقة معالجة الإدخال**
|
||||
|
||||
استقبل مُعرّف مستند الجزء بالإضافة إلى المحتوى.
|
||||
<<<<<<< HEAD
|
||||
استخدم مُعرّف الجزء لأغراض الربط (المحتوى مدرج بالفعل كتحسين).
|
||||
|
||||
**2. تحديث أثر الثلاثيات**
|
||||
|
|
@ -603,12 +836,28 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
|
|||
|
||||
اربط معرفات كيانات التضمين بالجزء.
|
||||
أرسل حافة: معرف كيان التضمين → مُعرّف مستند الجزء
|
||||
=======
|
||||
استخدم مُعرّف الجزء لتتبع المصدر (تم تضمين المحتوى بالفعل كجزء من التحسين).
|
||||
|
||||
**2. تحديث تتبع المصدر**
|
||||
|
||||
اربط الثلاثيات المستخرجة بالجزء (وليس المستند ذي المستوى الأعلى).
|
||||
استخدم التجريد لإنشاء حافة تشير إلى الحافة.
|
||||
علاقة `subjectOf`: الثلاثية → مُعرّف مستند الجزء
|
||||
الاستخدام الأول للدعم الحالي للتجريد.
|
||||
|
||||
**3. تحديث تتبع التضمينات**
|
||||
|
||||
اربط معرفات كيانات التضمين بالجزء.
|
||||
أرسل حافة: معرف كيان التضمين → مُعرّف مستند الجزء.
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
||||
#### ملخص التغييرات في الواجهة
|
||||
|
||||
| الواجهة | التغيير |
|
||||
|-----------|--------|
|
||||
| رسالة الإدخال | توقع مُعرّف الجزء + المحتوى (وليس المحتوى فقط) |
|
||||
<<<<<<< HEAD
|
||||
| قاعدة البيانات الثلاثية | استخدم التجريد لأثر الثلاثية → الجزء |
|
||||
| أثر التضمين | اربط معرف الكيان → معرف الجزء |
|
||||
|
||||
|
|
@ -617,3 +866,13 @@ subgraph:001 tg:sourceText "John Smith has worked at Acme Corp since 2019" .
|
|||
أثر وقت الاستعلام: `docs/tech-specs/query-time-provenance.md`
|
||||
معيار PROV-O لنمذجة الأثر
|
||||
البيانات الوصفية المصدر الحالية في الرسم البياني المعرفي (تحتاج إلى تدقيق)
|
||||
=======
|
||||
| المستودع الثلاثي (Triple store) | استخدم التجريد لتتبع الثلاثية → الجزء |
|
||||
| تتبع التضمينات | اربط معرف الكيان → معرف الجزء |
|
||||
|
||||
## المراجع
|
||||
|
||||
تتبع وقت الاستعلام: `docs/tech-specs/query-time-provenance.md`
|
||||
معيار PROV-O لنمذجة التتبع.
|
||||
البيانات الوصفية المصدر الحالية في الرسم البياني المعرفي (تحتاج إلى تدقيق).
|
||||
>>>>>>> 82edf2d (New md files from RunPod)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue