mirror of
https://github.com/trustgraph-ai/trustgraph.git
synced 2026-04-25 16:36: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.
296 lines
12 KiB
Markdown
296 lines
12 KiB
Markdown
---
|
|
layout: default
|
|
title: "Vigezo vya Ufundi kwa Usaidizi wa Utiririshaji (Streaming)"
|
|
parent: "Swahili (Beta)"
|
|
---
|
|
|
|
# Vigezo vya Ufundi kwa Usaidizi wa Utiririshaji (Streaming)
|
|
|
|
> **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.
|
|
|
|
## Muhtasari
|
|
|
|
Vigezo hivi vinaelezea kuongeza usaidizi wa utiririshaji kwa huduma za GraphRAG na DocumentRAG, na hivyo kuruhusu majibu ya wakati halisi, token kwa token, kwa maswali ya chati ya maarifa na utafutaji wa nyaraka. Hii inaongeza usanifu uliopo wa utiririshaji ambao tayari umetumiwa kwa huduma za kukamilisha maandishi, matamshi, na wakala (agent) za LLM.
|
|
|
|
## Lengo
|
|
|
|
**Uzoefu sawa wa utiririshaji**: Kutoa uzoefu sawa wa utiririshaji katika huduma zote za TrustGraph.
|
|
**Mabadiliko madogo ya API**: Kuongeza usaidizi wa utiririshaji kwa bendera moja `streaming`, kufuata mifumo iliyopo.
|
|
**Ulinganifu na matumizi ya awali**: Kuhifadhi tabia ya sasa isiyo ya utiririshaji kama chaguo-msingi.
|
|
**Kutumia miundombinu iliyopo**: Kutumia utiririshaji wa PromptClient ambao tayari umetumiwa.
|
|
**Usaidizi wa lango (gateway)**: Kuruhusu utiririshaji kupitia lango la websocket kwa programu za wateja.
|
|
|
|
## Asili
|
|
|
|
Huduma za utiririshaji zilizotumiwa kwa sasa:
|
|
**Huduma ya kukamilisha maandishi ya LLM**: Awamu ya 1 - utiririshaji kutoka kwa watoa huduma wa LLM.
|
|
**Huduma ya matamshi**: Awamu ya 2 - utiririshaji kupitia vipatacho vya matamshi.
|
|
**Huduma ya wakala**: Awamu ya 3-4 - utiririshaji wa majibu ya ReAct kwa vipande vya hatua/angalifu/jibu.
|
|
|
|
Mapungufu ya sasa kwa huduma za RAG:
|
|
GraphRAG na DocumentRAG zinaunga mkono tu majibu ya kukomesha.
|
|
Watumiaji lazima wasubiri majibu kamili ya LLM kabla ya kuona matokeo yoyote.
|
|
Uzoefu mbaya kwa majibu marefu kutoka kwa chati ya maarifa au maswali ya nyaraka.
|
|
Uzoefu usio sawa na huduma zingine za TrustGraph.
|
|
|
|
Vigezo hivi vinashughulikia pengo hizi kwa kuongeza usaidizi wa utiririshaji kwa GraphRAG na DocumentRAG. Kwa kuruhusu majibu ya token kwa token, TrustGraph inaweza:
|
|
Kutoa uzoefu sawa wa utiririshaji kwa aina zote za maswali.
|
|
Kupunguza muda uliodhaniwa wa maswali ya RAG.
|
|
Kuruhusu maoni bora ya maendeleo kwa maswali yanayoendelea.
|
|
Kusaidia onyesho la wakati halisi katika programu za wateja.
|
|
|
|
## Muundo wa Ufundi
|
|
|
|
### Usanifu
|
|
|
|
Utumiaji wa utiririshaji wa RAG hutumia miundombinu iliyopo:
|
|
|
|
1. **Utiririshaji wa PromptClient** (Tayari umetumiwa)
|
|
`kg_prompt()` na `document_prompt()` tayari hupokea vigezo vya `streaming` na `chunk_callback`.
|
|
Haya huita `prompt()` ndani na usaidizi wa utiririshaji.
|
|
Hakuna mabadiliko yanayohitajika kwa PromptClient.
|
|
|
|
Moduli: `trustgraph-base/trustgraph/base/prompt_client.py`
|
|
|
|
2. **Huduma ya GraphRAG** (Inahitaji kupitisha parameter ya utiririshaji)
|
|
Ongeza parameter ya `streaming` kwa njia ya `query()`.
|
|
Pasa bendera ya utiririshaji na vipengele vya kurudisha (callbacks) kwa `prompt_client.kg_prompt()`.
|
|
Schema ya GraphRagRequest inahitaji sehemu ya `streaming`.
|
|
|
|
Moduli:
|
|
`trustgraph-flow/trustgraph/retrieval/graph_rag/graph_rag.py`
|
|
`trustgraph-flow/trustgraph/retrieval/graph_rag/rag.py` (Mchakato)
|
|
`trustgraph-base/trustgraph/schema/graph_rag.py` (Schema ya ombi)
|
|
`trustgraph-flow/trustgraph/gateway/dispatch/graph_rag.py` (Lango)
|
|
|
|
3. **Huduma ya DocumentRAG** (Inahitaji kupitisha parameter ya utiririshaji)
|
|
Ongeza parameter ya `streaming` kwa njia ya `query()`.
|
|
Pasa bendera ya utiririshaji na vipengele vya kurudisha (callbacks) kwa `prompt_client.document_prompt()`.
|
|
Schema ya DocumentRagRequest inahitaji sehemu ya `streaming`.
|
|
|
|
Moduli:
|
|
`trustgraph-flow/trustgraph/retrieval/document_rag/document_rag.py`
|
|
`trustgraph-flow/trustgraph/retrieval/document_rag/rag.py` (Mchakato)
|
|
`trustgraph-base/trustgraph/schema/document_rag.py` (Schema ya ombi)
|
|
`trustgraph-flow/trustgraph/gateway/dispatch/document_rag.py` (Lango)
|
|
|
|
### Mtiririko wa Data
|
|
|
|
**Usiokuwa na utiririshaji (sasa)**:
|
|
```
|
|
Client → Gateway → RAG Service → PromptClient.kg_prompt(streaming=False)
|
|
↓
|
|
Prompt Service → LLM
|
|
↓
|
|
Complete response
|
|
↓
|
|
Client ← Gateway ← RAG Service ← Response
|
|
```
|
|
|
|
**Utiririshaji (kupendekezwa):**
|
|
```
|
|
Client → Gateway → RAG Service → PromptClient.kg_prompt(streaming=True, chunk_callback=cb)
|
|
↓
|
|
Prompt Service → LLM (streaming)
|
|
↓
|
|
Chunk → callback → RAG Response (chunk)
|
|
↓ ↓
|
|
Client ← Gateway ← ────────────────────────────────── Response stream
|
|
```
|
|
|
|
### API
|
|
|
|
**Mabadiliko ya GraphRAG**:
|
|
|
|
1. **GraphRag.query()** - Ongeza vigezo vya utiririshaji
|
|
```python
|
|
async def query(
|
|
self, query, user, collection,
|
|
verbose=False, streaming=False, chunk_callback=None # NEW
|
|
):
|
|
# ... existing entity/triple retrieval ...
|
|
|
|
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. **Muundo wa GraphRagRequest** - Ongeza sehemu ya utiririshaji.
|
|
```python
|
|
class GraphRagRequest(Record):
|
|
query = String()
|
|
user = String()
|
|
collection = String()
|
|
streaming = Boolean() # NEW
|
|
```
|
|
|
|
3. **Muundo wa GraphRagResponse** - Ongeza sehemu za utiririshaji (fuata mfumo wa Wakala).
|
|
```python
|
|
class GraphRagResponse(Record):
|
|
response = String() # Legacy: complete response
|
|
chunk = String() # NEW: streaming chunk
|
|
end_of_stream = Boolean() # NEW: indicates last chunk
|
|
```
|
|
|
|
4. **Mchakato** - Ruhusu mtiririko kupita.
|
|
```python
|
|
async def handle(self, msg):
|
|
# ... existing code ...
|
|
|
|
async def send_chunk(chunk):
|
|
await self.respond(GraphRagResponse(
|
|
chunk=chunk,
|
|
end_of_stream=False,
|
|
response=None
|
|
))
|
|
|
|
if request.streaming:
|
|
full_response = await self.rag.query(
|
|
query=request.query,
|
|
user=request.user,
|
|
collection=request.collection,
|
|
streaming=True,
|
|
chunk_callback=send_chunk
|
|
)
|
|
# Send final message
|
|
await self.respond(GraphRagResponse(
|
|
chunk=None,
|
|
end_of_stream=True,
|
|
response=full_response
|
|
))
|
|
else:
|
|
# Existing non-streaming path
|
|
response = await self.rag.query(...)
|
|
await self.respond(GraphRagResponse(response=response))
|
|
```
|
|
|
|
**Mabadiliko ya DocumentRAG**:
|
|
|
|
Muundo sawa na GraphRAG:
|
|
1. Ongeza vigezo `streaming` na `chunk_callback` kwenye `DocumentRag.query()`
|
|
2. Ongeza sehemu `streaming` kwenye `DocumentRagRequest`
|
|
3. Ongeza sehemu `chunk` na `end_of_stream` kwenye `DocumentRagResponse`
|
|
4. Sasisha Processor ili kushughulikia utiririshaji pamoja na arifa
|
|
|
|
**Mabadiliko ya Gateway**:
|
|
|
|
Zote `graph_rag.py` na `document_rag.py` katika gateway/dispatch zinahitaji sasisho ili kusambaza vipande vya utiririshaji hadi kwenye websocket:
|
|
|
|
```python
|
|
async def handle(self, message, session, websocket):
|
|
# ... existing code ...
|
|
|
|
if request.streaming:
|
|
async def recipient(resp):
|
|
if resp.chunk:
|
|
await websocket.send(json.dumps({
|
|
"id": message["id"],
|
|
"response": {"chunk": resp.chunk},
|
|
"complete": resp.end_of_stream
|
|
}))
|
|
return resp.end_of_stream
|
|
|
|
await self.rag_client.request(request, recipient=recipient)
|
|
else:
|
|
# Existing non-streaming path
|
|
resp = await self.rag_client.request(request)
|
|
await websocket.send(...)
|
|
```
|
|
|
|
### Maelekezo ya Utendaji
|
|
|
|
**Utaratibu wa utendaji**:
|
|
1. Ongeza sehemu za schema (Ombi + Jibu kwa huduma zote za RAG)
|
|
2. Sasisha mbinu za GraphRag.query() na DocumentRag.query()
|
|
3. Sasisha Wasindikaji ili kushughulikia utiririshaji
|
|
4. Sasisha vichakavu vya usambazaji
|
|
5. Ongeza `--no-streaming` bendera kwenye `tg-invoke-graph-rag` na `tg-invoke-document-rag` (utiririshaji umeanzishwa kwa chaguizi, kufuatia mtindo wa CLI ya wakala)
|
|
|
|
**Mfumo wa kurudisha matokeo**:
|
|
Fuata mfumo sawa wa kurudisha matokeo wa async uliopo katika utiririshaji wa Wakala:
|
|
Wasindikaji hufafanua `async def send_chunk(chunk)` kurudisha matokeo
|
|
Hutuma kurudisha matokeo kwa huduma ya RAG
|
|
Huduma ya RAG hutuma kurudisha matokeo kwa PromptClient
|
|
PromptClient huita kurudisha matokeo kwa kila kipande cha LLM
|
|
Wasindikaji hutuma ujumbe wa utiririshaji wa jibu kwa kila kipande
|
|
|
|
**Usimamizi wa makosa**:
|
|
Makosa wakati wa utiririshaji yanapaswa kutuma jibu la makosa na `end_of_stream=True`
|
|
Fuata mifumo iliyopo ya usambazaji wa makosa kutoka kwa utiririshaji wa Wakala
|
|
|
|
## Masuala ya Usalama
|
|
|
|
Hakuna masuala mapya ya usalama zaidi ya huduma zilizopo za RAG:
|
|
Majibu ya utiririshaji hutumia kutengwa sawa kwa mtumiaji/mkusanyiko
|
|
Hakuna mabadiliko ya uthibitishaji au idhini
|
|
Hifadhi za vipande hazifichui data nyeti
|
|
|
|
## Masuala ya Utendaji
|
|
|
|
**Faida**:
|
|
Kupunguza latensi iliyohisiwa (vipande vya kwanza vinakuja haraka)
|
|
Uzoefu bora wa mtumiaji kwa majibu marefu
|
|
Matumizi ya chini ya kumbukumbu (hakuna haja ya kuhifadhi jibu kamili)
|
|
|
|
**Masuala yanayoweza kutokea**:
|
|
Ujumbe zaidi wa Pulsar kwa majibu ya utiririshaji
|
|
CPU kidogo ya juu kwa gharama ya vipande/kurudisha matokeo
|
|
Imepunguzwa na: utiririshaji ni chaguo, chaguo-msingi inabaki bila utiririshaji
|
|
|
|
**Masuala ya upimaji**:
|
|
Pima na vielelezo vikubwa vya maarifa (triple nyingi)
|
|
Pima na hati nyingi zilizopatikana
|
|
Pima gharama ya utiririshaji dhidi ya utiririshaji usio na utiririshaji
|
|
|
|
## Mkakati wa Upimaji
|
|
|
|
**Majaribio ya kitengo**:
|
|
Pima GraphRag.query() na streaming=True/False
|
|
Pima DocumentRag.query() na streaming=True/False
|
|
Fanya PromptClient kuwa bandia ili kuhakikisha utendaji wa kurudisha matokeo
|
|
|
|
**Majaribio ya ujumuu**:
|
|
Pima mtiririko kamili wa GraphRAG wa utiririshaji (sawa na majaribio ya sasa ya utiririshaji wa wakala)
|
|
Pima mtiririko kamili wa DocumentRAG wa utiririshaji
|
|
Pima usambazaji wa utiririshaji wa Gateway
|
|
Pima pato la utiririshaji la CLI
|
|
|
|
**Upimaji wa mwongozo**:
|
|
`tg-invoke-graph-rag -q "What is machine learning?"` (utiririshaji kwa chaguizi)
|
|
`tg-invoke-document-rag -q "Summarize the documents about AI"` (utiririshaji kwa chaguizi)
|
|
`tg-invoke-graph-rag --no-streaming -q "..."` (pima hali ya utiririshaji usio na utiririshaji)
|
|
Hakikisha pato linaloongezwa linaonekana katika hali ya utiririshaji
|
|
|
|
## Mpango wa Uhamisho
|
|
|
|
Hakuna uhamishaji unaohitajika:
|
|
Utiririshaji ni chaguo kupitia parameter ya `streaming` (ina chaguizi kuwa Fele)
|
|
Wateja wenyewe wanaendelea kufanya kazi bila mabadiliko
|
|
Wateja wapya wanaweza kuchagua utiririshaji
|
|
|
|
## Muda
|
|
|
|
Muda uliokadiriwa wa utekelezaji: saa 4-6
|
|
Awamu ya 1 (saa 2): Usaidizi wa utiririshaji wa GraphRAG
|
|
Awamu ya 2 (saa 2): Usaidizi wa utiririshaji wa DocumentRAG
|
|
Awamu ya 3 (saa 1-2): Madaisho ya Gateway na bendera za CLI
|
|
Upimaji: Umejumuishwa katika kila awamu
|
|
|
|
## Maswali yaliyofunguliwa
|
|
|
|
Je, tunapaswa kuongeza usaidizi wa utiririshaji kwa huduma ya NLP Query pia?
|
|
Je, tunataka kuonyesha hatua za kati (k.m., "Kupata vyombo vya habari...", "Kusahihisha grafu...") au tu pato la LLM?
|
|
Je, majibu ya GraphRAG/DocumentRAG yanapaswa kujumuisha metadata ya kipande (k.m., nambari ya kipande, jumla inayotarajiwa)?
|
|
|
|
## Marejeleo
|
|
|
|
Utekelezaji uliopo: `docs/tech-specs/streaming-llm-responses.md`
|
|
Utiririshaji wa Wakala: `trustgraph-flow/trustgraph/agent/react/agent_manager.py`
|
|
PromptClient utiririshaji: `trustgraph-base/trustgraph/base/prompt_client.py`
|