Přeskočit na obsah

Jak funguje jazykový model · lekce 7 z 10 · 11 min čtení

Kontextové okno: co si model pamatuje

Jazykový model si mezi dvěma dotazy nepamatuje nic. Zjistíš, jak to, že chat přesto „ví“, o čem jste mluvili, co je kontextové okno, co se stane, když se zaplní, jak fungují funkce „paměti“ a jak s tím vším pracovat v praxi.

Představ si, že voláš na zákaznickou linku a pokaždé, když položíš další otázku, tě přepojí na nového operátora, který o předchozím hovoru nic neví. Aby to fungovalo, musel bys mu pokaždé přečíst celý dosavadní přepis rozhovoru. Zní to absurdně, ale přesně tak funguje každá konverzace s jazykovým modelem. Jen to za tebe dělá aplikace, takže si toho nevšimneš.

V lekci Jak se model trénuje jsi viděl, že parametry modelu se po tréninku nemění. Model se tedy z tvých zpráv nic neučí. Tahle lekce vysvětlí, jak je možné, že přesto navazuje na to, co jsi napsal před chvílí, kde má tahle „paměť“ hranice a co z toho plyne pro každodenní práci.

Model sám nemá žádnou paměť

Když model dostane text, spočítá odpověď a tím pro něj práce končí. Nic si neuloží, nic si nezapíše. Další dotaz pro něj začíná úplně od nuly, jako by tě nikdy neviděl. Odborně se tomu říká, že model je bezstavový (stateless).

Jak to, že chat přesto funguje jako souvislý rozhovor? Aplikace při každé tvé nové zprávě pošle modelu celou dosavadní konverzaci znovu. Systémový prompt, tvoji první otázku, jeho první odpověď, tvoji druhou otázku… a na konci tu nejnovější zprávu. Model si to celé „přečte“ a napíše pokračování. Dokumentace Anthropicu to popisuje přímo: každý tah obsahuje celou předchozí historii konverzace plus aktuální zprávu uživatele a odpověď modelu se stává součástí vstupu pro další tah.

Co model doopravdy dostane při třetí zprávě

Ty v chatu vidíš jen to, že píšeš „A v kolik otvírají?“. Model ale dostane zhruba tohle:

[Systém] Jsi užitečný asistent. Dnešní datum je …
[Uživatel] Doporuč mi kavárnu v centru Brna.
[Asistent] Zkus třeba kavárnu … na náměstí …
[Uživatel] Mají tam i něco bez lepku?
[Asistent] Podle jejich nabídky …
[Uživatel] A v kolik otvírají?

Jen díky tomu ví, že „tam“ a „otvírají“ se týká té kavárny. Kdyby aplikace poslala jen poslední řádek, model by netušil, o čem je řeč.

To má jeden přímý důsledek: čím delší konverzace, tím víc textu se při každé zprávě posílá a zpracovává. Desátá zpráva v dlouhém vlákně znamená pro model přečíst všech předchozích devět výměn.

Kontextové okno: kolik se vejde najednou

Všechno, co model v jednom kroku „vidí“, se nazývá kontext. A množství, které zvládne najednou zpracovat, je omezené. Tomuto limitu se říká kontextové okno a měří se, jak už tušíš, v tokenech.

Kontextové okno(context window)
Maximální množství tokenů, které model zvládne zpracovat v jednom požadavku. Počítá se do něj všechno: systémový prompt, celá historie konverzace, vložené dokumenty i odpověď, kterou model právě píše.

Dokumentace Anthropicu tomu říká „pracovní paměť“ modelu a odlišuje ji od dat, na kterých se model trénoval. To je dobrý způsob, jak o tom přemýšlet: trénink je to, co se model kdysi naučil a má v parametrech. Kontext je to, co má teď „na stole“ před sebou.

Jak velké okno je? Tady se věci mění rychle, takže ber čísla jako řádové a aktuální hodnoty vždy ověř v dokumentaci výrobce. Podle Googlu zvládaly dřívější modely zhruba 8 000 tokenů, později 32 000 nebo 128 000. V době psaní této lekce (konec roku 2026) mají aktuální modely velkých výrobců, například Claude od Anthropicu nebo Gemini od Googlu, podle jejich dokumentace okno až kolem jednoho milionu tokenů, starší a menší modely často kolem 200 000. Google pro představu uvádí, že milion tokenů odpovídá zhruba osmi průměrně dlouhým anglickým románům. V češtině, která spotřebuje víc tokenů na slovo, se vejde méně.

