Takécontext length, context size, okno kontextu, délka kontextuPokročilý

Definice

Context window je maximální množství vstupního textu a často i nedávné konverzace, které může jazykový model zpracovat najednou při generování odpovědi. Udává se obvykle v tokenech, zahrnuje systémové instrukce, prompt i přiložené dokumenty a přímo ovlivňuje cenu, latenci a spolehlivost práce s informacemi.

Kategorie: Umělá inteligenceAktualizováno

Nezaměňujte: V uživatelském rozhraní může „kontextové okno“ znamenat i vyskakovací prvek u vybraného objektu, zatímco toto heslo popisuje context window u jazykových modelů.

Co se do context window skutečně počítá

Kontextové okno u jazykového modelu není jen text, který uživatel vidí v poslední zprávě. Do limitu se započítávají systémové instrukce, vývojářské pokyny, historie dialogu, vložené dokumenty, nástroje popsané modelu, mezivýsledky agentního běhu a často také prostor vyhrazený pro odpověď. Praktický limit proto bývá menší než marketingově uváděná hodnota modelu.

Token není totéž co znak ani slovo. Česká věta, kus kódu a tabulka se tokenizují odlišně, takže stejný počet znaků může zabrat různé množství okna. Aplikace pracující s Large language model proto obvykle sleduje tokenový rozpočet před odesláním požadavku, ne až po chybě z API.

Proč delší okno není paměť modelu

Context window je pracovní prostor pro jedno generování, ne trvalá paměť. Model může reagovat na text uvnitř aktuálního požadavku, ale po skončení volání si jej sám neuloží. Dlouhodobou paměť musí dodat aplikace: databází konverzací, uživatelským profilem, vektorovým vyhledáváním nebo jiným úložištěm.

Velké okno také neznamená, že model věnuje všem částem vstupu stejnou pozornost. U dlouhých promptů se mohou ztrácet detaily, instrukce si mohou odporovat a důležité pasáže mohou být obklopené šumem. Kvalitní výběr kontextu bývá často cennější než bezhlavé vložení celého archivu.

Dopad na prompt, cenu a latenci

Kontextové okno přímo ovlivňuje návrh promptu. Každá instrukce a každý příklad soutěží o místo s daty, která mají být použita při odpovědi. U chatbotu s dlouhou historií je běžné starší zprávy shrnout, zahodit rutinní zdvořilosti a ponechat jen rozhodnutí, fakta a otevřené úkoly.

Větší vstup obvykle znamená vyšší cenu a pomalejší odezvu, protože model musí zpracovat více tokenů. U produkčních aplikací se proto vyplatí oddělit tři vrstvy: krátké systémové instrukce, aktuální uživatelský úkol a relevantní znalosti dohledané až v okamžiku dotazu.

Práce s oknem v aplikacích nad LLM

Aplikace nad LLM často používá strategii ořezávání, shrnování nebo retrieval-augmented generation. Ořezávání je jednoduché, ale může odstranit důležitý kontext. Shrnování šetří místo, ale může ztratit přesnost. RAG vyhledá jen relevantní části externích dokumentů a vloží je do promptu jako dočasný pracovní materiál.

Dobrá implementace zachází s context window jako s rozpočtem. Nejdřív určí, co je pro odpověď nezbytné, potom změří velikost vstupu a nakonec nechá rezervu pro výstup. Bez rezervy může model skončit uprostřed věty, zkrátit důležité vysvětlení nebo odmítnout požadavek kvůli překročení limitu.

