====== Kontextové okno u LLM ====== //Vytvořeno: **14.03.2026** | Aktualizováno: **~~LASTMOD~~**// Kontextové okno je rozsah vstupu, se kterým model pracuje při generování odpovědi. V praxi určuje, kolik instrukcí, historie chatu, dokumentů nebo dat je model schopný vzít v úvahu najednou. Samotná velikost kontextového okna ale nezaručuje, že model využije všechny části dlouhého vstupu stejně dobře. [[https://www.trychroma.com/research/context-rot|Technická zpráva Context Rot]] od Chroma ukazuje na kontrolovaných testech 18 LLM, že s délkou vstupu roste nespolehlivost modelů i tehdy, když se vlastní úloha nemění. {{ai:zaklady:context-rot-needle-question-similarity-arxiv.png?800|Výkon modelů při hledání informací s vyšší a nižší sémantickou podobností k otázce; graf ze studie Context Rot.}} ===== Co je kontextové okno ===== Kontextové okno je aktuální pracovní prostor modelu. Patří do něj například: * systémové instrukce, * prompt uživatele, * předchozí zprávy v konverzaci, * přiložené dokumenty, * textové chunky načtené přes RAG. Když se do kontextového okna něco nevejde, model s tím při generování odpovědi už nepracuje. Ani u textu, který se do okna vejde, ale není jisté, že všechny části dostanou stejnou váhu. Proto je důležité řešit dvě věci: * **velikost okna** - kolik obsahu se do něj vejde, * **strukturu vstupu** - jak jsou informace v rámci dlouhého vstupu rozmístěné. ===== Context rot: výkon s délkou vstupu klesá ===== Context rot popisuje jev, kdy se výkon LLM se zvětšujícím se kontextem zhoršuje, přestože se náročnost samotného úkolu nemění. Nejde tedy jen o známý problém ''lost in the middle''; relevantní informace může být v kontextu přítomná, ale model ji s rostoucím množstvím dalšího obsahu používá méně spolehlivě. Autoři studie měnili délku vstupu a drželi vlastní úlohy co nejvíce konstantní. Testovali rozšířenou variantu Needle in a Haystack, konverzační benchmark LongMemEval a úlohu přesného zopakování dlouhé řady slov. ==== Co studie ukazuje ==== * **Sémanticky nejednoznačné dotazy jsou citlivější na délku kontextu.** Když otázka nepoužívá stejná slova jako hledaná informace, výkon se s rostoucí délkou vstupu zhoršoval rychleji. Běžný Needle in a Haystack proto nestačí: primárně měří doslovné vyhledání známé věty. * **Podobné, ale nesprávné informace škodí.** Už jeden tematicky související distractor zhoršoval výsledky proti variantě bez distractoru; čtyři distractory problém dále prohloubily. Jednotlivé distractory neměly stejný dopad a modely na ně reagovaly rozdílně. * **Záleží na podobě okolního textu.** Autoři pozorovali, že obsah a struktura haystacku ovlivňují úspěšnost. Ve svých testech modely konzistentně dosahovaly lepších výsledků nad promíchanými větami než nad logicky souvislým textem. * **Celá historie konverzace je horší než vybraný kontext.** V LongMemEval měly modely výrazně lepší výsledky s přibližně 300tokenovým focused vstupem obsahujícím relevantní části než s plným vstupem o průměrné délce kolem 113 000 tokenů. Plný vstup po modelu vyžaduje současně retrieval i odpověď. * **Problém se týká i velmi jednoduchých úloh.** Při přesném opakování dlouhé řady slov se s délkou vstupu a výstupu zhoršovala přesnost napříč testovanými modely; objevovalo se vynechávání, přidávání nebo náhodná slova i odmítnutí úlohy. Režimy s reasoningem v LongMemEval zlepšovaly výsledky, ale neodstranily rozdíl mezi focused a plným kontextem. ==== Praktický dopad ==== Velké kontextové okno je kapacita, ne garance, že model celý obsah spolehlivě zpracuje. Pro agenty, RAG i dlouhá vlákna konverzace proto dává smysl nejprve vybrat relevantní podklady a až potom je předat modelu. Poslat celou historii, dokumentaci nebo logy jen proto, že se technicky vejdou, může zhoršit jak retrieval, tak následné uvažování nad nalezenými informacemi. ===== U-křivka pozornosti a ''lost in the middle'' ===== U delších vstupů se u LLM často popisuje jev označovaný jako ''lost in the middle''. Model má tendenci věnovat více pozornosti začátku a konci dlouhého textu než jeho středu. Tento vzorec se často popisuje jako U-křivka pozornosti. Praktický dopad je jednoduchý: * informace na začátku lépe nastavují kontext, * informace na konci častěji ovlivní finální odpověď, * informace uprostřed mohou mít menší váhu nebo se v odpovědi vůbec neprojeví. To je důvod, proč model někdy správně respektuje úvodní instrukce a závěrečné shrnutí, ale hůř využije důležitý odstavec schovaný uprostřed dlouhého dokumentu. ===== Co z toho plyne v praxi ===== Velké kontextové okno je užitečné, protože umožňuje přiložit víc dat najednou. Samo o sobě ale neřeší problém s tím, že model nemusí všechno v dlouhém vstupu využít rovnoměrně. Pokud je důležitá informace schovaná uprostřed dlouhého textu, může mít menší šanci, že se promítne do výsledku. Proto dává smysl pracovat nejen s délkou vstupu, ale i s jeho kompozicí. ==== Prompty ==== U delších promptů je vhodné dát klíčové zadání hned na začátek. Pokud je prompt složitější, pomáhá důležité podmínky na konci stručně zopakovat. Osvědčuje se hlavně: * nejdřív jasně definovat cíl, * hned na začátku vypsat zásadní omezení nebo pravidla, * dlouhé zadání rozdělit do bloků, * na konci přidat krátké shrnutí toho, co je opravdu důležité. Příklad jednoduché struktury promptu: Cíl: Vysvětli téma pro začátečníka. Důležité podmínky: stručně, bez marketingu, s praktickými příklady. Doplňující kontext: ... Shrnutí zadání: - vysvětlit princip - uvést praktické dopady - nepřidávat neověřené informace ==== Dokumenty a články ==== U delších dokumentů nestačí mít správné informace jen někde v textu. Důležité definice, závěry a hlavní sdělení je vhodné dát na začátek a na konec. Dobře funguje: * krátké TL;DR nahoře, * definice pojmu hned v úvodu, * důležité body neukrývat doprostřed dlouhého bloku textu, * na konci přidat stručné shrnutí. Pokud je text příliš dlouhý, bývá lepší ho rozdělit na více samostatných článků nebo sekcí, které dávají smysl i samy o sobě. ==== Webový obsah ==== Stejný princip platí i pro webové stránky. Pokud má stránka vysvětlit produkt, službu nebo konkrétní téma, hlavní informace by měly být viditelné hned na začátku stránky, ne až po delším úvodu. Prakticky to znamená: * hlavní odpověď dát do prvních odstavců, * klíčové definice nebo přehled přidat hned nahoře, * důležité informace zopakovat v závěru stránky, * dlouhé texty strukturovat do menších logických celků. Tento princip pomáhá nejen modelům, ale často i lidem, kteří obsah skenují podobným způsobem. ==== RAG ==== U RAG nestačí řešit jen kvalitu retrievalu. Důležité je také to, jak vypadají jednotlivé chunky a co se stane po jejich složení do výsledného kontextu. Praktické dopady pro RAG: * chunky mají být samostatně srozumitelné, * důležitá definice nebo závěr nemá být jen v jiném chunku, * dlouhé dokumenty je vhodné dělit podle významových celků, ne jen mechanicky podle délky, * i při větším kontextovém okně se může část informací po složení více chunků ztrácet uprostřed. Jinými slovy: větší kontextové okno samo o sobě problém neřeší. Pomáhá pojmout více dat, ale neodstraňuje nerovnoměrnou pozornost v rámci dlouhého vstupu. ===== Doporučené techniky ===== Pro práci s kontextovým oknem se osvědčují hlavně tyto postupy: * dát definici nebo hlavní pointu hned na začátek, * přidat nahoře stručné TL;DR, * na konci zopakovat klíčové závěry, * rozdělovat dlouhý obsah do menších celků, * připravovat pro RAG chunky, které dávají smysl i samostatně. Nejde o to informace bezmyšlenkovitě opakovat, ale umístit je tak, aby byly pro model snadno dostupné ve chvíli, kdy je potřebuje použít. ===== Rychlý checklist ===== Když připravuji delší vstup pro LLM, vyplatí se zkontrolovat: * Je hlavní cíl nebo pointa hned na začátku? * Nejsou klíčové instrukce schované až uprostřed? * Obsahuje závěr stručné zopakování nejdůležitějších bodů? * Dává každá sekce nebo chunk smysl i samostatně? * Nebylo by lepší dlouhý obsah rozdělit na více kratších celků? ===== Shrnutí ===== Kontextové okno určuje, s jak velkým vstupem model pracuje, ale samo o sobě nezaručuje rovnoměrné zpracování celého textu. U dlouhých vstupů mají LLM obvykle větší citlivost na začátek a konec než na střed. Z praktického hlediska proto dává smysl psát prompty, články, webový obsah i RAG chunky tak, aby klíčové informace byly viditelné hned na začátku a znovu potvrzené na konci. Pokud je důležitý bod schovaný uprostřed dlouhého obsahu, model ho může využít hůř, i když se do kontextového okna formálně vejde. ===== Zdroje ===== * [[https://www.trychroma.com/research/context-rot|Chroma – Context Rot: How Increasing Input Tokens Impacts LLM Performance]] * [[https://aicarma.com/blog/context-window-optimization/#the-u-shaped-attention-curve|AI Carma – Context Window Optimization: Writing for the U-Shaped Attention Curve]]