Перейти к содержимому

Чанкинг и контекстуализация

Чанкинг — разбиение документов на фрагменты, которые индексируются и попадают в контекст модели. Это первый шаг RAG и самый дешёвый способ испортить всё остальное: если фрагмент потерял смысл при нарезке, никакой reranker и никакая модель его не восстановят.

Фрагмент должен быть понятен сам по себе. Классический провал: нарезка по 500 символов, при которой в выдачу попадает абзац «…это делается через хук, описанный выше» — без заголовка, раздела и предмета речи. Формально это релевантный текст; фактически он бесполезен.

СтратегияКак работаетСильная сторонаСлабое место
Фиксированный размерРежет по числу токенов или символов с перекрытиемПредсказуемая стоимость, простотаРвёт смысл на границах
РекурсивнаяПробует разделители по приоритету: разделы → абзацы → предложенияДержит логические блоки, если разметка естьЗависит от качества структуры документа
По структуреРежет по заголовкам Markdown/HTML, пунктам списков, таблицамФрагмент совпадает с разделомСлишком крупные разделы приходится дробить дальше
СемантическаяИщет границы по смене темы (сходство соседних предложений)Лучше на «плоских» текстах без разметкиДороже и медленнее индексации, результат нестабилен
Late chunkingСначала считает эмбеддинг всего документа, затем режет по токенамФрагмент сохраняет контекст документаТребует модели с большим окном и поддержки на стороне хранилища

Практический порядок выбора: структура → рекурсивная → фиксированная. Семантический чанкинг и late chunking — улучшения, к которым стоит переходить, когда есть набор вопросов и метрики, иначе не понять, помогло ли.

Единого правильного размера нет, но есть закономерности:

  • Слишком мелко — фрагмент теряет предмет речи, растёт число кандидатов, падает точность.
  • Слишком крупно — в контекст попадает лишнее, модель отвлекается, стоимость растёт, а нужный абзац «размывается» среди соседних.
  • Перекрытие (10–20% длины) спасает предложение, разрезанное на границе, но увеличивает индекс и число дублей в выдаче.

Рабочий подход: сделать чанк равным смысловому блоку (раздел, подраздел, пункт регламента) и добавить по 1–2 предложения перекрытия. Если документ — таблица или список параметров, резать по строкам почти всегда хуже, чем хранить таблицу целиком.

Контекстуализация: главный дешёвый выигрыш

Заголовок раздела «Контекстуализация: главный дешёвый выигрыш»

Даже хороший чанк теряет часть смысла в отрыве от документа. Anthropic предложил contextual retrieval: перед индексацией к каждому фрагменту добавляется короткое пояснение, где он находится и о чём документ в целом.

Например, к абзацу из инструкции добавляется: «Фрагмент из раздела о настройке кэширования в документации WordPress; речь о хуках плагина». Такое пояснение учитывается и при построении эмбеддинга, и при поиске по ключевым словам.

По замерам Anthropic в их оценке:

  • контекстуализация сама по себе снизила число неудачных поисков примерно на 49%;
  • вместе с reranking и гибридным поиском — примерно на 67%.

Это результаты конкретного набора данных, а не гарантия для любого проекта, но направление устойчивое: контекст фрагмента важнее тонкой настройки модели.

Цена — дополнительные вызовы модели на этапе индексации. Она окупается на корпусах, которые меняются редко и читаются часто; для потока логов или тикетов контекстуализация обычно слишком дорога.

  • Нарезка по символам в коде и таблицах. Ломает синтаксис и выравнивание; для таких источников нужны структурные парсеры.
  • Заголовки вне чанка. Раздел «Ограничения» без указания, чего именно ограничения, бесполезен.
  • Дублирование. Перекрытие и копии документов дают в выдаче пять почти одинаковых фрагментов, из которых модель делает вид, что нашла подтверждение.
  • Смешанные языки и форматы. PDF с колонками, сканы без OCR, docx с трекингом правок — парсинг важнее стратегии нарезки.
  • Отсутствие привязки к источнику. Без пути, заголовка и даты у фрагмента нельзя ни сослаться, ни проверить актуальность.
  • Читается ли чанк без соседей. Откройте случайные 20 фрагментов из индекса и прочитайте. Это быстрее любой метрики.
  • Есть ли в чанке заголовок и источник. Минимум: документ, раздел, дата.
  • Одинаково ли режется весь корпус. Разные стратегии для разных типов документов — норма, случайные — нет.
  • Измеряется ли эффект. Набор из 30–50 реальных вопросов с известными ответами позволяет сравнить стратегии за час. См. Оценка качества.