Главная цель chunking - сохранить смысл. Документ нельзя просто резать каждые 500 символов без оглядки на структуру: можно разорвать таблицу, пункт договора, инструкцию или важное условие.
Стратегии бывают разные: по заголовкам, абзацам, страницам, пунктам договора, semantic chunking, фиксированный размер с overlap или гибридный подход. Выбор зависит от типа документов и вопросов пользователей.
Правильный chunking улучшает retrieval. Агент быстрее находит нужный фрагмент, меньше тащит шум в контекст и может показать точную citation. Плохой chunking приводит к неполным ответам, дублям, галлюцинациям и потере важной связи между фразами.
Chunking нужно проверять не на глаз, а через evals: берут реальные вопросы, смотрят, попадают ли нужные chunks в top results, хватает ли контекста для ответа и не возвращаются ли старые или мусорные фрагменты.
Примеры
- Инструкцию делят по заголовкам и подпунктам, чтобы каждый chunk содержал законченный смысл.
- Договор разбивают по разделам и пунктам, а не по страницам, чтобы не потерять юридический контекст.
- Для FAQ-базы каждый вопрос и ответ превращают в отдельный chunk с category и source URL.
- При обработке PDF добавляют overlap, чтобы важная мысль не обрывалась на границе двух фрагментов.
- После OCR агент отбрасывает пустые страницы и мусор перед chunking.
- Для evals проверяют, находится ли правильный chunk по вопросу пользователя о конкретном регламенте.
Где используется
- подготовка документов для RAG
- внутренний поиск по базе знаний
- индексация PDF, DOCX и HTML
- создание embeddings
- поиск с citations
- обработка Notion и Confluence
- подготовка базы поддержки клиентов
- обработка OCR-документов
- контроль качества retrieval
- обновление chunks после правки документа
Связанные термины
Частые вопросы
Document chunking и document chunk - это одно и то же?
Нет. Document chunking - процесс разбиения документа. Document chunk - конкретный фрагмент, который получился после разбиения.
Как выбрать размер chunk?
Ориентируйтесь на смысл и тип документа. Для инструкций часто подходят разделы, для договоров - пункты, для справок - короткие вопрос-ответ блоки. Размер лучше проверять через evals.
Нужен ли overlap между chunks?
Часто да. Overlap помогает сохранить смысл на границе фрагментов, но если его сделать слишком большим, индекс раздуется и появится много дублей.
Почему нельзя резать текст просто по числу символов?
Так можно разорвать заголовок, таблицу, условие договора или инструкцию. Модель получит кусок без нужного контекста и ответит хуже.
Какие metadata добавлять при chunking?
Источник, ID документа, раздел, страницу, версию, дату обновления, автора, права доступа, язык, тип документа и ссылку для citation.
Как понять, что chunking работает плохо?
Поиск возвращает нерелевантные chunks, ответам не хватает контекста, citations ведут не туда, появляются дубли или агент отвечает по устаревшим фрагментам.