Chunking в RAG в 2026 полезно понимать не как вопрос “какой размер чанка поставить”, а как упаковку знаний для retrieval. Чанк должен быть достаточно маленьким, чтобы находиться по конкретному вопросу, и достаточно цельным, чтобы не терять смысл на границах. Именно этот баланс обычно и ломает retrieval сильнее, чем выбор ещё одной embedding-модели.
Главный practical сдвиг: хороший chunking теперь чаще строят не вокруг одной магической цифры, а вокруг структуры документа, retrieval задачи и downstream контекста. Поэтому разговор “500 символов и overlap 50” уже слишком грубый для большинства production-кейсов.
Если упростить, chunking определяет:
Поэтому плохой chunking может ломать RAG сразу в трёх местах:
Именно поэтому в 2026 хороший chunking почти всегда оценивают через retrieval metrics, а не по эстетике “красиво ли нарезан текст”.
Фиксированный размер всё ещё полезен как baseline, но у него есть системное ограничение: он ничего не знает о структуре документа.
Проблемы fixed-size chunking:
Это не значит, что fixed-size нельзя использовать. Это значит, что в production его стоит воспринимать как дешёвый baseline, а не как лучший вариант “по умолчанию”.
LangChain current docs по-прежнему рекомендуют RecursiveCharacterTextSplitter как хороший generic splitter. И это остаётся разумным выбором, потому что он:
Это уже намного лучше, чем просто “отрезать каждые N символов”, потому что recursive splitter хотя бы уважает естественные границы текста.
Хороший default, когда:
Для HTML, Markdown, документации, policy docs, таблиц и wiki-страниц лучший retrieval часто получается не от semantic magic, а от уважения к структуре:
Если чанк режет таблицу пополам или отделяет заголовок от содержания, retrieval становится хуже даже при хороших embeddings.
Именно поэтому structure-aware splitters для HTML/Markdown и pipelines через Unstructured или похожие парсеры стали важнее обычной нарезки по символам.
Semantic chunking пытается объединять предложения не по форматированию, а по смысловой близости. Это может дать лучший retrieval, если:
Но practical минусы тоже важны:
Поэтому semantic chunking полезно подавать не как “следующий обязательный уровень зрелости”, а как вариант для сложных и неаккуратно структурированных корпусов.
Новая важная рамка 2026: некоторые embedding stacks поддерживают late chunking, где сначала кодируется более длинный связный контекст, а chunk vectors формируются позже. Это помогает сохранить больше surrounding context, не скатываясь в giant chunks на уровне retrieval.
Практически это значит:
Но operationally это уже более сложный pipeline, и его не стоит ставить раньше, чем вы наладили базовый retrieval eval.
Overlap помогает не потерять смысл на границах чанков. Но слишком большой overlap:
Практическое правило:
Самая полезная логика такая:
Начните с recursive chunking.
Сначала используйте structure-aware splitting по section headers, tables, lists и code blocks.
Пробуйте semantic chunking или гибридную схему.
Проверьте, даёт ли смысл late chunking.
Мерьте не “красоту чанков”, а: