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.
12 KiB
| layout | title | parent |
|---|---|---|
| default | Vigezo vya Ufundi kwa Usaidizi wa Utiririshaji (Streaming) | 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:
-
Utiririshaji wa PromptClient (Tayari umetumiwa)
kg_prompt()nadocument_prompt()tayari hupokea vigezo vyastreamingnachunk_callback. Haya huitaprompt()ndani na usaidizi wa utiririshaji. Hakuna mabadiliko yanayohitajika kwa PromptClient.Moduli:
trustgraph-base/trustgraph/base/prompt_client.py -
Huduma ya GraphRAG (Inahitaji kupitisha parameter ya utiririshaji) Ongeza parameter ya
streamingkwa njia yaquery(). Pasa bendera ya utiririshaji na vipengele vya kurudisha (callbacks) kwaprompt_client.kg_prompt(). Schema ya GraphRagRequest inahitaji sehemu yastreaming.Moduli:
trustgraph-flow/trustgraph/retrieval/graph_rag/graph_rag.pytrustgraph-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) -
Huduma ya DocumentRAG (Inahitaji kupitisha parameter ya utiririshaji) Ongeza parameter ya
streamingkwa njia yaquery(). Pasa bendera ya utiririshaji na vipengele vya kurudisha (callbacks) kwaprompt_client.document_prompt(). Schema ya DocumentRagRequest inahitaji sehemu yastreaming.Moduli:
trustgraph-flow/trustgraph/retrieval/document_rag/document_rag.pytrustgraph-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:
- GraphRag.query() - Ongeza vigezo vya utiririshaji
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
- Muundo wa GraphRagRequest - Ongeza sehemu ya utiririshaji.
class GraphRagRequest(Record):
query = String()
user = String()
collection = String()
streaming = Boolean() # NEW
- Muundo wa GraphRagResponse - Ongeza sehemu za utiririshaji (fuata mfumo wa Wakala).
class GraphRagResponse(Record):
response = String() # Legacy: complete response
chunk = String() # NEW: streaming chunk
end_of_stream = Boolean() # NEW: indicates last chunk
- Mchakato - Ruhusu mtiririko kupita.
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:
- Ongeza vigezo
streamingnachunk_callbackkwenyeDocumentRag.query() - Ongeza sehemu
streamingkwenyeDocumentRagRequest - Ongeza sehemu
chunknaend_of_streamkwenyeDocumentRagResponse - 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:
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:
- Ongeza sehemu za schema (Ombi + Jibu kwa huduma zote za RAG)
- Sasisha mbinu za GraphRag.query() na DocumentRag.query()
- Sasisha Wasindikaji ili kushughulikia utiririshaji
- Sasisha vichakavu vya usambazaji
- Ongeza
--no-streamingbendera kwenyetg-invoke-graph-ragnatg-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