Co se stane, když se okno zaplní

Když je konverzace delší, než se do okna vejde, něco se musí stát. Možnosti jsou v zásadě tři a různé aplikace je kombinují:

  • Chyba. Přes API dostane vývojář odmítnutí typu „prompt je příliš dlouhý“. V chatu se to projeví hláškou, že konverzace dosáhla limitu a máš začít novou.
  • Zapomínání nejstarších zpráv. Aplikace začne vynechávat nejstarší část konverzace (princip „první dovnitř, první ven“). Model pak doopravdy neví, co bylo na začátku, třeba tvoje úvodní instrukce.
  • Shrnutí. Aplikace starší část konverzace nechá zkrátit do shrnutí a pošle jen to. Konverzace může pokračovat, ale detaily ze začátku se ztratí, protože ve shrnutí nejsou.

Ve všech třech případech platí: co v kontextu není, to pro model neexistuje. Pokud model v dlouhé konverzaci najednou „zapomene“ pravidlo, které jsi mu dal v první zprávě, nejspíš to není vzdor ani porucha. To pravidlo se prostě do aktuálního kontextu nevešlo, nebo se v něm ztratilo (k tomu se dostaneme za chvíli).

Funkce „paměti“: text, který se přilepí do kontextu

Řada chatovacích aplikací nabízí funkci „paměť“: aplikace si pamatuje, jak se jmenuješ, v jaké firmě pracuješ nebo jaký styl odpovědí máš rád, i v úplně nové konverzaci. Znamená to, že se model přece jen učí?

Ne. Princip je jednoduchý: aplikace si ukládá poznámky (buď je model sám navrhne, nebo je zadáš ty) mimo model, ve své databázi. Když začneš novou konverzaci, aplikace relevantní poznámky vloží do kontextu, třeba do systémového promptu, a model je „vidí“ jako jakýkoli jiný text. Parametry modelu zůstávají beze změny. Anthropic tento vzor popisuje u svého nástroje pro vývojáře (memory tool) docela otevřeně: model si do souborů, které ukládá aplikace, zapisuje, co se dozvěděl, a v dalších konverzacích si je čte zpět do kontextu.

Proč na tom záleží? Zaprvé kvůli soukromí: „paměť“ je uložený text o tobě, který si můžeš obvykle prohlédnout, upravit a smazat (o datech podrobně v lekci Data a soukromí). Zadruhé kvůli chování: zapamatovaná poznámka zabírá místo v kontextu a ovlivňuje odpovědi i tam, kde nechceš. Když se model chová divně, mrkni, co si o tobě „pamatuje“.

Delší kontext není zadarmo

Velké okno svádí k tomu „vložit tam všechno“. Má to dva háčky.

Cena a rychlost. Při práci přes API se platí za každý vstupní token, a to při každém požadavku znovu. Dlouhá konverzace nebo velký dokument znamená, že platíš za stejný text opakovaně, s každou novou zprávou. Delší vstup také znamená delší čekání na odpověď. (Výrobci nabízejí techniky jako ukládání opakovaných částí do mezipaměti, které cenu snižují, ale místo v okně ten text zabírá stejně.)

Model si nemusí všimnout všeho. To, že se text do okna vejde, neznamená, že ho model využije stejně dobře v celé délce. V roce 2023 to ukázal výzkum Nelsona F. Liu a kolegů nazvaný „Lost in the Middle“ (ztraceno uprostřed), publikovaný v časopise Transactions of the Association for Computational Linguistics. Modely dostaly mnoho dokumentů a měly najít odpověď v jednom z nich. Výsledky byly nejlepší, když byl správný dokument na začátku nebo na konci vstupu, a výrazně horší, když byl uprostřed, a to i u modelů stavěných pro dlouhý kontext.

Od té doby se modely v práci s dlouhým kontextem hodně zlepšily, ale princip úplně nezmizel. Anthropic v dokumentaci píše, že s rostoucím počtem tokenů klesá přesnost a schopnost vybavit si informace (říká tomu „context rot“, hnití kontextu), a proto je výběr toho, co v kontextu je, stejně důležitý jako to, kolik místa je k dispozici.

Ztraceno uprostřed(lost in the middle)
Jev, kdy jazykový model využívá informace ze začátku a z konce dlouhého vstupu lépe než informace uprostřed. Popsán ve výzkumu z roku 2023, u novějších modelů bývá slabší, ale obecná rada platí: delší kontext neznamená spolehlivější práci s ním.
Do hloubkyProč je dlouhý kontext technicky náročný

