trustgraph/docs/tech-specs/rag-streaming-support.ar.md
Alex Jenkins 8954fa3ad7 Feat: TrustGraph i18n & Documentation Translation Updates (#781)
Native CLI i18n: The TrustGraph CLI has built-in translation support
that dynamically loads language strings. You can test and use
different languages by simply passing the --lang flag (e.g., --lang
es for Spanish, --lang ru for Russian) or by configuring your
environment's LANG variable.

Automated Docs Translations: This PR introduces autonomously
translated Markdown documentation into several target languages,
including Spanish, Swahili, Portuguese, Turkish, Hindi, Hebrew,
Arabic, Simplified Chinese, and Russian.
2026-04-14 12:08:32 +01:00

174 lines
8.6 KiB
Markdown

---
layout: default
title: "مواصفات فنية لدعم التدفق في RAG"
parent: "Arabic (Beta)"
---
# مواصفات فنية لدعم التدفق في RAG
> **Beta Translation:** This document was translated via Machine Learning and as such may not be 100% accurate. All non-English languages are currently classified as Beta.
## نظرة عامة
تصف هذه المواصفات إضافة دعم التدفق إلى خدمات GraphRAG و DocumentRAG، مما يمكّن من الحصول على استجابات على شكل أجزاء (token-by-token) في الوقت الفعلي للاستعلامات المتعلقة باسترجاع المعرفة ورؤوس المستندات. هذا يوسع البنية المعمارية الحالية للتدفق، والتي تم تنفيذها بالفعل لخدمات إكمال النص، والتعليمات البرمجية، ووكلاء LLM.
## الأهداف
- **تجربة تدفق متسقة**: توفير تجربة تدفق متسقة عبر جميع خدمات TrustGraph.
- **تغييرات واجهة برمجة تطبيقات (API) قليلة**: إضافة دعم التدفق باستخدام علامة واحدة (`streaming`)، وفقًا للأنماط المتبعة.
- **التوافق مع الإصدارات السابقة**: الحفاظ على سلوك غير تدفق بشكل افتراضي.
- **استخدام البنية التحتية الحالية**: الاستفادة من تدفق PromptClient المطبق بالفعل.
- **دعم البوابة**: تمكين التدفق من خلال بوابة websocket للتطبيقات العميلة.
## الخلفية
خدمات التدفق الحالية:
- **خدمة إكمال النص للـ LLM**: المرحلة 1 - التدفق من مزودي LLM.
- **خدمة التعليمات البرمجية**: المرحلة 2 - التدفق من خلال قوالب التعليمات البرمجية.
- **خدمة الوكيل**: المراحل 3-4 - استجابات ReAct مع أجزاء فكرية/ملاحظات/إجابات متزايدة.
قيود الحالية لخدمات RAG:
- GraphRAG و DocumentRAG تدعم فقط الاستجابات المتوقفة.
- يجب على المستخدمين الانتظار حتى استلام الرد الكامل من LLM قبل رؤية أي مخرجات.
- تجربة مستخدم (UX) سيئة للاستجابات الطويلة من استعلامات الرسم البياني المعرفي أو المستندات.
- تجربة غير متسقة مقارنة بـ خدمات TrustGraph الأخرى.
تستجيب هذه المواصفات لهذه الثغرات من خلال إضافة دعم التدفق إلى GraphRAG و DocumentRAG. من خلال تمكين الاستجابات على شكل أجزاء، يمكن لـ TrustGraph:
- توفير تجربة تدفق متسقة عبر جميع أنواع الاستعلام.
- تقليل التأخير المتوقع في استعلامات RAG.
- تمكين ملاحظات تقدم أفضل للاستعلامات الطويلة الأمد.
- دعم العرض في الوقت الفعلي في تطبيقات العملاء.
## التصميم الفني
### البنية
يستفيد تنفيذ التدفق في RAG من البنية التحتية الحالية:
1. **تدفق PromptClient** (مطبق بالفعل)
- يستقبل `kg_prompt()` و `document_prompt()` بالفعل معلمات `streaming` و `chunk_callback`.
- تستدعي هذه `prompt()` داخليًا مع دعم التدفق.
- لا يلزم إجراء أي تغييرات على PromptClient.
الوحدة: `trustgraph-base/trustgraph/base/prompt_client.py`
2. **خدمة GraphRAG** (تحتاج إلى تمرير معلمة التدفق)
- إضافة معلمة `streaming` إلى طريقة `query()`.
- تمرير علامة التدفق والوظائف المرجعية إلى `prompt_client.kg_prompt()`.
- يجب أن يحتوي مخطط GraphRag على حقل `streaming`.
الوحدات:
- `trustgraph-flow/trustgraph/retrieval/graph_rag/graph_rag.py`
- `trustgraph-flow/trustgraph/retrieval/graph_rag/rag.py` (المعالجة)
- `trustgraph-base/trustgraph/schema/graph_rag.py` (مخطط الطلب)
- `trustgraph-flow/trustgraph/gateway/dispatch/graph_rag.py` (البوابة)
3. **خدمة DocumentRAG** (تحتاج إلى تمرير معلمة التدفق)
- إضافة معلمة `streaming` إلى طريقة `query()`.
- تمرير علامة التدفق والوظائف المرجعية إلى `prompt_client.document_prompt()`.
- يجب أن يحتوي مخطط DocumentRag على حقل `streaming`.
الوحدات:
- `trustgraph-flow/trustgraph/retrieval/document_rag/document_rag.py`
- `trustgraph-flow/trustgraph/retrieval/document_rag/rag.py` (المعالجة)
- `trustgraph-base/trustgraph/schema/document_rag.py` (مخطط الطلب)
- `trustgraph-flow/trustgraph/gateway/dispatch/document_rag.py` (البوابة)
### تدفق البيانات
**غير تدفق (الحالي)**:
```
Client → Gateway → RAG Service → PromptClient.kg_prompt(streaming=False)
Prompt Service → LLM
رد كامل
Client ← Gateway ← RAG Service ← الرد
```
**تدفق (مقترح)**:
```
Client → Gateway → RAG Service → PromptClient.kg_prompt(streaming=True, chunk_callback=cb)
Prompt Service → LLM (streaming)
جزء → وظيفة مرجعية → رد RAG (جزء)
↓ ↓
Client ← Gateway ← ────────────────────────────────── رد التدفق
```
### واجهات برمجة التطبيقات (APIs)
**تغييرات GraphRAG**:
1. **GraphRag.query()** - إضافة معلمات التدفق
```python
async def query(
self, query, user, collection,
verbose=False, streaming=False, chunk_callback=None # NEW
):
# ... كود موجود ...
if streaming and chunk_callback:
resp = await self.prompt_client.kg_prompt(
query, kg,
streaming=True,
chunk_callback=chunk_callback
)
else:
resp = await self.prompt_client.kg_prompt(query, kg)
return resp
```
2. **مخطط GraphRagRequest** - إضافة حقل التدفق
```python
class GraphRagRequest(Record):
query = String()
user = String()
collection = String()
streaming = Boolean() # NEW
```
3. **مخطط GraphRagResponse** - إضافة حقول التدفق (اتبع نمط الوكيل)
```python
class GraphRagResponse(Record):
response = String()
metadata = dict
# ... حقول أخرى ...
```
**تغييرات DocumentRAG**:
(نفس التغييرات الموضحة أعلاه)
### التغييرات في البوابة
(نفس التغييرات الموضحة أعلاه)
## خطة النقل
لا توجد حاجة لنقل:
- التدفق هو خيار، وتكون القيمة الافتراضية هي False.
- لا تزال العملاء الحالية تعمل بشكل طبيعي.
- يمكن للعملاء الجدد اختيار التدفق.
## الجدول الزمني
الوقت المقدر للتنفيذ: 4-6 ساعات
- المرحلة 1 (2 ساعات): دعم التدفق في GraphRAG
- المرحلة 2 (2 ساعات): دعم التدفق في DocumentRAG
- المرحلة 3 (1-2 ساعات): تحديثات البوابة وعلامات سطر الأوامر (CLI)
- الاختبار: تم تضمينه في كل مرحلة
## الأسئلة المفتوحة
- هل يجب إضافة دعم التدفق لخدمة NLP Query أيضًا؟
- هل نريد تدفق خطوات وسيطة (مثل "جاري استرداد الكيانات..."، "استعلام عن الرسم البياني") أم فقط مخرجات LLM؟
- هل يجب تضمين بيانات وصفية للجزء (مثل رقم الجزء، العدد الإجمالي المتوقع) في استجابات GraphRAG/DocumentRAG؟
## المراجع
- التنفيذ الحالي: `docs/tech-specs/streaming-llm-responses.md`
- تدفق PromptClient: `trustgraph-base/trustgraph/base/prompt_client.py`
- تدفق الوكيل: `trustgraph-flow/trustgraph/agent/react/agent_manager.py`