# Od paragrafu k odpovědi: Jak chunking zlepšuje právní AI

> Zjistěte, proč inteligentní dělení textu (chunking) zvyšuje přesnost a rychlost AI vyhledávání v právu. Praktické tipy pro velikost chunku, překryv a sémantické seskupování.

> **Tento obsah byl automaticky přeložen a může obsahovat nepřesnosti.**

**Kategorie:** Engineering  
**Autor:** denis-capkovic (CEO a spoluzakladatel)  
**Publikováno:** 2025-05-05  
**Doba čtení:** 10 min

---
Když už víme, co je embedding, a že nejlepší vyhledávání funguje na hybridním přístupu (kombinujeme embeddingy s fulltextovým vyhledáváním), mohlo by se zdát, že stačí vzít zákony, vytvořit z nich embeddingy a máme hotovo.

**Naštěstí to není tak jednoduché.** Působí zde dvě protichůdné síly:

- **Embedding celého dokumentu** – nejjednodušší řešení, které zachytí celý význam textu, ale v praxi nefunguje. Pokud si připomeneme, jak embeddingy fungují, víme, že zachycují význam pouze toho textu, který se do nich vejde. Když embedujeme celý zákon, výsledný vektor nebude řádně reprezentovat žádné konkrétní téma. Algoritmus má navíc limit počtu tokenů, takže u příliš dlouhého dokumentu se jeho konec jednoduše odřízne.

- **Embedding jedné věty** – na opačném konci spektra máme dokonalé dodržení limitu, ale ve vektoru skončí příliš málo informací. Ukažme si to na příkladu.

  „(3) Odnětím svobody na tři roky až osm let se pachatel potrestá, pokud spáchá čin uvedený v odstavci 1 a způsobí jím značnou škodu.“

  Z této izolované věty **nedokážeme** zjistit, že jde o třetí odstavec §224, který zpřísňuje trest za kapitálový podvod v případech, kdy pachatel způsobí značnou škodu. Zvýšená trestní sazba odráží společenskou nebezpečnost takového jednání, zejména ve vztahu k důvěře investorů a stabilitě finančního trhu.

Řešením je zvolit **zlatou střední cestu**: mít dostatek kontextu, aby embedding zachytil podstatné informace, ale stále se vejít do limitů modelu.

# Pět přístupů k chunkingu

## 1. Pevné okno podle počtu tokenů

Dokument rozdělíme na věty a shromažďujeme je, dokud nepřekročíme například 8 192 tokenů (≈ 32 tisíc znaků). **Výhoda** – triviální implementace. **Nevýhoda** – v následujícím chunku nám může chybět začátek odstavce, což zkreslí význam.

Na obrázku vidíme příklad, kdy nám ve fialovém chunku chybí začátek odstavce. Jako lidé logicky chápeme, že odstavce rozlišují význam a jejich začátek nám poskytuje kontext ke zbytku textu, takže to může být velký problém.

![Příklad chunkingu 1](./chunking-1.png)

## 2. Překryv (overlap)

Nový chunk nezačínáme přímo za koncem předchozího, ale o několik vět dříve. Zelená část textu se objeví v obou embedinzích, čímž snižujeme riziko, že odříznutím změníme význam.

![Příklad chunkingu 2](./chunking-2.png)

Stále to však neřeší celý problém. Podívejme se na následující situaci.

![Příklad chunkingu 3](./chunking-3.png)

Máme sice překryv 5 bodů, ale fialovému chunku stále chybí začátek seznamu, který je v tomto případě velmi důležitý.

Je třeba si uvědomit, že protože délky odstavců a vět jsou v podstatě arbitrární, přístupem překryvu a dělení podle vět, odstavců, seznamů atd. nikdy zcela neodstraníme situaci, kdy odřízneme podstatnou část textu ze začátku nebo konce.

## 3. Sémantický chunking

Naším hlavním problémem je, že chceme vložit věty, které k sobě patří, do jednoho chunku. Jako lidé dokážeme přirozeně určit, že k sobě patří, ale vycházíme přitom z uspořádání dokumentu a významu. Protože význam dokážeme zachytit pomocí embeddingu, porovnávejme věty/chunky prostřednictvím embeddingu a podle podobnosti chunk rozšiřme nebo zkraťme.

Tímto způsobem můžeme chunking automatizovaně zlepšit, protože dokážeme detekovat konec chunku podle významu, a měli bychom tak předejít situacím, jako byla ta předchozí.

Říkám „měli“, protože u automatizovaného přístupu není nic stoprocentní. Příkladem selhání je předchozí seznam bodů v §36. Kdyby byl seznam pro jeden chunk příliš dlouhý, museli bychom jej rozdělit do dvou chunků – a jsme znovu u předchozího problému.

## 4. AI kontext

Problém, který se snažíme řešit postupně složitějšími přístupy, spočívá v tom, že chunk nemá kontext o tom, kde se v dokumentu nachází. Jde-li například o seznam, potřebujeme mít v chunku také informace o podstatě tohoto seznamu, nikoli pouze jednotlivé položky.

Teorie AI kontextu spočívá v tom, že dokument rozdělíme hierarchicky – v našem případě na hlavy, díly, paragrafy atd. Pro jednotlivé části vygenerujeme shrnutí a vložíme je na začátek chunku jako informaci o tom, kde se chunk nachází. Pro náš předchozí příklad s §36 bychom například jako kontext přidali: „Tento úsek Trestního zákona patří do obecné části a věnuje se základním zásadám ukládání sankcí. Konkrétně se zaměřuje na polehčující a přitěžující okolnosti, které ovlivňují výši a druh trestu.“

I když je tedy seznam v §36 příliš dlouhý, máme informaci o tom, čeho se týká, a samotný embedding bude přesnější.

---

Přístupů k chunkingu existuje příliš mnoho. Nesmíme zapomínat, že čím složitější přístup zvolíme, tím je dražší a pomalejší a tím více roste pravděpodobnost, že v neočekávaném případě zcela selže. Je tedy třeba dobře promyslet, jaké typy dokumentů chceme chunkovat, a využít doménovou expertizu pro konkrétní případ.

Pokud například víme, že dokument obsahuje pouze odstavce, které na sebe nenavazují, stačí dokument rozdělit na tyto odstavce a do každého přidat základní informaci o dokumentu jako kontext.

Věřím, že vám článek pomohl získat přehled o různých metodách chunkingu. Toto téma je stále předmětem výzkumu a neustále se vyvíjí.