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:

  1. Roste vaše průměrná cena požadavku s tím, jak dlouho uživatel systém používá?
  2. 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.