> **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.
Bu özellik, GraphRAG ve DocumentRAG hizmetlerine akış desteği eklemeyi tanımlar. Bu, bilgi grafiği ve belge sorguları için gerçek zamanlı, token bazlı yanıtlar sağlar. Bu, LLM metin tamamlama, istem ve ajan hizmetleri için zaten uygulanan mevcut akış mimarisini genişletir.
## Hedefler
**Tutarlı akış kullanıcı deneyimi**: Tüm TrustGraph hizmetlerinde aynı akış deneyimini sağlayın.
**Minimum API değişiklikleri**: Akış desteğini, yerleşik kalıpları izleyerek tek bir `streaming` bayrağıyla ekleyin.
**Geriye dönük uyumluluk**: Mevcut, akış olmayan davranışı varsayılan olarak koruyun.
**Mevcut altyapıyı yeniden kullanın**: Zaten uygulanan PromptClient akışını kullanın.
**Gateway desteği**: İstemci uygulamaları için websocket gateway üzerinden akışı etkinleştirin.
GraphRAG ve DocumentRAG yalnızca engellenen yanıtları destekler.
Kullanıcılar, herhangi bir çıktı görmeden önce LLM'den gelen tamamlanmış yanıtı beklemelidir.
Bilgi grafiği veya belge sorgularından gelen uzun yanıtlar için kötü kullanıcı deneyimi.
Diğer TrustGraph hizmetlerine kıyasla tutarsız deneyim.
Bu özellik, GraphRAG ve DocumentRAG'a akış desteği ekleyerek bu boşlukları giderir. Token bazlı yanıtları etkinleştirerek, TrustGraph şunları yapabilir:
Tüm sorgu türleri için tutarlı bir akış kullanıcı deneyimi sağlayın.
RAG sorguları için algılanan gecikmeyi azaltın.
Uzun süren sorgular için daha iyi ilerleme geri bildirimi sağlayın.
İstemci uygulamalarında gerçek zamanlı görüntülemeyi destekleyin.
## Teknik Tasarım
### Mimari
RAG akış uygulaması, mevcut altyapıyı kullanır:
1.**PromptClient Akışı** (Zaten uygulandı)
`kg_prompt()` ve `document_prompt()` zaten `streaming` ve `chunk_callback` parametrelerini kabul eder.
Bunlar dahili olarak akış desteğiyle `prompt()`'ı çağırır.
PromptClient'ta herhangi bir değişiklik yapılmasına gerek yoktur.
2. GraphRag.query() ve DocumentRag.query() yöntemlerini güncelleyin
3. Akışı işlemek için İşleyicileri güncelleyin
4. Ağ geçidi yönlendirme işleyicilerini güncelleyin
5.`--no-streaming` bayraklarını`tg-invoke-graph-rag` ve `tg-invoke-document-rag`'ye ekleyin (akış varsayılan olarak etkindir, ajan CLI kalıbını takip eder)
**Geri çağırma kalıbı**:
Ajan akışında oluşturulan aynı asenkron geri çağırma kalıbını izleyin:
İşleyici, `async def send_chunk(chunk)` geri çağrısını tanımlar
Geri çağrıyı RAG hizmetine iletir
RAG hizmeti, geri çağrıyı PromptClient'a iletir
PromptClient, her LLM parçası için geri çağrıyı çağırır
İşleyici, her parça için akış yanıt mesajını gönderir
**Hata işleme**:
Akış sırasında oluşan hatalar, `end_of_stream=True` ile hata yanıtı göndermelidir
Ajan akışından mevcut hata yayılım kalıplarını izleyin
## Güvenlik Hususları
Mevcut RAG hizmetlerinin ötesinde yeni güvenlik hususları yoktur:
Akış yanıtları, aynı kullanıcı/toplam izolasyonunu kullanır
Kimlik doğrulama veya yetkilendirmede herhangi bir değişiklik yoktur
Parça sınırları, hassas verileri ortaya çıkarmaz
## Performans Hususları
**Faydaları**:
Algılanan gecikmenin azaltılması (ilk belirteçler daha hızlı gelir)
Uzun yanıtlar için daha iyi kullanıcı deneyimi
Daha düşük bellek kullanımı (tam yanıtı tamponlamaya gerek yoktur)
**Olası endişeler**:
Akış yanıtları için daha fazla Pulsar mesajı
Parçalama/geri çağırma ek yükü için biraz daha yüksek CPU
Akış, isteğe bağlıdır, varsayılan olarak akış etkin değildir, bu nedenle bu sorunlar hafifletilmiştir
**Test hususları**:
Çok sayıda üçlü içeren büyük bilgi grafikleriyle test edin
Çok sayıda alınmış belgeyle test edin
Akışın ve akış dışı durumun ek yükünü ölçün
## Test Stratejisi
**Birim testleri**:
GraphRag.query()'yi streaming=True/False ile test edin
DocumentRag.query()'yi streaming=True/False ile test edin
Geri çağırma çağrılarını doğrulamak için PromptClient'ı taklit edin
**Entegrasyon testleri**:
Tam GraphRAG akışını test edin (mevcut ajan akış testlerine benzer)
Tam DocumentRAG akışını test edin
Ağ geçidi akış yönlendirmesini test edin
CLI akış çıktısını test edin
**Manuel testler**:
`tg-invoke-graph-rag -q "What is machine learning?"` (akış varsayılan olarak etkindir)
`tg-invoke-document-rag -q "Summarize the documents about AI"` (akış varsayılan olarak etkindir)
`tg-invoke-graph-rag --no-streaming -q "..."` (akış dışı modu test edin)