Kontextové okno není paměť
Kontextové okno se často popisuje jako paměť modelu. To přirovnání je pohodlné a vede k chybným návrhům, protože paměť má vlastnosti, které okno nemá.
Tři rozdíly, které bolí
Paměť je trvalá, okno je jednorázové. Co bylo v okně minulého požadavku, v tom dalším není, pokud to tam někdo znovu nevloží. Ten „někdo" je váš kód a je to práce, kterou musíte napsat.
Paměť má adresu, okno má pořadí. Z paměti se vybírá podle klíče. Z okna model vybírá podle toho, co považuje za relevantní — a to je odhad, ne dotaz.
Paměť je levná, okno se platí každým tokenem. A platí se opakovaně, při každém požadavku, za všechno, co v něm leží — i za to, co model nakonec nepoužil.
Praktický důsledek
Systém, který si „pamatuje" tím, že do promptu lepí historii, má náklady rostoucí s délkou konverzace a přesnost klesající se šumem. Obojí ve stejném okamžiku.
Řešení není větší okno. Řešení je výběr: uložit stav mimo model a do okna dávat jen to, co je pro tenhle jeden krok potřeba.
Zní to samozřejmě. V praxi to znamená napsat vyhledávání nad vlastními daty a rozhodnout, co je „potřeba" — a to je ta těžká část, kterou větší okno jen odkládá.
Jak poznat, že jste na to naletěli
Dvě otázky:
- Roste vaše průměrná cena požadavku s tím, jak dlouho uživatel systém používá?
- Vede přidání dalšího dokumentu do kontextu ke zhoršení odpovědí na dokumenty, které tam byly předtím?
Když je odpověď na obojí ano, nestavíte paměť. Lepíte historii.