Záznam rozhodnutí 0003
0003 — Citace jsou zdroj pravdy; bez dokladu „nevím“
Stav: přijato · Datum: 2026-10
Kontext
Každá odpověď ukazuje své zdroje. První verze vypisovala všechny vyhledané kusy. Uživatelé ten seznam četli jako „z tohohle odpověď vychází“ — a nebyla to pravda: vyhledávání vrací kandidáty, model jich použije pár. Seznam zdrojů s nepoužitými kusy je nepravdivé tvrzení a učí lidi přestat ověřovat.
Druhé selhání bylo opačné: když vyhledávání nenašlo nic dobrého, model i tak vyrobil plynulou, věrohodně znějící odpověď ze slabého kontextu.
Možnosti
- Vypsat všechny vyhledané kusy (dosavadní stav).
- Požádat model o strukturovaný seznam ID zdrojů.
- Model cituje názvy dokumentů přímo v textu; zdrojem se stanou jen citované kusy. Bez dokladu se model nevolá.
Rozhodnutí
Možnost 3.
- Systémový prompt vyžaduje u každého tvrzení citovat název dokumentu v hranatých závorkách:
[Postup vydání]. Po vygenerování odpovědi jsou zdroji ty vyhledané kusy, jejichž název dokumentu je citovaný — přesný název uvnitř závorek (velikost písmen a mezery se sjednotí; přípona oddílu jako[Postup vydání › Návrat zpět]se přijme). Jeden zdroj na dokument (nejlépe seřazený kus), zobrazený se čitelným úryvkem (app/sources.py). - Když filtr relevance (rozhodnutí 0002) nenechá nic, endpoint vrátí pevnou zprávu „tohle ve znalostní bázi není“, bez zdrojů a bez volání modelu.
- Když je model nedostupný, uživatel stejně dostane kusy s doklady, jasně označené jako
„nejde o odpověď“ (
grounded=false), místo chybové hlášky.
Proč ne 2: strukturovaná ID vypadají na papíře čistěji, ale model, který si vymyslí odpověď, si vymyslí i věrohodné ID. Citace názvem si člověk ověří přímo v textu odpovědi a převod zpět na kusy dělá deterministický kód, ne výstup modelu.
Dodatek (2026-10): první verze brala název jako citovaný, kdykoli se v odpovědi objevil jako podřetězec. Krátké, běžné názvy („Postup vydání“, „Onboarding“, „FAQ“) se pak staly zdroji, kdykoli odpověď ta slova použila v běžném textu. Teď se počítají jen značky v závorkách s přesným názvem; případy falešných shod jsou testy (tests/test_sources.py).
Cena
- Když model závorky zapomene, odpověď nemá zdroje. To je bezpečné selhání (nedoložené tvrzení o doložení je horší než chybějící doložení) a je vidět.
- Párování podle názvu předpokládá rozlišitelné názvy. Dva dokumenty se stejným názvem by se ukázaly oba; v tomto měřítku přijatelné a důvod později vynutit jedinečné názvy.
- „Nevím“ je viditelné selhání. Je to zamýšlené chování, ale díry v pokrytí jsou pak na první pohled vidět — užitečná zpětná vazba, při předvádění občas nepohodlná.