Skip to main content

Hierarchiczne dzielenie na fragmenty (Hierarchical Chunking / Parent-Child)

DLA AGENTÓW AIChatGPTClaude

Zaawansowana strategia podziału dokumentów (Parent-Document Retriever) dla systemów RAG. Tekst jest dzielony na małe fragmenty podrzędne (Child Chunks) w celu precyzyjnego wyszukiwania wektorowego, jednak do kontekstu modelu przekazywany jest pełny fragment nadrzędny (Parent Chunk), aby zachować szeroki kontekst i nie utracić sensu.

1. Przegląd koncepcji i przeznaczenie

Gdy bierzecie podręcznik lub kodeks prawny i przygotowujecie go dla bazy wiedzy RAG, staje przed Wami najtrudniejsze pytanie inżynierskie: Jak dokładnie pociąć tekst?

Spójrzcie na problem obrazowo:

  • Wariant A (Drobne cięcie po 2 zdania): Wyszukiwanie frazowe „grzywna 5000 UAH” zadziała natychmiastowo. Ale w tym mikroskopijnym fragmencie nie ma informacji, za co dokładnie grozi ta grzywna ani komu należy ją zapłacić!
  • Wariant B (Duże cięcie po 10 stron): Kontekstu jest pod dostatkiem, ale wektor takiego giganta staje się szarą papką z setkami różnych tematów, przez co algorytm nie znajduje precyzyjnej odpowiedzi.

Rozwiązaniem tego problemu jest Hierarchical Chunking (zwany też Parent-Child Retriever).

Z praktycznego punktu widzenia działa to jak lupa i zdjęcie panoramiczne: szukasz szczegółu przez szkło powiększające (mały chunk), ale aby zrozumieć, gdzie ten szczegół się znajduje, robisz krok wstecz i patrzysz na cały pokój (chunk rodzica).

2. Jak działa para „Rodzic — Dziecko” (Parent-Child)

┌─────────────────────────────────────────────────────────────┐
│                 NADRZĘDNY CHUNK (Parent Chunk, 1000 słów)   │
│ «Rozdział 4. Bezpieczeństwo pracy i kary finansowe...»      │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ PODRZĘDNY CHUNK #1 (100 słów):                          │ │
│ │ «W przypadku naruszenia obowiązku noszenia kasku na budowie...» │ │
│ └─────────────────────────────────────────────────────────┘ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ PODRZĘDNY CHUNK #2 (100 słów): ➔ DOKŁADNE ZBIEŻNOŚĆ WEKTOROWA! │ │
│ │ «...nakładana jest kara w wysokości 5 000 UAH.»         │ │
│ └─────────────────────────────────────────────────────────┘ │
└──────────────────────────────┬──────────────────────────────┘
                               │
                               ▼
     Ale do kontekstu modelu wysyłany jest CAŁY NADRZĘDNY ROZDZIAŁ #4!
     Model widzi zarówno karę, jak i pełny kontekst!

3. Dlaczego ta metoda wypiera standardowe cięcie o stałej długości

  1. Idealna precyzja retrievalu: Wektory krótkich zdań są niezwykle ostre i specyficzne.
  2. Zero halucynacji wynikających z braku faktów: Model zawsze widzi otaczające doprecyzowania, wyjątki od reguł („poza przypadkami klęsk żywiołowych”) oraz nagłówki sekcji.
  3. Zachowanie logicznych tabel: Tabele nie są przecinane w połowie rzędów.

4. Praktyczna konkluzja

Nowoczesne frameworki (LangChain ParentDocumentRetriever oraz LlamaIndex) wspierają hierarchical chunking out-of-the-box. Poświęćcie pół godziny na konfigurację schematu Parent-Child – a trafność odpowiedzi Waszego korporacyjnego bota wzrośnie o co najmniej 30%.

/ Najczęściej zadawane pytaniaSchema.org FAQPage

FAQ: Hierarchiczne dzielenie na fragmenty (Hierarchical Chunking / Parent-Child)

To klasyczny kompromis: jeśli fragmenty będą bardzo małe (np. 100 słów), wyszukiwanie idealnie znajdzie dokładną frazę, ale modelowi zabraknie kontekstu otoczenia, by zrozumieć istotę. Jeśli fragmenty będą ogromne (np. 2000 słów), kontekstu wystarczy, ale wyszukiwanie wektorowe stanie się „rozmyte” i może przeoczyć dokładny fakt.
/ Linki wewnętrzne
Wszystkie hasła