Příklady z praxe

  1. Zkrácení historie chatu před voláním modelu

    Chatbot zákaznické podpory posílá modelu poslední část konverzace, ale starší zprávy už se do context window nevejdou. Aplikace proto nechá rezervu na odpověď a uchová jen nejnovější zprávy, které se vejdou do rozpočtu. Výsledek je rychlý, ale bez samostatného shrnutí může chatbot ztratit dříve domluvené údaje.

    const tokenBudget = 6000;
    const reserveForAnswer = 1000;
    
    function estimateTokens(text) {
      return Math.ceil(text.length / 4);
    }
    
    function keepRecentMessages(messages) {
      const kept = [];
      let used = reserveForAnswer;
    
      for (const msg of messages.slice().reverse()) {
        const cost = estimateTokens(msg.content);
        if (used + cost > tokenBudget) break;
        kept.unshift(msg);
        used += cost;
      }
    
      return kept;
    }
  2. Výběr pasáží místo vložení celé smlouvy

    Právní asistent má odpovědět na dotaz nad dlouhou smlouvou a souvisejícími dodatky. Celý balík dokumentů by context window zaplnil a model by mohl přehlédnout důležitou klauzuli. Aplikace proto nejdřív vyhledá odstavce k tématu výpovědi smlouvy a do promptu vloží jen několik relevantních pasáží s identifikací zdroje.

Časté omyly

MýtusKdyž má model velké context window, pamatuje si celou konverzaci navždy.
Ve skutečnostiContext window platí jen pro aktuální požadavek. Trvalou paměť musí řešit aplikace uložením historie, shrnutím nebo napojením na externí úložiště.
MýtusStačí do promptu vložit všechny dokumenty a model si vybere, co potřebuje.
Ve skutečnostiPříliš mnoho textu zvyšuje cenu, zpomaluje odpověď a může snížit přesnost. Lepší bývá vybrat relevantní pasáže a zbytek ponechat v databázi nebo vyhledávacím indexu.

Časté dotazy

Proč model s velkým context window někdy přehlédne důležitou větu?
Jazykový model s velkým context window stále pracuje pravděpodobnostně a dlouhý vstup může obsahovat mnoho konkurenčních signálů. Důležitá věta může být daleko od otázky, může si odporovat s jinou instrukcí nebo může být obklopená méně relevantním textem. Spolehlivost obvykle zlepší kratší a přesnější kontext, jasná struktura dokumentu a explicitní odkaz na pasáž, kterou má model použít.
Má context window nahrazovat databázi znalostí?
Context window nemá nahrazovat databázi znalostí, protože kontextové okno je dočasný prostor pro jeden požadavek. Databáze, vyhledávací index nebo vektorové úložiště slouží k trvalému uložení a výběru informací. Kontextové okno má obsahovat jen ty části znalostí, které jsou relevantní pro aktuální otázku a které model potřebuje k přesné odpovědi.
Kolik context window nechat volné pro odpověď?
Rezerva pro odpověď závisí na očekávané délce výstupu, formátu a složitosti úkolu. Krátká klasifikace potřebuje malý prostor, zatímco vysvětlení s tabulkou, kódem nebo vícekrokovým postupem potřebuje výrazně větší rezervu. Aplikace by měla počítat vstupní tokeny před odesláním a část limitu záměrně nechat prázdnou pro dokončení odpovědi.
Kdy se vyplatí RAG místo vložení celého dokumentu?
RAG se vyplatí, když je zdrojových dokumentů víc, často se mění nebo přesahují limit context window. Retrieval-augmented generation nejdřív najde relevantní úryvky a teprve potom je vloží do promptu. Celý dokument v promptu dává smysl hlavně u kratších textů, kde je důležitý kompletní kontext a náklady ani latence nejsou problém.

Zdroje

  1. Attention Is All You Need(otevře se v novém okně)arXiv, 2017
  2. Transformers(otevře se v novém okně)Hugging Face
  3. Azure OpenAI Service documentation(otevře se v novém okně)Microsoft Learn
  4. Generative AI on Vertex AI documentation(otevře se v novém okně)Google Cloud

Související pojmy

Potřebujete to vyřešit v praxi?

Poradíme, jak na to ve vašem projektu

Vysvětlit pojem je jedna věc, navrhnout kolem něj funkční řešení druhá. Ozvěte se a probereme, co dává smysl u vás.