[МСК]

Что такое загнивание контекста и как удержать качество

Зачем это знать

  • Понять, почему ответы портятся при росте объёма документов, а задачи остаются прежними
  • Знать, за счёт чего качество держится на длинных диалогах и больших пакетах файлов
  • Спрашивать у подрядчика замер на полном объёме, а не демонстрацию на трёх примерах

Что такое загнивание контекста простыми словами

На столе лежит папка. Одна справка находится за секунду. Двести справок лежат там же, но нужную ищут весь вечер, и часть листов просматривают вскользь.

Модель ведёт себя похоже. В контекстное окно помещаются сотни страниц: у Claude лимит в 200 000 токенов соответствует примерно 500 страницам текста. Но помещается только то, что укладывается в лимит, а внимание внутри пакета распределяется неравномерно: деталь из середины учитывается реже, чем та же деталь в коротком запросе.

Отсюда название. Лимит не превышен, ошибки нет, ответ выглядит уверенно — а доля верных ответов ползёт вниз.

Шаг 1
Объём растёт незаметно
К запросу прирастают история диалога, инструкция, приложенные документы. Каждый шаг добавляет немного, за неделю набирается кратный объём.
Шаг 2
Середина весит меньше краёв
Начало и конец пакета учитываются охотнее. Пункт со страницы 40 из 80 попадает в ответ реже прочих.
Шаг 3
Копятся противоречия
Старая редакция регламента и новая лежат рядом. Модель выбирает похожее на вопрос, а не действующее.
Шаг 4
Ошибка выглядит как обычный ответ
Пропущенный пункт не подсвечивается. Он обнаруживается сравнением с эталонным ответом.
Как контекст загнивает

Как это работает

  1. Контекст собирается из четырёх источников. Системная инструкция, история переписки, приложенные документы, ответ поиска по базе. Растут все четыре, и обычно незаметно.
  2. Вместимость и точность — разные величины. Заявленный объём окна говорит о том, сколько текста примут. Сколько из него будет учтено — вопрос отдельного замера на своих данных.
  3. Похожие документы мешают сильнее разных. Пять договоров одного типа с расхождением в одном пункте путают модель охотнее, чем пять документов из разных отделов.
  4. Длинный диалог утяжеляется сам. Вся переписка отправляется заново при каждой реплике, вместе с ней растёт входной объём и падает доля учтённого. Порядок цифр по своей задаче даёт калькулятор объёма.
  5. Граница находится замером. Одна и та же выборка вопросов прогоняется при коротком и при длинном контексте, доли верных ответов сравниваются.

Тонкость про длинные окна: длинный контекст выигрывает время на старте, когда поиск по базе ещё не построен. На потоке выигрывает отбор фрагментов под конкретный вопрос.

Пример из практики

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

Юридический отдел проверяет входящие договоры на соответствие регламенту. Регламент — 60 страниц, договор — 20–40 страниц, вопросов к каждому договору десять. В первой версии в запрос кладут регламент целиком и весь договор.

Замер строят так. Берут 150 договоров за прошлый квартал с проверенными вручную ответами юриста. Считают долю пунктов, найденных верно, — одна метрика, одна выборка, два режима работы. Первый режим: полный пакет разом. Второй: поиск по регламенту, три-пять релевантных пунктов и нужный раздел договора.

Порог задаёт бизнес, а не техника: доля пропущенных пунктов — не выше 3%, потому что цена одного пропуска в договоре измеряется сотнями тысяч рублей. Если первый режим порог не проходит, а второй проходит, решение принимается по таблице ниже, а не по ощущениям.

Весь пакет в один запрос
Отобранные фрагменты под вопрос
Что видит модель
регламент и договор целиком
нужный раздел договора и три-пять пунктов регламента
Устаревшие редакции
лежат рядом с действующими
отсечены на этапе поиска
Входной объём на запрос
растёт вместе с объёмом документа
держится в заданных рамках
Где ищут причину ошибки
во всём пакете
в выдаче поиска, она короткая
Что нужно построить заранее
ничего
поиск по базе документов
Что меняется при переходе на отбор фрагментов

Что это даёт бизнесу

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

Механику сжатия истории разбирает компакция контекста, а подбор материалов под вопрос — поиск по своей базе.

Когда без этого можно обойтись

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

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

Отбор фрагментов окупается там, где один и тот же процесс повторяется десятки раз в день на растущем объёме документов.

Что важно проверить

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

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

Третье: у процесса должен быть записанный потолок объёма — сколько страниц уходит в один запрос. Цифра берётся из замера и пересматривается при смене модели. Без неё контекст растёт сам, и падение качества замечают по жалобам.

Частые вопросы

Загнивание контекста простыми словами — это что?

Это ситуация, когда модель получает всё больше текста и всё хуже находит в нём нужное. Формально лимит не превышен, ошибок системы нет, ответы выглядят складно. Доля верных ответов при этом снижается по мере роста объёма. Проверяется одним способом: замером на своей выборке при коротком и при длинном контексте.

Чем это отличается от переполнения контекстного окна

Переполнение видно сразу: поставщик возвращает ошибку или обрезает текст, и это чинится техникой. Загнивание проходит тихо — запрос принят, ответ получен, а деталь из середины пакета в него не попала. Первое ловится логами, второе только сравнением ответов с эталоном.

Как заметить загнивание на своих данных

Берут 100–200 типичных задач с заранее известными правильными ответами. Каждую прогоняют дважды: с полным пакетом документов и с двумя-тремя отобранными фрагментами. Считают долю верных ответов в обоих режимах. Разница меньше нескольких процентных пунктов на такой выборке неотличима от разброса, разница в полтора-два раза говорит сама за себя.

Что помогает удержать качество на длинных диалогах

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

Значит, длинное контекстное окно бесполезно

Оно полезно как запас прочности и как способ не строить поиск на старте. Обещанный объём говорит о вместимости, а качество на этом объёме измеряется отдельно. Рабочий подход: длинное окно держат про запас, а рабочий контекст собирают под задачу.

С какого объёма это начинает мешать

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