Стратегии чанкинга для RAG¶
~8 минут чтения
URL: Firecrawl, LangCopilot, Agenta, Weaviate, Pinecone, arXiv Тип: rag / chunking / semantic-chunking / late-chunking / retrieval Дата: Февраль 2026 Сбор: Ralph Research ФАЗА 5
Предварительно: Проектирование RAG-систем
Зачем это нужно¶
RAG подает документы в LLM как контекст, но документ целиком не влезает -- его режут на куски (chunks). Как именно резать -- критично. Fixed-size режет механически по 512 токенов, разрывая предложения и мысли. Semantic chunking группирует по смыслу: пока эмбеддинги соседних предложений похожи -- это один чанк. Late Chunking переворачивает порядок: сначала эмбеддим документ целиком, потом нарезаем -- каждый кусок помнит глобальный контекст. Разница на практике: 60% retrieval accuracy у fixed-size vs 85%+ у semantic.
Part 1: Overview¶
Executive Summary¶
Fixed-size chunking ломает семантику
Fixed-size chunking разрывает предложения и абзацы посередине. На реальных данных это даёт 60% retrieval accuracy vs 85%+ у semantic chunking. Если accuracy критична -- никогда не используй fixed-size в production.
Key Insight:
Semantic chunking can boost RAG accuracy by up to 70% compared to fixed-size methods. Late Chunking (2024-2025 innovation) inverts traditional order--embedding entire documents first, then chunking--achieving 2-18% retrieval improvement by preserving global context.
2026 Chunking Strategy Hierarchy:
| Strategy | Accuracy | Complexity | Best For |
|---|---|---|---|
| Fixed-size | Baseline | Low | Simple docs |
| Recursive | +10-20% | Low | General use |
| Semantic | +40-70% | Medium | Quality-focused |
| Late Chunking | +50-85% | High | Long documents |
| Hybrid | +60-90% | High | Production |
Part 2: Traditional Chunking Methods¶
1. Fixed-Size Chunking¶
Concept: Split text at fixed character or token count.
Пример (fixed-size, 20 символов):
- Chunk 1:
"The quick brown fox "-- обрезано посередине мысли - Chunk 2:
"jumps over the lazy "-- продолжение без начала - Chunk 3:
"dog. The dog sleep"-- два предложения в одном куске, второе обрезано
Предложения разорваны, контекст потерян.
Fixed-Size Parameters:
| Parameter | Typical Value | Impact |
|---|---|---|
| Chunk size | 256-1024 tokens | Larger = more context, less precision |
| Overlap | 50-200 tokens | More = less boundary loss |
Pros & Cons:
| Pro | Con |
|---|---|
| Simple implementation | Breaks semantic boundaries |
| Predictable memory | Context loss at boundaries |
| Fast processing | Variable quality |
2. Recursive Character Splitting¶
Concept: Use prioritized list of separators (paragraphs → sentences → words).
Приоритет разделителей:
- Разбить по
"\n\n"(абзацы) - Если чанк слишком большой → разбить по
"\n"(строки) - Если все ещё большой → разбить по
". "(предложения) - Если все ещё большой → разбить по
" "(слова) - В крайнем случае → разбить по символам
Recursive vs Fixed-Size:
| Metric | Fixed-Size | Recursive |
|---|---|---|
| Semantic coherence | Low | Medium |
| Context preservation | Low | Medium |
| Implementation | Simple | Simple |
| Best for | Simple docs | General text |
Part 3: Semantic Chunking¶
Core Concept¶
Semantic chunking splits text based on conceptual boundaries and meaning, not character counts.
- Разбить текст на предложения
- Получить эмбеддинг каждого предложения
- Вычислить similarity между соседними предложениями
- Создать новый чанк когда similarity падает ниже порога
Пример:
- Sentence A:
"Python is a programming language"→ Sentence B:"It supports multiple paradigms"→ similarity = 0.85 → один чанк - Sentence B → Sentence C:
"The Eiffel Tower is in Paris"→ similarity = 0.15 → новый чанк
Semantic Chunking Formula¶
Where \(\theta\) is the similarity threshold (typically 0.5-0.8).
Semantic Chunking Benefits¶
| Benefit | Description |
|---|---|
| Conceptual coherence | Each chunk = one idea |
| Better retrieval | Query matches complete concepts |
| Context preservation | Related info stays together |
| Adaptive sizing | Chunks sized by meaning |
Semantic Chunking Impact¶
| Metric | Fixed | Recursive | Semantic |
|---|---|---|---|
| Retrieval accuracy | 60% | 70% | 85%+ |
| Semantic coherence | Low | Medium | High |
| Processing time | Fast | Fast | Medium |
Part 4: Late Chunking (2024-2025 Innovation)¶
Core Concept¶
Late Chunking inverts traditional order: embed entire document first, then chunk.
Traditional RAG: Document → Chunk → Embed each chunk → Vector Store. Контекст теряется при нарезке.
Late Chunking переворачивает порядок:
- Токенизировать весь документ
- Пропустить все токены через long-context модель эмбеддингов
- Применить mean pooling к диапазонам токенов → эмбеддинги чанков
- Каждый эмбеддинг чанка сохраняет глобальный контекст документа
Late Chunking Performance¶
| Benchmark | Traditional | Late Chunking | Improvement |
|---|---|---|---|
| Retrieval quality | Baseline | +2-18% | Significant |
| Context preservation | Lost | Preserved | Critical |
| Long document handling | Poor | Good | Major |
When to Use Late Chunking¶
| Use Case | Recommended | Reason |
|---|---|---|
| Long documents | ✅ Yes | Context preserved |
| Technical docs | ✅ Yes | Cross-references kept |
| Legal contracts | ✅ Yes | Clause context |
| Short articles | ⚠️ Maybe | Overkill |
| Simple FAQ | ❌ No | Not worth complexity |
Part 5: Advanced Strategies¶
1. Hierarchical Chunking¶
Concept: Multiple chunk levels (small for retrieval, large for context).
| Уровень | Размер | Назначение |
|---|---|---|
| Level 1 (мелкие) | 256 токенов | Векторный поиск, точное совпадение |
| Level 2 (средние) | 512 токенов | Вписывание в context window |
| Level 3 (крупные) | 1024+ токенов | Полный контекст, суммаризация |
Retrieval: поиск по Level 1 → возврат контекста из Level ⅔.
Chunk size побольше != контекст получше
Соблазнительно поставить chunk size 2048 токенов "чтобы точно хватило контекста". Но при retrieval большой чанк содержит много нерелевантного текста -- similarity score падает, нужный чанк проигрывает в ранжировании. Оптимум: мелкие чанки для поиска (256-512), крупные для контекста (1024+). Ищем точно, отдаём широко.
2. Parent Chunk Strategy¶
| Aspect | Details |
|---|---|
| Small chunks | For precise retrieval |
| Parent chunks | Returned for LLM context |
| Mapping | Child → Parent relationship |
3. Contextual Retrieval¶
Concept: Prepend document context to each chunk.
Без контекста: "The model achieved 95% accuracy on the test set" -- какая модель? Какой test set?
С контекстом: "Document: BERT Paper, Section: Experiments. The model achieved 95% accuracy on the test set" -- теперь ясно: это BERT, секция экспериментов.
4. Max-Min Semantic Chunking (Dec 2025)¶
| Aspect | Details |
|---|---|
| Developer | Milvus |
| Innovation | Embedding-first approach |
| Benefit | Smarter chunk boundaries |
| Improvement | Better context + RAG accuracy |
5. Agentic Chunking (2025)¶
Concept: Agent dynamically selects chunking strategy per document.
Агент анализирует документ и динамически выбирает стратегию:
- Анализ структуры -- секции, заголовки, вложенность
- Плотность контента -- технический vs нарративный
- Длина документа и целевой use case
- Решение: "Это техническое руководство → semantic + hierarchical chunking с сохранением code blocks"
Part 6: Language-Specific Chunking¶
Code Chunking¶
| Strategy | Description |
|---|---|
| Function-level | Split at function/class boundaries |
| AST-based | Parse syntax tree, split on nodes |
| Doc-level | Entire files as chunks |
Markdown Chunking¶
| Element | Handling |
|---|---|
| Headers | New chunk boundary |
| Code blocks | Keep together |
| Tables | Keep together |
| Lists | Keep related items |
Part 7: Selection Guide¶
Decision Tree¶
graph TD
START{"Document type?"} -->|"Simple, short"| REC["Recursive chunking"]
START -->|"Long, context-heavy"| LATE["Late Chunking"]
START -->|"Quality-critical"| SEM["Semantic chunking"]
START -->|"Mixed types"| AGENT["Agentic chunking"]
START -->|"Retrieval + context"| HIER["Hierarchical / Parent chunk"]
START -->|"Production at scale"| HYB["Hybrid (semantic + hierarchical)"]
style REC fill:#e8f5e9,stroke:#4caf50
style LATE fill:#e8eaf6,stroke:#3f51b5
style SEM fill:#fff3e0,stroke:#ff9800
style AGENT fill:#fce4ec,stroke:#e91e63
style HIER fill:#e0f7fa,stroke:#00bcd4
style HYB fill:#f3e5f5,stroke:#9c27b0
Use Case Matrix¶
| Use Case | Primary | Secondary | Chunk Size |
|---|---|---|---|
| FAQ/Support | Recursive | - | 256-512 |
| Technical docs | Semantic | Hierarchical | 512-1024 |
| Legal contracts | Late Chunking | Contextual | 1024+ |
| Research papers | Semantic | Parent chunk | 512-1024 |
| Code documentation | AST-based | Hierarchical | Function-level |
| News articles | Recursive | - | 256-512 |
Part 8: Interview-Relevant Numbers¶
Accuracy Comparison¶
| Strategy | Retrieval Accuracy | Improvement |
|---|---|---|
| Fixed-size | 60% | Baseline |
| Recursive | 70% | +10% |
| Semantic | 85% | +25% |
| Late Chunking | 87% | +27% |
| Hybrid | 90%+ | +30%+ |
Processing Overhead¶
| Strategy | Time Impact | Memory Impact |
|---|---|---|
| Fixed-size | 1x | 1x |
| Recursive | 1x | 1x |
| Semantic | 1.5-2x | 1.5x |
| Late Chunking | 2-3x | 2x |
| Agentic | 3-5x | 2x |
Chunk Size Guidelines¶
| Model | Optimal Chunk | Max Chunk |
|---|---|---|
| GPT-3.5/4 | 512-1024 | 8192 |
| Claude 3 | 1024-2048 | 100K+ |
| Local 7B | 256-512 | 4096 |
Late Chunking Benchmarks¶
| Benchmark | Improvement |
|---|---|
| Single-hop retrieval | +2-5% |
| Multi-hop retrieval | +10-18% |
| Long document QA | +15-20% |
Interview Questions¶
1. Как выбрать стратегию чанкинга для production RAG?¶
Red flag: "Semantic chunking всегда лучше"
Strong answer: "Зависит от данных и требований. FAQ/короткие тексты: recursive chunking (просто, быстро, достаточно). Технические документы: semantic chunking (сохраняет концептуальную целостность). Юридические контракты: late chunking (важен глобальный контекст). Production на масштабе: hierarchical -- мелкие чанки для поиска (256-512 токенов), крупные для контекста (1024+). Ищем точно, возвращаем широко."
2. Late chunking vs semantic chunking: в чём принципиальная разница?¶
Red flag: "Late chunking -- просто улучшенная версия semantic chunking"
Strong answer: "Порядок операций разный. Semantic: split → embed каждый чанк → store. Late: embed весь документ → split эмбеддинги → store. В semantic chunking каждый чанк эмбеддится изолированно -- если чанк содержит 'The model achieved 95%', непонятно о какой модели речь. В late chunking весь документ проходит через long-context модель, и mean pooling по диапазонам токенов сохраняет глобальный контекст в каждом chunk embedding. Gain: +2-5% single-hop, +10-18% multi-hop retrieval."
3. Fixed-size chunking дает 60% accuracy -- почему его вообще используют?¶
Red flag: "Его не нужно использовать, это устаревший подход"
Strong answer: "Три причины: (1) Простота -- одна строка кода, нет зависимости от embedding модели. (2) Предсказуемость -- фиксированный размер чанков = предсказуемая стоимость и latency. (3) Скорость -- нет overhead на вычисление эмбеддингов при индексации. Для простых FAQ, support tickets, structured данных -- fixed-size с overlap 10-20% дает приемлемые результаты. Semantic chunking оправдан когда данные неструктурированные и quality критичен."
See Also¶
- RAG System Design -- end-to-end RAG pipeline architecture
- RAG Evaluation Metrics -- как оценить качество retrieval после chunking
- Advanced RAG Techniques -- HyDE, query rewriting, multi-hop
- Vector DB Comparison -- Pinecone vs Qdrant vs Weaviate для хранения chunks
- Embedding Models -- какие модели лучше для semantic chunking
Sources¶
- Firecrawl -- "Best Chunking Strategies for RAG in 2025"
- LangCopilot — "Document Chunking for RAG: 9 Strategies Tested (70% Accuracy Boost)"
- Agenta — "The Ultimate Guide to RAG Chunking Strategies"
- Weaviate — "Chunking Strategies to Improve Your RAG Performance"
- Pinecone — "Chunking Strategies for LLM Applications"
- arXiv — "Where Do LLMs Still Struggle? Code Generation Analysis" (2511.04355)
- Medium — "Max-Min Semantic Chunking for RAG"
- ResearchGate — "Data Chunking Strategies for RAG in 2025"