mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-25 08:26:21 +02:00
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.
174 lines
8.6 KiB
Markdown
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`
|