V minulém článku jsem popsal, proč je většina firemních AI chatbotů k ničemu, nebo jen glorifikované vyhledávání a jaký je rozdíl oproti řešení, které datům skutečně rozumí. Dnes bych chtěl jít ještě hlouběji. Chci vám ukázat, co se stane, když máte funkční RAG prototyp a narazíte na zeď. Na zeď jemných, ale naprosto klíčových problémů, jejichž vyřešení odděluje průměrné řešení od toho, které skutečně přináší hodnotu.
🔍 Klíčové myšlenky
- Lemmatizace a kontextové váhy výrazně zlepšují porozumění češtině v RAG chatbotu.
- Využití znalostního grafu obohacuje odpovědi o relevantní související informace.
- Real-time streaming odpovědí zásadně zlepšuje uživatelský zážitek.
- Agentní systém s vícestupňovou kontrolou zvyšuje rychlost i přesnost odpovědí.
Toto jsou čtyři konkrétní výzvy, které jsem v posledních týdnech řešil při stavbě expertního AI asistenta pro komplexní firemní prostředí.
1) Problém relevance aneb proč AI nerozumí česky
První verze RAG systému fungovala. Brzy jsem ale narazil na absurdní problém. Na dotaz „Jaké jsou podmínky prodeje produktu Alfa?“ systém vrátil jako nejrelevantnější dokument interní směrnici, která obsahovala větu „Při jaké příležitosti nabízet doplňkové služby.“ Proč? Protože obě věty obsahovaly slovo jaké. Systém se chytil běžného slova a ignoroval podstatu dotazu.
Musel jsem systém naučit přemýšlet více česky. Implementoval jsem několik vrstev zpřesnění. Jedním z klíčových kroků byla implementace lematizace – procesu, který převádí slova na jejich základní slovníkový tvar.
Ačkoliv existují i jiné přístupy, jako je „stemming“ nebo využití kontextových „embeddings“, pro češtinu s jejím složitým skloňováním se lematizace ukázala jako robustní řešení, které chápe, že slova „prodat“, „prodal“, a „prodej“ odkazují na jeden koncept. Nakonec jsem zavedl kontextové váhy. Pokud se uživatel ptá na prodejní podmínky, dokumenty z kategorie „Prodejní Procesy“ dostanou automaticky bonusové body.
2) Nevyužitý potenciál aneb když váš znalostní graph RAG je jen líná databáze
Od začátku jsem systém stavěl na grafové databázi Neo4j (neboli graphRAG). Důvodem je její schopnost ukládat nejen data, ale i vztahy mezi nimi. Problém byl, že jsem tuto schopnost zpočátku vůbec nevyužíval. Databáze fungovala jen jako úložiště dokumentů bez využití jejích klíčových grafových vztahů. Bylo to jako mít „Ferrari“ a jezdit s ním jen na nákupy.
Řešení: Přepracoval jsem vyhledávací mechanismus. Nyní probíhá ve dvou fázích. Nejprve systém najde deset nejpodobnějších dokumentů pomocí vektorového vyhledávání. Poté ale provede druhý krok. Projde si nalezené dokumenty a zeptá se znalostního grafu: „Existují nějaké další dokumenty, které s těmito úzce souvisí?“ Díky tomu na dotaz „Jaké jsou výhody produktu Alfa?“ systém nabídne nejen dokument o produktu Alfa, ale i související dokument o „doplňkové službě Beta“ , která se k němu často prodává. AI tak dostává mnohem bohatší a strategicky cennější kontext.
3) Syndrom čekání aneb uživatelská zkušenost na prvním místě
Můj RAG systém je komplexní a odpověď trvá přibližně jedenáct vteřin. Z pohledu technologie je to skvělý čas. Z pohledu uživatele je to věčnost, během které kouká na točící se kolečko a neví, co se děje.
Řešení: Implementoval jsem skutečný real time streaming. Místo abych uživatele nechal čekat na finální odpověď, posílám mu okamžitou zpětnou vazbu. Během několika milisekund vidí zprávu Zpracovávám dotaz.... Poté Hledám ve zdrojích... a následně se text finální odpovědi začne objevovat postupně, slovo po slově, přesně tak, jak ho generuje AI model. Celkový čas zůstává stejný, ale uživatelský prožitek je o řád lepší.
4) Chytrost vs. efektivita aneb rozdíl mezi chatbotem a týmem agentů
Největším paradoxem bylo, že můj vysoce inteligentní RAG systém byl neuvěřitelně hloupý a pomalý při řešení jednoduchých úkolů. Na běžný pozdrav spouštěl celý jedenáctivteřinový proces prohledávání databáze, jen aby odpověděl „Dobry den".
Řešení: Pro tento komplexní úkol bylo řešením postavit skutečně inteligentní agentní systém pomocí frameworku „LangGraph„. Ačkoliv taková architektura může být pro jednodušší případy zbytečně robustní, zde byla klíčová pro dosažení požadované přesnosti a spolehlivosti. A tím nemyslím jen jednoduchý router, který pošle dotaz na jeden ze tří předem definovaných nástrojů. To je jen první, základní úroveň. Skutečná síla LangGraph je v možnosti stavět cyklické a sebeopravné pracovní postupy, kde agenti spolupracují a navzájem se kontrolují. Můj systém nyní funguje jako porada expertů:
- Agent 1 (Manažer): Analyzuje dotaz a sestaví plán, kterého specialistu oslovit.
- Agent 2 (Výzkumník): Provede první rešerši v databázi.
- Agent 3 (Kritik): Zkontroluje práci Výzkumníka. Je odpověď kompletní? Není v ní rozpor? Pokud ne, pošle ho zpět s připomínkami, aby hledal dál. Tento krok je klíčový pro zajištění přesnosti.
- Agent 4 (Redaktor): Teprve když je Kritik spokojen, Redaktor vezme finální, ověřená data a sestaví z nich odpověď pro uživatele.
Díky tomuto přístupu systém nejenže odpovídá rychle na jednoduché dotazy, ale u těch složitých provádí vícenásobnou kontrolu, což dramaticky zvyšuje spolehlivost a přesnost finální odpovědi.
Tyto čtyři příklady ukazují, že stavba skutečně funkčního AI systému není jen o napojení na API na složité systémy. Je to o hlubokém porozumění, neustálém ladění, testování, úpravách a architektonických rozhodnutích, která se skrývají pod povrchem. A právě v těchto detailech se rodí skutečná hodnota.