Tokenizácia v AI
Tokenizácia je proces rozdelenia textu na menšie jednotky – tokeny – ktoré jazykový model dokáže spracovať. Je to prvý a jeden z najdôležitejších krokov v celom pipeline spracovania jazyka. Ako model „vidí" text, zásadne ovplyvňuje jeho schopnosti, náklady na použitie aj spravodlivosť voči rôznym jazykom sveta.
V roku 2026, keď kontextové okná bežne dosahujú státisíce až milióny tokenov, je pochopenie tokenizácie dôležitejšie ako kedykoľvek predtým – priamo ovplyvňuje vaše mesačné faktúry za API aj kvalitu výstupov.
1. Čo je token
Token nie je slovo ani písmeno. Je to podslovo (subword) – úsek textu, ktorý tokenizátor považuje za základnú jednotku spracovania.
Príklad (GPT-4 tokenizátor):
"Programovanie je super" → ["Program", "ov", "anie", " je", " super"]
Veľmi dôležitý detail: medzera pred slovom je súčasťou tokenu. „ super" a „super" sú rôzne tokeny – pre model úplne odlišné symboly.
Anglické slová sú často 1 token, slovenské slová sa delia na viac:
| Text | Tokenizácia | Počet tokenov |
|---|---|---|
| "the" | ["the"] | 1 |
| "programming" | ["programming"] | 1 |
| "programovanie" | ["program", "ov", "anie"] | 3 |
| "nepravdepodobnosť" | ["ne", "prav", "dep", "od", "ob", "nos", "ť"] | 7 |
| "najnepravdepodobnejší" | viac fragmentov | 5–8 |
Preto sú AI modely „drahšie" v slovenčine – ten istý obsah potrebuje viac tokenov ako jeho anglický ekvivalent.
2. Prečo nie celé slová?
Keby sme použili slovníkový prístup (1 slovo = 1 token), narazíme na zásadné problémy:
- Obrovský slovník – v slovenčine existujú milióny tvarov slov (skloňovanie, časovanie)
- Neznáme slová – nové slová, preklepy, technické výrazy by model nepoznal
- Neefektívnosť – väčšina slov sa vyskytuje zriedkavo, parametre embeddingov by boli plytváním
Na druhom konci spektra, čisto znakový prístup (1 znak = 1 token) by bol extrémne neefektívny – sekvencie by boli príliš dlhé a model by ťažko zachytával sémantiku na úrovni slov.
Subword tokenizácia rieši tieto problémy elegantným kompromisom: častým slovám priradí 1 token, zriedkavé slová rozloží na menšie časti. Trénovací text je tak maximálne komprimovaný pri rozumnej veľkosti slovníka.
3. Hlavné algoritmy tokenizácie
BPE (Byte Pair Encoding)
Najpoužívanejší algoritmus, používa ho GPT, Claude, Llama a väčšina moderných modelov.
Princíp:
- Začni s jednotlivými znakmi (bajtmi)
- Nájdi najčastejší pár susedných tokenov v trénovacom korpuse
- Zlúč ich do nového tokenu
- Opakuj, kým nedosiahneš požadovanú veľkosť slovníka
Príklad postupu:
Korpus: "low low low lower lower newest newest widest"
Krok 1: Najčastejší pár "l"+"o" → "lo"
Krok 2: Najčastejší pár "lo"+"w" → "low"
Krok 3: Najčastejší pár "e"+"r" → "er"
...
Výsledok: "low", "er", "new", "est", "wid" atď.
Byte-level BPE (GPT-2 a novšie): Tokenizácia prebieha na úrovni bajtov, nie znakov Unicode. Výhodou je, že každý možný text je tokenizovateľný bez špeciálneho „unknown" tokenu – model nikdy nenarazí na neznámy vstup.
WordPiece
Používa ho BERT a modely od Google. Podobný BPE, ale namiesto frekvencie párov maximalizuje pravdepodobnosť trénovacích dát pod jazykovým modelom.
Rozoznáte ho podľa prefixu ## pre pokračovacie tokeny:
"playing" → ["play", "##ing"]
"tokenizácia" → ["token", "##iz", "##á", "##cia"]
SentencePiece / Unigram
- Pracuje priamo s raw textom (bez predspracovania, vrátane medzier)
- Unigram model začína s veľkým slovníkom a postupne ho zmenšuje odstraňovaním tokenov s najmenším vplyvom na pravdepodobnosť
- Podporuje deterministický aj stochastický mód (šum pre regularizáciu pri trénovaní)
- Používajú ho T5, mT5, Llama, Gemma, Mistral
Porovnanie algoritmov
| Algoritmus | Smer | Kritérium | Typické použitie |
|---|---|---|---|
| BPE | zdola nahor | frekvencia párov | GPT, Claude, Llama |
| Byte-level BPE | zdola nahor | frekvencia párov (bajty) | GPT-2, GPT-4, RoBERTa |
| WordPiece | zdola nahor | pravdepodobnosť | BERT, DistilBERT |
| Unigram | zhora nadol | log-pravdepodobnosť | T5, Llama, Gemma |
4. Veľkosť slovníka
Veľkosť slovníka (vocabulary size) je kľúčový hyperparameter, ktorý priamo ovplyvňuje počet parametrov v embedding vrstve aj efektívnosť tokenizácie.
| Model | Veľkosť slovníka | Algoritmus |
|---|---|---|
| GPT-2 | 50,257 | Byte-level BPE |
| GPT-4 / GPT-4o | ~100,000 | Byte-level BPE |
| Claude 3.x / Claude 4 | ~100,000 | BPE |
| Mistral / Mixtral | 32,000 | BPE |
| Llama 3.x | 128,256 | BPE |
| Qwen 2.5 | 151,936 | BPE |
| Gemma 3 | 262,144 | SentencePiece |
Trend v roku 2026: Väčšina nových modelov volí slovníky nad 100 000 tokenov. Hlavnou motiváciou je multijazykovosť – väčší slovník umožňuje lepšie pokrytie ne-anglických jazykov bez dramatického nárastu počtu tokenov.
Väčší slovník:
- ✅ Menej tokenov na text (efektívnejšie)
- ✅ Lepšie pokrytie jazykov a skriptov
- ✅ Lepšie zvládanie kódu a technických výrazov
- ❌ Väčšia embedding tabuľka (viac parametrov modelu)
- ❌ Zriedkavé tokeny sa horšie naučia – málo trénovacích príkladov
5. Tokenizácia a jazyky
Tokenizácia nie je spravodlivá ku všetkým jazykom. Modely trénované primárne na anglickom texte majú slovníky optimalizované pre angličtinu – ostatné jazyky platia tokenový „príplatok".
Tokenová efektivita podľa jazyka (orientačné hodnoty, GPT-4 tokenizátor)
| Jazyk | Ukážkový text | Tokeny | Pomer voči AJ |
|---|---|---|---|
| Angličtina | "The cat sat on the mat" | 6 | 1,0× |
| Nemčina | "Die Katze saß auf der Matte" | 8 | 1,3× |
| Slovenčina | "Mačka sedela na rohožke" | 9 | 1,8× |
| Ruština | "Кошка сидела на коврике" | 12 | 2,0× |
| Arabčina | "الكلب جلس على الحصيرة" | 10 | 2,5× |
| Čínština | "猫坐在垫子上" | 8 | 2,7× |
| Japončina | "猫がマットの上に座った" | 14 | 3,5× |
Praktické dôsledky nerovnomernosti
- Vyššie náklady – za rovnaký obsah zaplatíte v slovenčine 1,5–2× viac ako v angličtine
- Menší efektívny kontext – 128 K tokenov ≠ 128 K slov; v slovenčine je to skôr 60–80 K slov
- Potenciálne nižšia kvalita – menej trénovacích dát na token pre menšinové jazyky
- Asymetrické výstupy – rovnaká myšlienka vyjadrená po slovensky spotrebuje viac tokenového priestoru
Dobré správy pre rok 2026: Modely ako Gemma 3 (262 K slovník) a Qwen 2.5 (152 K slovník) výrazne zlepšili efektívnosť pre ne-anglické jazyky. Slovenčina v týchto modeloch potrebuje o 20–40 % menej tokenov oproti starším modelom s 50 K slovníkmi.
6. Multimodálna tokenizácia
S nástupom multimodálnych modelov sa tokenizácia rozšírila za hranice textu. Moderné modely (GPT-4o, Claude 3.5+, Gemini 1.5+) spracovávajú aj obrázky, audio a video – a aj tieto médiá musia byť „tokenizované".
Tokenizácia obrázkov
Obrázky sa zvyčajne tokenizujú jedným z dvoch prístupov:
- Patch embedding: Obrázok sa rozdelí na pravidelné štvorce (patches), každý patch sa konvertuje na vektor. Typické rozmery: 16×16 alebo 32×32 pixelov na patch.
- Diskrétne vizuálne tokeny (VQ-VAE): Encoder prevedie obrázok na sekvenciu diskrétnych tokenov zo slovníka – analogicky k textovým tokenom.
Dôsledok je priamy na cenu:
Príklad (Claude 3.5 Sonnet):
Obrázok 1024×1024 px → ~1 600 tokenov
Obrázok 512×512 px → ~400 tokenov
→ Zníženie rozlíšenia šetrí tokeny tam, kde na detailoch nezáleží.
Tokenizácia audia
Audio modely (Whisper, Gemini Audio) konvertujú zvuk na mel-spektrogram a potom spracovávajú jeho segmenty ako „tokeny". Jedna sekunda reči zodpovedá zhruba 50–150 tokenov v závislosti od modelu a vzorkovacej frekvencie.
7. Špeciálne tokeny
Okrem textových tokenov existujú aj špeciálne riadiace tokeny, ktoré štruktúrujú konverzáciu a vstupy pre model:
| Token | Funkcia |
|---|---|
<|begin_of_text|> |
Začiatok vstupu |
<|end_of_text|> |
Koniec vstupu / stop sekvencia |
<|system|> |
Systémová správa |
<|user|> |
Správa od užívateľa |
<|assistant|> |
Odpoveď modelu |
<|tool_call|> |
Volanie nástroja (function calling) |
[PAD] |
Výplňový token pre dávkové spracovanie |
[MASK] |
Maskovaný token (BERT-štýl trénovanie) |
Tieto tokeny sú neviditeľné pre užívateľa, ale kľúčové pre správne fungovanie modelu. Ich manipulácia (napr. vstreknutie <|system|> do užívateľského vstupu) je bežná technika pri prompt injection útokoch.
8. Problémy tokenizácie
Aritmetika a čísla
Tokenizátor rozdeľuje čísla nepredvídateľne:
"123456789" → ["123", "456", "789"] alebo ["12", "3456", "789"]
To je jeden z dôvodov, prečo LLM modely zápasia s matematikou – nevidia čísla ako čísla, ale ako fragmenty textu bez inherentnej matematickej štruktúry. Riešenie v praxi: novšie modely kombinujú LLM s kalkulačkovými nástrojmi (tool use).
Charakter-level úlohy
Modely majú problém s úlohami vyžadujúcimi prácu na úrovni jednotlivých znakov:
- „Napíš slovo 'strawberry' pozpätku" – závisí od tokenizácie, „strawberry" môže byť 1 token
- „Koľko písmen 'r' je v slove 'strawberry'?" – iná odpoveď pre
["st","raw","berry"]vs.["strawberry"]
Tento jav sa nazýva tokenizačná slepota – model nevidí písmenú štruktúru slov, len tokenové fragmenty.
Tokenizačné artefakty
Niektoré konkrétne reťazce spôsobujú neočakávané správanie. Dobre zdokumentovaný prípad: token SolidGoldMagikarp bol v slovníku GPT-2, ale takmer nikdy sa nevyskytol v trénovacích dátach. Model preň nemal zmysluplnú reprezentáciu a reagoval chaoticky – tzv. „glitch tokeny".
Bezpečnostné implikácie
Niektoré útoky využívajú tokenizáciu na obchádzanie bezpečnostných filtrov:
- Rozdelenie zakázaného reťazca medzi tokeny pomocou medzier alebo špeciálnych znakov
- Unicode homoglify – vizuálne identické znaky s rôznou tokenizáciou
- Rôzne tokenizácie toho istého obsahu v rôznych jazykoch
9. Kontext, tokeny a cena
Pochopenie tokenov je priamo spojené s ekonomikou LLM API.
Ako funguje cenník
Väčšina providerov účtuje zvlášť za vstupné tokeny (prompt) a výstupné tokeny (odpoveď). Výstupné tokeny sú typicky 3–5× drahšie, pretože ich model generuje sekvenčne.
Prompt caching
Moderné API (Anthropic, OpenAI) ponúkajú prompt caching – opakujúca sa časť promptu (systémová správa, dokumenty, príklady) sa uloží do cache a účtuje za zvýhodnenú cenu, typicky 10 % pôvodnej ceny. Kľúč k optimalizácii: statický obsah dávajte na začiatok promptu a udržiavajte ho konzistentný medzi volaniami.
Kontextové okno a tokenový rozpočet
| Model (2026) | Kontext (tokeny) | Cca. slov v slovenčine |
|---|---|---|
| GPT-4o | 128,000 | ~70,000 |
| Claude 4 Sonnet | 200,000 | ~110,000 |
| Gemini 1.5 Pro | 1,000,000 | ~550,000 |
| Llama 3.1 | 128,000 | ~70,000 |
Dôležité: do limitu kontextu sa počíta nielen vstup, ale aj celá história konverzácie a výstup modelu. Pri dlhých konverzáciách je nevyhnutné aktívne sledovať tokenový stav a v prípade potreby sumarizovať históriu.
10. Praktické tipy
Počítanie tokenov pred volaním API
# tiktoken – pre OpenAI modely
import tiktoken
enc = tiktoken.encoding_for_model("gpt-4o")
text = "Ahoj, ako sa máš? Toto je testovací text v slovenčine."
tokens = enc.encode(text)
print(f"Počet tokenov: {len(tokens)}") # ~15 tokenov
print(f"Dekódované: {[enc.decode([t]) for t in tokens]}")
# Hugging Face – pre open-source modely
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-3.1-8B")
tokens = tokenizer.encode("Ahoj, ako sa máš?")
print(f"Llama 3 tokeny: {len(tokens)}") # ~8 tokenov
# Anthropic – počítanie cez SDK
import anthropic
client = anthropic.Anthropic()
# Odpoveď obsahuje usage.input_tokens a usage.output_tokens
response = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Ahoj!"}]
)
print(f"Vstupné tokeny: {response.usage.input_tokens}")
Interaktívne nástroje
- platform.openai.com/tokenizer – vizualizácia tokenizácie pre GPT modely
- Hugging Face Tokenizer Playground – porovnanie tokenizácie rôznych modelov vedľa seba
Stratégie optimalizácie
- Kratší prompt = nižšie náklady – odstráňte nadbytočné slová a opakujúce sa informácie
- Prompt caching – statickú časť promptu dávajte na začiatok a udržiavajte konzistentnú
- Jazykový výber – pre nákladovo citlivé produkčné aplikácie zvážte angličtinu s následným prekladom výstupu
- Sledujte tokenový stav – pri dlhých konverzáciách explicitne počítajte spotrebované tokeny
- Kompresia kontextu – dlhé konverzácie sumarizujte, históriu neprenášajte celú
- Obrázky – znižujte rozlíšenie vstupných obrázkov tam, kde nezáleží na detailoch
Zhrnutie
Tokenizácia je neviditeľný, ale zásadný komponent AI modelov. Ovplyvňuje cenu, kvalitu, rýchlosť a jazykovú spravodlivosť.
V roku 2026 platí niekoľko kľúčových poznatkov:
- Väčšie slovníky (100 K+) sa stávajú štandardom a zlepšujú situáciu pre slovenčinu aj ďalšie jazyky
- Multimodálna tokenizácia rozširuje rovnaké princípy na obrázky, zvuk a video
- Prompt caching a efektívny tokenový manažment sú nevyhnutné zručnosti pri budovaní produkčných AI aplikácií
- Tokenizácia ovplyvňuje bezpečnosť – kto ju rozumie, lepšie chápe aj slabé miesta modelov
Pochopenie toho, ako modely „vidia" text, vám pomôže písať lepšie prompty, efektívnejšie využívať API a realisticky odhadovať náklady na prevádzku.