Чанкинг: разбиение данных на блоки¶
Чанкинг (от англ. chunking — разбиение на куски) — это процесс разделения большого объёма данных (текста, файлов, аудио- или видеопотока) на меньшие по размеру, логически завершённые блоки (чанки) для последующей обработки, хранения или передачи. В информатике и обработке естественного языка чанкинг применяется для оптимизации работы алгоритмов, ограниченных объёмом оперативной памяти или контекстным окном моделей машинного обучения.
¶Области применения
¶Обработка естественного языка (NLP)
В контексте больших языковых моделей (LLM) чанкинг является обязательным этапом при построении систем поиска по векторным базам данных (RAG-архитектура). Поскольку модели имеют фиксированный лимит на количество входных токенов, длинные документы разбиваются на фрагменты по 300–1000 токенов. Каждый фрагмент затем преобразуется в векторное представление (эмбеддинг) и индексируется. При поисковом запросе система находит релевантные чанки, а не весь документ целиком, что снижает вычислительные затраты и повышает точность ответа.
Существует несколько стратегий разбиения текста:
- Фиксированный размер — разрезание по заданному числу символов или токенов без учёта смысловой нагрузки. Простейший, но может разрывать предложения и абзацы.
- Смысловое разбиение — разделение по границам абзацев, предложений или маркированных списков. Сохраняет контекст, но длина чанков неравномерна.
- Рекурсивный чанкинг — последовательное применение нескольких разделителей (от двойного переноса строки до пробела) с контролем максимального размера. Используется в библиотеках LangChain и LlamaIndex.
- Адаптивный чанкинг — разбиение с учётом структуры документа (заголовки, оглавление) или с перекрытием соседних фрагментов (overlap) для сохранения контекста на стыках.
¶Передача данных по сети
В компьютерных сетях чанкинг используется в протоколах передачи данных. Например, в TCP/IP поток данных разбивается на сегменты, в HTTP/2 — на кадры (frames), в BitTorrent — на куски фиксированного размера (обычно 256 КБ или 1 МБ). Разбиение позволяет:
- повысить устойчивость к ошибкам (повторно передаётся только повреждённый блок);
- распараллелить передачу по нескольким каналам;
- обеспечить докачку при обрыве соединения.
¶Хранение и дедупликация данных
Системы резервного копирования и файловые системы (например, ZFS, LessFS) применяют чанкинг для разбиения файлов на блоки с вычислением хеш-сумм. Это позволяет выявлять дублирующиеся фрагменты данных и хранить их только один раз (дедупликация), что существенно экономит дисковое пространство. Алгоритмы фиксированного размера сменяются контентно-зависимым разбиением (CDC, content-defined chunking), при котором границы блоков определяются по содержимому потока данных, что делает дедупликацию устойчивой к вставкам и удалениям в файле.
¶Аудио- и видеопотоки
При потоковой передаче медиа (стриминг) чанкинг реализуется в протоколах HLS и MPEG-DASH: видео разрезается на короткие сегменты длительностью 2–10 секунд. Клиентское устройство загружает сегменты последовательно, что позволяет адаптировать качество в реальном времени и переключаться между битрейтами без остановки воспроизведения.
¶Методы и алгоритмы
Выбор метода чанкинга зависит от типа данных и целевой задачи. Ключевые параметры:
- Размер чанка — определяется ограничениями модели или протокола. Для LLM оптимальный размер обычно составляет 500–1500 токенов: слишком короткие фрагменты теряют контекст, слишком длинные — превышают окно модели.
- Перекрытие (overlap) — количество токенов или символов, общих для соседних чанков. Типичное значение — 10–20 % от размера блока. Перекрытие предотвращает потерю информации на границах разрыва.
- Метрика схожести — при векторном поиске для оценки релевантности чанка запросу используется косинусная близость или скалярное произведение эмбеддингов.
Для структурированных данных (JSON, XML, Markdown) применяются парсеры, которые учитывают вложенность элементов и не разрывают логические узлы. В некоторых системах используется двухуровневый чанкинг: сначала документ делится на крупные разделы, затем каждый раздел — на мелкие фрагменты с перекрытием.
¶Ограничения и проблемы
Основная сложность чанкинга — баланс между полнотой контекста и вычислительной эффективностью. Слишком крупные блоки увеличивают время обработки и стоимость запросов к модели, слишком мелкие — приводят к потере смысловых связей и росту числа ложных срабатываний при поиске. Кроме того, разбиение текста по жёстким границам может разорвать идиомы, перечисления или диалоги, что снижает качество генерации ответа.
В распределённых системах чанкинг требует координации между узлами: необходимо гарантировать, что все части данных обработаны ровно один раз, а при сбое — обеспечить повторную обработку без дублирования.
¶Примечания
- Термин «чанкинг» также используется в когнитивной психологии для описания процесса объединения отдельных элементов информации в осмысленные группы (например, запоминание телефонного номера частями), однако в техническом контексте под этим термином понимается исключительно программная операция разбиения данных.
¶Источники
- Lewis, P. et al. Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks (2020).
- LangChain Documentation: Text Splitters.
- Rabin, M. O. Fingerprinting by Random Polynomials (1981) — основа контентно-зависимого разбиения.
- RFC 9112: HTTP/2 Frame Format.
- Pantel, L. et al. LessFS: Content-Defined Chunking for Deduplication (2015).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →


