Pravda, zdroje a RAG: proč citace samy o sobě nestačí
Citace vypadá jako důkaz: model našel zdroj, připojil odkaz, hotovo. Jenže RAG řeší, kde model vzal informaci — ne jestli ta informace platí. Čtyři způsoby, jak citace lže, vůči čemu vlastně měřit pravdu a proč „dobře nalezeno“ není totéž co „pravda“.
RAG má v sobě uklidňující příběh. Model nehalucinuje z paměti — najde si zdroj, ocituje ho, a vy máte odkaz, na který se dá kliknout. Citace vypadá jako důkaz. A přesně tady vzniká nejdražší omyl, který kolem retrievalu vídám: zaměnit „model našel zdroj“ za „odpověď je pravda“. Mezi těmi dvěma věcmi je propast a retrieval ji sám o sobě nepřekoná. RAG řeší, kde model vzal informaci. Neřeší, jestli ta informace platí.
Tenhle rozdíl není akademický. Jakmile RAG nasadíte nad smlouvy, interní dokumentaci, finanční reporty nebo support, začnete dělat rozhodnutí podle odpovědí s citacemi — a citace v nich funguje jako pečeť důvěryhodnosti. Když ta pečeť nic negarantuje, je horší než žádná: dodává jistotu tam, kde žádná není.
Retrieval je vyhledávací operace: najde relevantní pasáže, ne pravdivé. Grounding je věrnost zdroji — model může být dokonale věrný dokumentu, který je úplně mimo. Citace neříká „tohle je pravda“, říká jen „tohle jsem někde našel“. Celý článek stojí na tom rozdílu.
01Co RAG opravdu řeší (a co ne)
Retrieval-augmented generation dělá jednu věc dobře: dává modelu kontext, který nemá v parametrech. Místo aby odpovídal z toho, co se naučil při tréninku (a co je staré, zprůměrované přes celý internet a neoznačené zdrojem), dostane k dotazu konkrétní pasáže a odpovídá z nich. Tím se řeší tři reálné problémy — zastaralost tréninkových dat, neznalost vašich privátních dokumentů a chybějící dohledatelnost.
Co se tím nevyřeší, je pravdivost. Retrieval je vyhledávací operace: najdi pasáže relevantní k dotazu. „Relevantní“ a „pravdivé“ jsou ale dvě různé vlastnosti a vyhledávač optimalizuje na tu první. Spravedlivě řečeno — moderní retrieval umí do rankingu zatáhnout i autoritu zdroje, jeho čerstvost nebo důvěryhodnost domény, takže tvrdit, že „o pravdě neví vůbec nic“, by bylo přehnané. Jenže to jsou proxy, koreláty pravdy, ne její kontrola: dobře zařazený, autoritativní a čerstvě vypadající dokument může být přesto věcně špatný a vyhledávač nemá jak to poznat. Když do indexu vložíte špatný dokument, RAG ho najde a ocituje stejně ochotně jako správný — a ještě k němu připojí odkaz, takže výsledek vypadá věrohodněji než kdyby si to model vymyslel. Grounding je o věrnosti zdroji, ne o pravdě. Model může být dokonale věrný zdroji, který je úplně mimo.
To, kdy vůbec sáhnout po RAG místo promptu nebo agenta, rozebírá samostatný článek AI architektura pro firmy. Tady předpokládám, že RAG už nasazený máte, a ptám se na otázku o úroveň výš: čemu z těch citací můžete věřit.
RAG řeší, kde model vzal informaci. Neřeší, jestli ta informace platí.
02Čtyři způsoby, jak citace lže
Citace selhává předvídatelně. Nejsou to náhodné chyby — jsou to čtyři opakující se vzorce a každý vyžaduje jinou obranu.
- Zdroj je prostě špatný. Retrieval najde pasáž, která odpovídá na dotaz, ale ta pasáž obsahuje nesprávnou informaci. Zastaralá interní wiki, nesprávně sepsaná FAQ, dokument s chybou, kterou nikdo neopravil. Model nemá jak poznat, že zdroj lže — udělá přesně to, co má, a předá vám nepravdu s odkazem. Garbage in, citovaná garbage out.
- Zdroj je neaktuální. Speciální, ale nejčastější případ špatného zdroje. V indexu leží verze dokumentu z loňska vedle aktuální a retrieval vytáhne tu starou, protože je dotazu sémanticky stejně blízko. U cen, sazeb, verzí API, právních lhůt nebo personálních údajů je „technicky správná odpověď z neaktuálního zdroje“ k nerozeznání od správné — dokud podle ní někdo nejedná.
- Vytržení z kontextu (context collapse). Chunking — rozsekání dokumentu na kousky pro vektorové vyhledávání — umí přeseknout větu, odstavec nebo logickou jednotku uprostřed. Model pak dostane fragment, kterému chybí podmínka, výjimka nebo negace, jež stály o odstavec dál. „Tato sazba platí…“ — a chunk skončil těsně před „…pouze pro smlouvy uzavřené do konce roku 2024“. Pasáž je doslova citovaná správně a zároveň vede k opačnému závěru, než říká celý dokument.
- Správně nalezeno, špatně interpretováno (citation laundering). Nejzákeřnější vzorec. Retrieval najde správnou, aktuální, kompletní pasáž — a model z ní vyvodí závěr, který v ní není. Připojí citaci k tvrzení, které zdroj nepodporuje. Odkaz odkazuje na reálný dokument, ten dokument existuje a je správný, takže kontrola „má to zdroj?“ projde. Ale vazba mezi citací a tvrzením je vymyšlená. Citace tu nepere špinavé peníze, ale špinavý závěr: dodá mu legitimitu zdroje, který o něm nic neříká.
Jak ten poslední vypadá v praxi: představte si RAG nad rámcovou smlouvou a dotaz „garantuje nám smlouva dostupnost 99,9 %?“. Retrieval vytáhne přesně ten správný článek SLA — aktuální, kompletní, nic vytrženého — který říká, že poskytovatel vyvine přiměřené úsilí (commercially reasonable efforts) k zajištění dostupnosti 99,9 %. Model odpoví „Ano, smlouva garantuje dostupnost 99,9 %“ a připojí citaci na ten článek. Jenže „vyvine přiměřené úsilí o“ a „garantuje“ jsou právně dva různé světy: jeden je snaha bez vymahatelné sankce, druhý tvrdý závazek. Citace je pravá, sekce je správná i kompletní, kontrola „má to zdroj?“ projde — a závěr je přesto nepravdivý, protože ten konkrétní interpretační skok zdroj nepodporuje. Model si nevymyslel dokument. Vymyslel jeho výklad. A protože odkaz vede na reálnou, korektní klauzuli, vypadá ta odpověď důvěryhodněji než upřímné „nevím“.
Všimněte si jedné věci na tom příkladu, ke které se za chvíli vrátíme: tady je správnou pravdou samotná smlouva. Otázka „co nám smlouva garantuje“ se neptá na stav světa, ptá se na obsah dokumentu — a model selhal čistě v tom, že se ho nedržel. To je jiný druh selhání než neaktuální cena, a má to důsledky pro to, jak ho měřit.
Proti každému z těch čtyř vzorců totiž pomáhá něco jiného. Špatný a neaktuální zdroj je problém kvality a správy indexu, ne retrievalu. Context collapse je problém toho, jak dokument krájíte a jak nad ním vyhledáváte. A citation laundering je problém generování a jeho ověření — retrieval udělal svoji práci dokonale. Žádné jedno vylepšení nevyřeší všechny čtyři. Což je dobrý moment podívat se na nástroj, který si bere na mušku právě druhý a třetí vzorec.
03PageIndex: lepší retrieval — a kde leží jeho hranice
PageIndex (od VectifyAI, open-source pod MIT licencí) je dobrý příklad nové vlny tzv. reasoning-based, „vectorless“ retrievalu. Beru ho schválně jako nejlepší dostupný případ: pokud pravdivost nevyřeší ani výrazně lepší retrieval, je to silnější argument než kritika nějakého slabého nástroje. Klasický RAG hledá podle sémantické podobnosti vektorů: dotaz i chunky se převedou na embeddingy a vrátí se to, co je v prostoru nejblíž. PageIndex jde jinudy. Z dokumentu postaví hierarchický strom à la obsah (table-of-contents tree) — uzly se sekcemi, jejich popisy, rozsahy stran — a místo podobnostního hledání nechá nad tou strukturou model uvažovat: přečte obsah, vybere relevantní sekci podle záměru dotazu, zajde do ní, posoudí, jestli to stačí, a případně hledá dál. Tak, jak by se v dlouhém dokumentu orientoval člověk.
Co tím adresuje, sedí přesně na dva z našich čtyř vzorců:
- Žádné slepé chunkování. Strom respektuje přirozenou strukturu dokumentu, takže odpadá rozsekání věty uprostřed — útok na context collapse.
- Křížové odkazy fungují. „Viz Příloha G“ není sémanticky podobné obsahu té přílohy, takže ho vektorový retrieval typicky mine; model uvažující nad strukturou ho dokáže odsledovat.
- Dohledatelnost a vysvětlitelnost. Výsledek je ukotvený v konkrétní sekci a v cestě, kterou se k ní model dostal — což je u auditu nebo regulace cennější než „bylo to kosinově blízko“.
- Podobnost ≠ relevance. U specializovaných dokumentů (finance, právo) mohou být dvě pasáže sémanticky skoro shodné a relevancí na míle daleko; reasoning to rozliší líp než vzdálenost vektorů.
VectifyAI uvádí na benchmarku FinanceBench přesnost 98,7 % (se systémem Mafin 2.5 postaveným nad PageIndexem), výrazně nad klasickými vektorovými systémy. Tady ale stojí za to zůstat věrný tezi tohohle článku a vzít i tohle číslo kriticky: je to údaj od tvůrce nástroje, ne nezávisle replikovaný výsledek, měřený na jedné doméně (finanční dokumenty), kde má strukturní přístup výhodu. Vendor ho navíc uvádí shodně napříč base modely — což je jeho prodejní argument, ne nezávislé potvrzení. Působivé, orientačně relevantní — ne důkaz.
A teď to podstatné: PageIndex zlepšuje retrieval, ne pravdivost. Vyřeší context collapse a křížové odkazy, zvedne dohledatelnost — to je reálná hodnota. Ale když je zdroj sám o sobě špatný nebo neaktuální (vzorce 1 a 2), reasoning-based retrieval ho najde a ocituje stejně spolehlivě jako vektorový; o správnosti dokumentu nic neví. A citation laundering (vzorec 4) se může klidně zhoršit: čím elegantnější a „vysvětlitelnější“ cesta k odpovědi vypadá, tím větší pokušení důvěřovat i tomu interpretačnímu skoku na konci. Lepší retrieval dělá výsledek důvěryhodněji vypadajícím — což je přínos jen tehdy, když ta důvěra je oprávněná.
Reasoning-based vs. vektorový přístup je sám o sobě širší téma — souvislost mezi „uvažovat nad strukturou“ a „počítat vzdálenosti v embedding prostoru“ navazuje na Uvažovat ve slovech, nebo ve vektorech.
04Vůči čemu vlastně měříte pravdu
Než začnete cokoli měřit, musíte si odpovědět na otázku, kterou většina RAG evaluací mlčky přeskakuje: co je pro daný dotaz vlastně pravda? Protože to není pokaždé totéž a odpověď zásadně mění, kterého ze čtyř vzorců se máte bát.
Dotazy nad RAG totiž spadají do dvou režimů:
- Dokument je autorita. „Co říká naše smlouva?“ „Jaká je naše interní politika storna?“ „Co stojí v podmínkách verze 3.2?“ Tady se neptáte na stav světa — ptáte se na obsah dokumentu. Správnou pravdou je ten dokument. Věrnost zdroji a pravda v tomhle režimu splývají: když se model dokumentu drží, je správně, a faktická správnost „vůči světu“ nedává smysl, protože žádný relevantní svět mimo dokument není.
- Dokument je důkaz o světě. „Jaká je aktuální cena?“ „Kolik je sazba DPH?“ „Je tahle integrace ještě podporovaná?“ Tady je dokument jen prostředníkem k vnější realitě, která se mění nezávisle na něm. Věrnost neaktuálnímu dokumentu vám je k ničemu — můžete být dokonale grounded a přesto úplně mimo.
Tohle rozlišení je pointou SLA příkladu z minula. „Garantuje nám smlouva 99,9 %?“ je dotaz prvního typu: smlouva je autorita, žádná „skutečná dostupnost ve světě“ se neřeší. Laundering tam tedy není selhání faktické správnosti — je to čisté selhání věrnosti zdroji. Model se nepřipletl k realitě, jen špatně přečetl text, který měl být jeho jedinou pravdou. Naopak neaktuální cena je dotaz druhého typu: model může být věrný zdroji na sto procent a stejně lhát, protože zdroj sám zaostal za světem.
Praktický dopad je tvrdý a často přehlížený. Měřit faktickou správnost „vůči světu“ na dotazu typu „co říká naše smlouva“ je kategoriální chyba — neexistuje vnější reference, vůči které byste ji počítali, a snaha si ji vyrobit jen přidá šum. A spoléhat na věrnost zdroji u dotazu typu „jaká je aktuální cena“ je přesně ta past, kvůli které tenhle článek vznikl: vysoké faithfulness skóre vás ujistí o systému, který spolehlivě cituje včerejšek. Než nasadíte metriku, roztřiďte si dotazy podle režimu. Jinak měříte správnou věc na špatné otázce.
05Měřte retrieval a pravdivost odděleně
Většina RAG evaluací míchá dvě otázky do jednoho skóre: našel systém správné podklady? a je finální odpověď pravdivá? Když to spojíte, ztratíte schopnost říct, kde systém selhal — a tím i schopnost ho opravit. Tyhle věci se měří zvlášť:
- Kvalita retrievalu. Vrátil systém relevantní, kompletní, aktuální pasáže? (Klasické recall/precision nad retrievalem, plus kontrola, jestli chunk neutrpěl context collapse.)
- Věrnost zdroji (faithfulness/grounding). Drží se odpověď toho, co v nalezených pasážích skutečně stojí — nebo přidává tvrzení navíc? Tohle chytá citation laundering a u dotazů, kde je dokument autorita, je to ta hlavní metrika, na které záleží.
- Faktická správnost. Je odpověď pravdivá vůči světu, ne jen vůči zdroji? Dává smysl jen u dotazů, kde je dokument důkazem o světě — a tam vyžaduje referenci mimo váš index (ground-truth dataset, expert, autoritativní zdroj). U dotazů, kde je autoritou sám dokument, tuhle metriku neměřte; splývá s věrností zdroji.
Klíčová pointa: vysoká věrnost zdroji a nízká faktická správnost spolu u „světových“ dotazů klidně koexistují. Model dokonale citující špatný dokument vyjde z „faithfulness“ metriky skvěle. Pokud měříte jen ji — a hodně RAG dashboardů měří hlavně ji, protože se počítá snadno z dat, která máte po ruce (nalezené pasáže a vygenerovaná odpověď) — gratulujete si k systému, který spolehlivě šíří nepravdu se správně připojenými odkazy. A naopak: zatěžovat „faktickou správností“ dotaz, kde je pravdou sám dokument, vám nedá nic než falešné poplachy.
06Praktický závěr
Citace není důkaz pravdivosti — je to ukazatel, kam se podívat. Co s tím v praxi:
- Nejdřív si určete režim dotazu. Je pro tuhle třídu otázek autoritou sám dokument, nebo je dokument jen oknem do měnícího se světa? Bez téhle odpovědi nevíte, kterého ze čtyř vzorců se bát ani kterou metriku sledovat. Jde to dřív než ladění retrievalu.
- Kvalita indexu je první otázka, ne poslední. RAG zdědí pravdivost svých zdrojů. Než ladíte retrieval, vyřešte, co do indexu vůbec pouštíte: kdo dokumenty schvaluje, jak se odstraňují zastaralé verze, jak se značí autoritativnost. Špinavý index nevykompenzuje žádný retrieval, ani reasoning-based.
- Aktuálnost řešte explicitně. Verzování dokumentů, časové razítko u každé pasáže, preference novějšího při konfliktu, vyřazení zastaralých verzí z indexu. „Mít to tam taky“ není totéž co „najít tu správnou verzi“. (Týká se hlavně dotazů, kde je dokument důkazem o světě — tam je neaktuálnost smrtelná.)
- Krájejte podle struktury, ne podle počtu tokenů. Tady reasoning-based přístupy jako PageIndex reálně pomáhají — respektují hranice sekcí, drží podmínky a výjimky u toho, k čemu patří, a unesou křížové odkazy.
- Ověřujte vazbu citace ↔ tvrzení, ne jen existenci citace. Kontrola „má odpověď zdroj?“ projde i u citation laundering. Co potřebujete ověřit, je jestli zdroj to konkrétní tvrzení skutečně podporuje — ať už druhým průchodem modelu, nebo u high-stakes odpovědí člověkem. Pomáhá i tvar generování: extraktivní odpověď (nejdřív doslovně cituj relevantní pasáž, teprve pak z ní usuzuj) ztíží modelu ten interpretační skok mnohem víc než volné generování s dodatečně připojeným odkazem. Čím blíž je závěr k doslovnému znění zdroje, tím menší prostor pro vymyšlený výklad.
- U rozhodnutí s vysokou cenou omylu zůstává člověk. Retrieval, ani sebelepší, zlepší jen rychlost a dohledatelnost — odpovědnost za závěr nepřenese. Stejně jako u prompt injection platí, že nalezený obsah může být nejen špatný, ale i záměrně podvržený — důvěra v retrieval není bezpečnostní ani faktická kontrola.
RAG je dobrý nástroj na otázku „jak modelu dodat kontext“. Stává se nebezpečným ve chvíli, kdy ho začnete brát jako „jak zajistit, aby model mluvil pravdu“. To první umí. To druhé je na vás.
To druhé je na kvalitě vašich zdrojů, na tom, jak je krájíte, na tom, jestli odlišíte „dobře nalezeno“ od „pravda“, a v neposlední řadě na tom, jestli vůbec víte, vůči čemu tu pravdu chcete měřit.