Halucinace je odpověď, která zní naprosto věrohodně a je vymyšlená. Model neuvede neexistující zákon proto, že by lhal, on totiž vůbec nerozlišuje mezi „vím“ a „hádám“. Vždycky jen doplňuje nejpravděpodobnější pokračování textu. Tahle kapitola je o tom, proč to dělá a jak s tím zatočit, protože úplně to nezmizí.
Proč k tomu dochází
- Fakta nejsou uložená jako fakta. Jsou rozpuštěná ve vahách (viz transformer), takže se dají „domyslet“ podobně, jako si člověk splete detail v historce, kterou slyšel před lety.
- Model je vytrénovaný odpovídat. Věrohodná odpověď dostávala při ladění lepší hodnocení než „nevím“. Mlčet se prostě nenaučil.
- Chybí mu podklad. Když se ptáš na něco, co v kontextu není, nemá odkud brát, tak to dopočítá ze vzorců, které zná.
- Nabalování chyb. Jakmile jednou napíše nesprávný fakt, staví na něm dál (viz predikce).
Jak halucinace poznáš
Typické signály, které stojí za kontrolu:
- Přesně vypadající detaily: čísla paragrafů, DOI, ISBN, URL, jména autorů, verze knihoven.
- Sebejistý tón u okrajového tématu. Čím vzácnější téma, tím větší šance, že si model pomáhá.
- Odpověď na otázku, která nemá odpověď. Když se zeptáš na neexistující funkci knihovny, model ti ji často ochotně popíše.
💡 Otestuj si to: zeptej se modelu na parametry funkce, kterou sis právě vymyslel. Když ti ji popíše, vidíš halucinaci naživo a pochopíš, proč se výstupu nedá věřit bez kontroly.
Co s tím funguje
1. Dej mu podklady (RAG). Zdaleka největší efekt. Model, který má relevantní text v kontextu, si nemusí nic domýšlet. Detaily v RAG.
2. Vyžádej si citace. „U každého tvrzení uveď, ze kterého úryvku pochází.“ Když tvrzení nemá oporu, často to samo vyplave a ty to navíc můžeš ověřit strojově.
3. Dovol mu říct nevím. Bez explicitního povolení to model neudělá:
Odpovídej výhradně z podkladů uvnitř <data>.
Když odpověď v podkladech není, napiš přesně: "Nevím."
Nikdy nedoplňuj informace z vlastní paměti.
4. Ověřuj strojově. Vygenerované číslo faktury zkontroluj proti databázi, URL zkus zavolat, JSON zvaliduj proti schématu. Levné, spolehlivé, nepodléhá náladě modelu.
5. Sniž teplotu. U faktických úloh nastav temperature blízko nule. Nezruší to halucinace,
ale omezí zbytečnou tvořivost.
6. Rozděl úlohu. Místo „napiš report z těchto dat“ nejdřív vytáhni čísla, ověř je, a teprve pak nech napsat text nad ověřenými čísly.
Co nefunguje
- „Nehalucinuj.“ Model netuší, kdy halucinuje, kdyby to věděl, neudělal by to.
- „Jsi si jistý?“ Vede k tomu, že odpověď změní bez ohledu na pravdu, protože se učil vyhovět.
- Slepá důvěra ve zdroje, které sám uvede. Umí vymyslet i citaci. Ověř, že odkaz existuje a obsahuje, co tvrdí.
- Větší model. Halucinuje míň, ale pořád. Rozdíl mezi 95 % a 99 % je pro produkci zásadní, ale ani 99 % není záruka.
Kolik chyb si můžeš dovolit
Než něco nasadíš, odpověz si na tohle:
| Cena chyby | Co potřebuješ |
|---|---|
| Nízká (návrh textu, brainstorming) | stačí model sám |
| Střední (odpověď zákazníkovi) | podklady + citace + náhodná kontrola člověkem |
| Vysoká (peníze, právo, zdraví) | podklady + strojová validace + schválení člověkem |
Cvičení
- Model si vymyslel neexistující paragraf zákona i s číslem. Seřaď tři opatření podle toho, jak moc pomůžou: nižší temperature, RAG s citacemi, věta „nevymýšlej si“ v promptu.
- Aplikace s RAGem má stále 5 % vymyšlených odpovědí. Jak zjistíš, jestli je problém v hledání, nebo v generování?
Náčrt řešení: rozbal, až si cvičení zkusíš sám
- RAG s citacemi > nižší temperature > věta v promptu. RAG je jediné opatření, které dodá fakta, o která se dá odpověď opřít, a citace navíc umožní kontrolu. Nižší temperature omezí část divokých pokračování, ale jistý omyl zůstane jistým omylem. Prosba v promptu je nejslabší: model nemá jak poznat, že si vymýšlí, protože vymýšlení a vzpomínání vypadají zevnitř stejně.
- Rozděl měření na dvě části. Nejdřív změř retrieval: byla správná pasáž mezi nalezenými? Pokud ne, problém je v hledání a generování za to nemůže. Pokud ano, zkontroluj ukotvení: jsou tvrzení z odpovědi doslova v citovaných chuncích? Když nejsou, model si domýšlí i s dobrými podklady a je potřeba přitvrdit v promptu a ve validaci. Viz evaluace.
Shrnutí
- Halucinace není porucha, ale důsledek toho, jak model funguje: hádá pokračování textu.
- Nejúčinnější obrana je dodat podklady do kontextu a vyžádat si citace.
- Vždy povol odpověď „nevím“ a ověřuj, co jde ověřit strojově.
- Prosba „nehalucinuj“ nefunguje; kontrola ano.
Model uvedl odkaz na studii, která neexistuje. Jak takové situaci předejít?
Nechat ho odpovídat jen z podkladů, které mu sám dodáš, vyžádat si u každého tvrzení citaci konkrétního úryvku a existenci odkazů ověřit strojově. Model umí vymyslet i věrohodně vypadající citaci, takže samotná citace nestačí, musí se dát zkontrolovat.
Proč nepomáhá napsat do promptu „nehalucinuj“?
Protože model nerozlišuje mezi tím, co ví, a co si domýšlí, obojí je pro něj stejný proces hádání dalšího tokenu. Pomůže mu dát podklady, povolit odpověď „nevím“ a výstup ověřit.
Aplikace generuje odpovědi zákaznické podpory nad firemní dokumentací. Jaká je minimální rozumná ochrana?
Odpovídat jen z vyhledaných pasáží (RAG), vyžádat si citace a povolit „nevím“, když podklad chybí. U odpovědí, které mají důsledky (ceny, závazky), přidat kontrolu proti systému nebo schválení člověkem.