Pamatuješ si z minulé lekce mechanismus pozornosti v transformeru? Každý token se při zpracování „dívá“ na všechny předchozí tokeny a počítá, jak jsou pro něj relevantní. To je zdroj síly transformeru, ale také jeho slabina u dlouhých textů.

Když má vstup 1 000 tokenů, je potřeba spočítat vztahy zhruba milionu dvojic tokenů (každý s každým). Když má 100 000 tokenů, jsou to řádově miliardy dvojic. U základní podoby pozornosti roste výpočetní náročnost s druhou mocninou délky: dvakrát delší text, zhruba čtyřikrát víc práce na pozornost. Navíc si model během psaní odpovědi drží v paměti grafické karty mezivýsledky pro každý token kontextu (tzv. KV cache), což spotřebovává drahou paměť.

Výrobci proto používají řadu technických triků, které tuto náročnost snižují (efektivnější výpočet pozornosti, úspornější ukládání mezivýsledků, speciální trénink na dlouhých textech). Díky nim okna za pár let narostla o několik řádů. Konkrétní triky se liší výrobce od výrobce a často nejsou veřejné.

Druhá věc je trénink: model musí během tréninku vidět dost dlouhých textů, aby se naučil s dlouhým kontextem pracovat. Dlouhých kvalitních dokumentů je ale v datech méně než krátkých, což je jedno z vysvětlení, proč využití dlouhého kontextu nebývá rovnoměrné. Přesné příčiny jevu „ztraceno uprostřed“ jsou ale stále předmětem výzkumu.

Praktické tipy

Z toho všeho plyne pár jednoduchých návyků, které výrazně zlepší výsledky:

  1. Na nové téma začni novou konverzaci. Stará konverzace o něčem jiném jen zabírá místo, stojí peníze a může model zmást. Nový chat je čistý stůl.
  2. Když se dlouhá konverzace zhoršuje, restartuj ji se shrnutím. Požádej model, ať shrne dosavadní závěry a důležitá rozhodnutí, a to shrnutí vlož do nové konverzace.
  3. Klíčové instrukce napiš jasně a na viditelné místo. Důležitá pravidla dej na začátek, případně je zopakuj na konci dlouhého zadání („A nezapomeň: odpovídej jen podle přiloženého dokumentu“). Nespoléhej na to, že model pravidlo ze začátku dlouhého vlákna pořád „drží“.
  4. Dej modelu dokumenty, které potřebuje. Model neví nic o vaší firmě, smlouvách ani interních směrnicích, pokud je nemá v kontextu. Místo „Jaké máme podmínky pro reklamaci?“ vlož do konverzace samotné podmínky a zeptej se na ně. Odpověď z dodaného textu je mnohem spolehlivější než odpověď „z hlavy“ (proč, uvidíš v lekci Halucinace).
  5. Ale nevkládej zbytečnosti. Dej mu ty tři relevantní stránky, ne celou dvousetstránkovou příručku, pokud nemusíš. Méně šumu znamená menší šanci, že se důležité ztratí uprostřed.
  6. Dlouhé dokumenty strukturuj. Nadpisy, jasné oddělení dokumentů a jejich názvy pomáhají modelu se orientovat a tobě se pak na ně odkazovat („podle dokumentu Smlouva_2025, článek 4“).

Co si odnést

  • Model sám nemá paměť mezi požadavky. Chatovací aplikace mu při každé zprávě pošle celou dosavadní konverzaci znovu.
  • Kontextové okno je limit v tokenech na všechno, co model v jednom kroku vidí: instrukce, historii, dokumenty i vlastní odpověď. U současných modelů jde řádově o stovky tisíc až miliony tokenů; aktuální čísla ověř u výrobce.
  • Když se okno zaplní, aplikace konverzaci odmítne, zahodí nejstarší část, nebo ji shrne. Co v kontextu není, pro model neexistuje.
  • Funkce „paměti“ v chatech jsou uložené poznámky vkládané do kontextu, ne učení modelu.
  • Delší kontext znamená vyšší cenu, pomalejší odpověď a riziko přehlédnutí informací uprostřed. Začínej nové konverzace, piš klíčové instrukce jasně a dávej modelu jen dokumenty, které potřebuje.

Zdroje a další čtení

Kvíz k modulu

Jak funguje jazykový model

Otázka 1 z 6

Proč model často chybuje v otázce „Kolik písmen r je ve slově strawberry?“