V minulém díle jsme udělali klíčové rozhodnutí, kterým jsme vybrali náš hlavní motor, tedy jazykový model (LLM). Ukázali jsme si také první optimalizaci, inteligentní routing, kde jsme pomocí klasifikačního agenta srazili náklady na provoz až o 60 % tím, že jsme přestali používat drahý model na jednoduché úkoly.
Toto je šestý díl seriálu Agentní RAG chatbot, kde krok za krokem rozebírám, jak správně postavit celou architekturu a čemu se naopak vyhnout. Postupně zde najdete odkazy na všechny díly, které si časem můžete přečíst.
Tím ale optimalizace zdaleka nekončí. Nyní se podíváme na dvě pokročilé techniky, které řeší zbývající dva klíčové problémy: zbytečnou práci a vnímanou rychlost.
Technika 1: Sémantická cache (Boj se zbytečnou prací)
Problém je jednoduchý. Uživatelé ve firmě se často ptají na to samé, jen mírně odlišnými slovy.
- Uživatel A: „Jaká je splatnost faktury vystavené do EU?“
- Uživatel B: „Do kdy musíme zaplatit fakturu poslanou do zahraničí?“
- Uživatel C: „Termín splatnosti pro EU fakturaci?“
Pro běžný RAG systém jsou to tři unikátní dotazy. Třikrát se spustí celý proces. Třikrát se prohledá databáze, třikrát se sestaví kontext a třikrát se zavolá drahé API jazykového modelu. Je to obrovské plýtvání zdroji.
Řešení: Sémantická cache. Běžná cache, která hledá jen přesnou shodu textu, zde selhává. Proto do své architektury implementuji sémantickou cache. Funguje to následovně:
- Pro každý nový dotaz vygeneruji jeho číselnou reprezentaci, takzvaný „embedding“.
- Tento embedding bleskurychle porovnám s vektorovou databází všech dotazů z minulosti.
- Pokud najdu dotaz s velmi vysokou sémantickou podobností (např. 98 % a více), znamená to, že se uživatel ptá na to samé.
- Místo abych spustil celý drahý RAG proces, jednoduše vytáhnu již uloženou odpověď z cache a okamžitě ji vrátím.
Byznysový dopad je okamžitý. Náklady na API volání pro opakované dotazy klesnou na nulu a odpověď je doručena v řádu milisekund, ne vteřin.
Technika 2: Real-time streaming (Boj s vnímanou latencí)
Druhý velký problém je psychologický. I když váš systém dokáže vygenerovat dokonalou, komplexní analýzu, pokud to trvá 10 sekund, uživatel je frustrovaný. Zírá na točící se kolečko a má pocit, že se systém zasekl.
Řešení: Real-time streaming. Architektonickým řešením je neposílat odpověď najednou, ale po částech.
Jakmile jazykový model vygeneruje první slovo nebo první větu, okamžitě ji pošleme do uživatelského rozhraní. Uživatel tak vidí, jak se odpověď píše v reálném čase. Celkový čas potřebný k vygenerování celé odpovědi může být stále stejný (např. 10 sekund), ale vnímaná rychlost (čas do první reakce systému) klesne z 10 sekund na jednu. Pro uživatelský prožitek a důvěru v systém je to naprosto zásadní rozdíl.
Technika 3: Dynamická sumarizace kontextu (Boj s přehlcením)
Často narážíme na problém, kdy náš RAG systém najde například deset vysoce relevantních dokumentů. I když máme model s obrovským kontextovým oknem (jako je GPT-4.1), poslat mu k analýze 50 stran textu je extrémně drahé a pomalé. Navíc v těchto deseti dokumentech může být mnoho šumu a opakujících se informací.
Řešením je vložit do architektury ještě jeden inteligentní mezikrok, dynamického sumarizačního agenta. Místo abychom všech deset dokumentů poslali rovnou drahému modelu, pošleme je nejprve malému, velmi rychlému a levnému modelu (např. Claude 3.5 Haiku).
Jeho jediným úkolem je přečíst všech deset dokumentů a extrahovat z nich pouze ty věty a fakta, které jsou absolutně klíčové pro odpověď na původní dotaz. Teprve tento vyfiltrovaný a vysoce koncentrovaný kontext pošleme našemu hlavnímu, drahému modelu. Získáme to nejlepší z obou světů: zachováme hloubku informací z mnoha zdrojů, ale dramaticky snížíme náklady na tokeny a zrychlíme finální odpověď.
Příklad z praxe: Zrychlení právního asistenta
U mého dlouhodobého projektu právního expertního systému byla implementace všech tří těchto optimalizací klíčová pro adopci uživateli.
Zjistili jsme, že právníci a koncipienti se velmi často ptají na definice základních pojmů („Co je to věcné břemeno?“, „Definice pachtu dle Občanského zákoníku“ atd.). Implementací sémantické cache jsme dokázali odbavit přibližně 30 % všech dotazů prakticky okamžitě a s nulovými náklady na API, protože odpověď už byla v paměti z předchozích dotazů.
Pro velmi široké a komplexní dotazy (např. „Jaké jsou všechny soudní judikáty týkající se skrytých vad staveb?“) jsme nasadili dynamického sumarizačního agenta. Místo abychom drahému modelu poslali 20 plných textů rozsudků, náš sumarizační agent nejprve prošel všech 20 dokumentů, extrahoval z nich jen klíčové právní věty a teprve tento vysoce koncentrovaný souhrn poslal finálnímu modelu. Tím jsme zpřístupnili komplexní rešerše za zlomek ceny.
Nakonec jsme nasadili streaming pro všechny odpovědi. Analýza komplexní smlouvy, která vyžaduje zapojení velkého modelu a trvá 15 sekund, už nebyla problém. Uživatel viděl první větu analýzy (např. „Analyzuji Článek 3.1 Smluvní pokuty…“) do dvou sekund. Věděl, že systém pracuje, a ochotně si na finální, hloubkovou odpověď počkal.
Od efektivního motoru k plynulé jízdě
Naučili jsme se, že výkonný AI systém není jen o hrubé síle, ale o inteligentní efektivitě. Zatímco v minulém díle jsme vybrali ten správný motor a naučili ho používat (routing), dnes jsme ho vybavili pomocnými systémy, které z něj dělají skutečně produkční nástroj.
Sémantická cache nám šetří peníze tím, že motor nespouštíme zbytečně. Dynamická sumarizace kontextu funguje jako inteligentní turbodmychadlo, které nám dává maximální výkon (z mnoha zdrojů) při minimální spotřebě (tokenů). A real-time streaming nám zajišťuje, že jízda je pro uživatele plynulá a komfortní, i když motor pracuje na plný výkon. Teprve kombinace všech těchto optimalizací vytváří systém, který je nejen chytrý, ale také rychlý, škálovatelný a ekonomicky udržitelný.
V příštím díle se podíváme na můj nejoblíbenější nástroj, který dává těmto systémům téměř lidskou schopnost asociace. Ponoříme se do hlubin GraphRAG a síly vztahů.
Díly seriálu
- Agentní RAG chatbot 1) Strategie zpracování dat pro RAG
- Agentní RAG chatbot 2) Výběr a architektura databáze
- Agentní RAG chatbot 3) Umění relevance a ladění RAG
- Agentní RAG chatbot 4) Jak napsat perfektní system prompt
- Agentní RAG chatbot 5) Výběr správného motoru a strategie pro volbu LLM
- Agentní RAG chatbot 6) Pokročilá optimalizace výkonu a nákladů
- Agentní RAG chatbot 7) Síla vztahů a praktický průvodce implementací graphRAG
- Agentní RAG chatbot 8) Tým expertů aneb stavba agentních systémů v LangGraph
- Agentní RAG chatbot 9) Digitální pevnost a zabezpečení dat v AI aplikacích
- Agentní RAG chatbot 10) Z laboratoře do praxe a ladění systému v reálném provozu
- Agentní RAG chatbot – Bonus: Případová studie