Прикладной AI · разбор

Нарезка документов для RAG: почему чанки важнее модели

Плохой ответ RAG-системы почти всегда родом не из модели, а из нарезки. Разбираем, как резать регламенты, договоры, PDF-сканы и тикеты поддержки, что ломается на корпусе из десятков тысяч длинных документов и как понять, что виновата именно нарезка.

9 мин чтения

Качество ответа решается до модели

В RAG модель отвечает только по тем кускам, которые ей принесли. Если нужный абзац не попал в выборку, никакая замена модели этого не исправит: она не знает, что чего-то не хватает, и уверенно отвечает по тому, что есть.

Поэтому диагностику стоит начинать не с промпта, а с вопроса «а был ли правильный кусок в выдаче поиска вообще». В большинстве проектов, которые мы разбирали, ответ на этот вопрос и был диагнозом.

Что именно ломает длинный документ

Корпус из десятков тысяч длинных документов ломает две вещи сразу. Первая: у длинного текста один вектор бесполезен — усреднённый смысл стостраничного регламента не похож ни на один конкретный вопрос. Вторая: чем мельче куски, тем больше их всего, и тем чаще похожие по формулировке, но разные по смыслу фрагменты вытесняют друг друга из топа.

Отсюда практический ориентир: резать по смысловым границам документа, а не по числу символов, и держать размер куска таким, чтобы он отвечал на один вопрос целиком. Перекрытие между соседними кусками нужно ровно для того, чтобы мысль не разрывалась пополам — а не «на всякий случай».

Четыре стратегии нарезки, которые действительно различаются

Разница между ними не в моде, а в том, что становится единицей смысла.

  • По структуре документа — заголовки, пункты, статьи договора. Лучший вариант для регламентов и нормативки: границы уже расставлены автором.
  • Скользящее окно с перекрытием — когда структуры нет: расшифровки, переписка, старые PDF без разметки.
  • Родитель и потомок — ищем по мелким кускам, а в модель отдаём объемлющий раздел. Снимает конфликт «искать удобно мелким, отвечать нужно крупным».
  • Отдельная нарезка таблиц — строка с заголовками столбцов рядом. Таблица, разрезанная как текст, теряет смысл полностью и при этом продолжает уверенно находиться.

Разные источники — разные правила

Единая нарезка для всего корпуса — самая частая причина того, что «в целом работает, но на половине вопросов мимо». Тип источника определяет и границы, и то, что нужно положить рядом с текстом.

  • Регламенты и договоры: границы по пунктам, в метаданных — версия и дата вступления в силу, иначе система отвечает по отменённой редакции.
  • Тикеты поддержки: вопрос и решение в одном куске. Разрезанные по сообщениям, они превращаются в набор реплик без ответа.
  • Сканы и PDF: сначала распознавание и восстановление порядка колонок, только потом нарезка. Мусор на входе не лечится ни размером куска, ни моделью.
  • Вики и база знаний продукта: страница как единица, заголовок раздела как обязательный префикс куска.

Метаданные важнее ещё одного эмбеддинга

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

Фильтр по метаданным обычно даёт больший прирост точности, чем переход на более дорогую модель эмбеддингов, и стоит несопоставимо дешевле в эксплуатации.

Как понять, что дело в нарезке

Нужен небольшой набор реальных вопросов с указанием, в каком документе лежит ответ. Дальше проверяется одно: попадает ли нужный фрагмент в топ выдачи поиска. Если попадает, а ответ всё равно плохой — проблема в промпте или модели. Если не попадает — виновата нарезка или индекс, и менять модель бессмысленно.

Такой набор из тридцати-пятидесяти вопросов собирается за день и потом окупается на каждом изменении конвейера. Без него любые правки нарезки — это спор двух мнений.

// Коротко
Если правильный кусок не попал в выдачу поиска, ответ уже неверный — модель тут ни при чём.
Резать по смысловым границам источника, а не по числу символов.
Разным типам источников нужны разные правила нарезки: договор, тикет и таблица не режутся одинаково.
Метаданные у куска дают больше точности, чем более дорогая модель эмбеддингов.
// Вопросы

Какой размер куска выбрать?

Тот, при котором кусок отвечает на один типичный вопрос целиком. Это свойство корпуса, а не универсальное число: у нормативки это пункт, у расшифровки встречи — смысловой блок на несколько реплик. Подбирается на наборе вопросов, а не по статье в интернете.

Нужно ли перекрытие между кусками?

Нужно там, где границы проведены механически: скользящее окно, расшифровки, тексты без структуры. Если резать по заголовкам и пунктам, перекрытие чаще вредит — оно раздувает индекс и заполняет топ выдачи почти одинаковыми фрагментами.

Что делать с таблицами и сканами?

Обрабатывать отдельной веткой конвейера. Таблицы — построчно, с заголовками столбцов в каждом куске. Сканы — сначала распознавание с восстановлением порядка колонок, и только потом нарезка. Общий путь для всего корпуса здесь всегда даёт худший результат.

Помогает ли гибридный поиск вместо векторного?

Часто да, особенно там, где важны точные термины: артикулы, номера статей, названия систем. Векторный поиск хорошо ловит смысл и плохо — точное совпадение редкого слова. Но гибрид не спасает нарезку: если нужный фрагмент разрезан пополам, его не найдёт ни один из двух методов.

Насколько большим может быть корпус?

Ограничение обычно не в объёме, а в разнородности. Десять тысяч однотипных регламентов ведут себя предсказуемо, а тысяча документов пятнадцати разных форматов требует нескольких веток обработки и куда большего внимания к метаданным.

// Читать дальше

Платформы для AI-агентов 2026: что выбрать бизнесу

Одиннадцать платформ, за что каждая берёт деньги, где у неё потолок и что из этого работает из России. Все цифры — с публичных страниц вендоров, проверены 6 сентября 2026, с указанием источника. Без рейтингов и «топ-10»: выбор зависит от того, что вы строите, а не от места в списке.

n8n или своя разработка: где проходит граница

n8n закрывает больше задач, чем принято думать, и мы сами регулярно советуем начать с него. Но у конструктора есть граница, и проходит она не по сложности сценария, а по цене ошибки, конкурентности и правам доступа. Разбираем, как считать заранее и в какой момент дешевле написать код.

Готовый чат-бот или свой: считаем стоимость владения

Коробочный бот запускается за неделю и выглядит дешевле в десять раз. Разница появляется не в первый месяц, а там, где бот должен посмотреть в вашу систему, ответить по вашим документам и честно передать человеку. Разбираем, из чего складывается счёт на два года и как выбрать, не переплатив ни в одну сторону.

Как обновлять базу знаний RAG, не останавливая систему

Демо живёт на статичном корпусе, продакшн — на меняющемся. Разбираем инкрементальное обновление вместо полной переиндексации, подмену индекса без рестарта, удаление документов и то, какие метрики показывают деградацию поиска раньше, чем о ней сообщат пользователи.

Собрали RAG, а он отвечает мимо? Посмотрим, что реально достаётся из вашего корпуса.