TL;DR
Когда вы просите модель работать с длинным текстом и хотите его сократить, важно не сколько текста вы убрали, а что именно вы убрали. Исследование показало: если резать текст механически — просто выкидывать середину — модель теряет качество ответов катастрофически. Но если убирать только то, что реально не нужно для ответа, а важные факты оставлять — качество не падает, а иногда даже растёт.
Главная боль: все привыкли думать "чем короче контекст — тем модели проще, меньше шума, меньше путаницы". Но проверка показала обратное — падение точности при сокращении текста происходит не потому что контекст короче, а потому что вместе с шумом обрезается сам ответ. В одном из тестов при удалении 75% текста нужный факт выживал всего в 1% случаев — модель не "путалась в длинном контексте", ей просто нечем было отвечать.
Метод простой: сначала найди, что в тексте критически важно для ответа на конкретный вопрос, потом убирай всё остальное — не глядя на позицию в тексте. Это переворачивает вывод "короткий контекст лучше" — короткий контекст лучше только если сигнал сохранён, а не потому что он короткий.
Схема метода
ШАГ 1: Определить, какие фрагменты текста критически нужны для ответа на вопрос → список ключевых фрагментов
ШАГ 2: Удалить всё остальное, оставив ключевые фрагменты + минимальную связку между ними → сокращённый текст
ШАГ 3 (проверка): Сверить, что сокращённый текст всё ещё содержит ответ → да/нет
Все три шага можно сделать в одном запросе к модели — просто попросить её сначала выделить важное, потом сократить.
Пример применения
Задача: Вам нужно закинуть в чат длинную переписку в WhatsApp с клиентом (на 40 страниц) и спросить модель: "На каком этапе клиент согласился на цену и какую сумму назвал?" Лимит контекста или желание сэкономить токены заставляет вас сократить текст.
Промпт:
Вот переписка с клиентом (40 страниц). Мне нужен ответ на вопрос:
"На каком этапе клиент согласился на цену и какую сумму назвал?"
Сократи переписку до 25% от объёма, но сначала найди все сообщения,
где обсуждается цена, согласие или суммы — и сохрани их полностью.
Остальное можешь сжать или удалить.
Не удаляй просто середину переписки — удаляй то, что не относится
к вопросу про цену.
[вставить переписку]
Результат: Модель сначала мысленно (или явно, если попросить показать) выделит сообщения про цену и согласие, затем выдаст короткую версию переписки, где эти сообщения сохранены полностью, а обсуждение погоды, логистики и прочего — сжато или убрано. В отличие от механического "оставь начало и конец", вы получите текст, где нужный ответ гарантированно на месте.
Почему это работает
Модель не "теряет мысль" от длины сама по себе — она физически не может ответить на вопрос, если факт, который нужен для ответа, вырезан из текста. Это не эффект "context window", это эффект "вы удалили ответ".
Сильная сторона LLM — она неплохо определяет релевантность текста к вопросу, если попросить её явно. Она может сказать: "вот эти 5 абзацев касаются цены, остальные 35 — нет".
Метод использует эту способность как фильтр перед сокращением, а не полагается на позицию текста (начало/середина/конец). Раньше "правило" было "убирай середину, потому что модели там читают хуже" (эффект lost-in-the-middle) — но это не значит, что середина бесполезна, просто модели там сложнее выцепить смысл. Убрать её — не решение, а потеря информации.
Рычаг управления: процент сокращения (100/75/50/25%) — чем агрессивнее сокращаете, тем важнее точно определить сигнал заранее. На небольших сокращениях (75-90%) ошибка в выборе "что важно" почти не заметна, на сильных (25%) — критична.
Шаблон промпта
Вот текст: {текст}
Мне нужно сократить его до {процент}% от объёма, но сохранить
всю информацию, нужную для ответа на вопрос: {вопрос_или_задача}
Сделай это в два шага:
1. Выдели фрагменты текста, которые критически важны для ответа
на этот вопрос — процитируй их.
2. Составь сокращённую версию текста: оставь эти фрагменты
полностью, остальное сожми или убери. Не режь текст механически
по позиции (не "выбрось середину") — режь по важности содержания.
Выведи финальную сокращённую версию.
Что подставлять: {текст} — ваш длинный документ, {процент} — насколько сократить (например, до 30%), {вопрос_или_задача} — что вы хотите узнать или сделать с этим текстом дальше.
🚀 Быстрый старт — вставь в чат:
Вот шаблон сокращения длинного текста с сохранением сигнала.
Адаптируй под мою задачу: [твоя задача].
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какой у вас текст, какой процент сокращения нужен и какой вопрос вы хотите задать к тексту после сокращения — потому что без этого невозможно понять, что считать "сигналом", а что "шумом".
Ограничения
⚠️ Не работает для задач подсчёта и агрегации. Если вам нужно посчитать, сколько раз что-то упомянуто, или собрать статистику по всему документу — тут нет "лишнего", каждый кусок текста важен. Сокращение любым способом искажает результат.
⚠️ Требует правильного определения "что важно". Если вы (или модель) ошибётесь и не заметите важный фрагмент — потеряете информацию так же, как при случайном обрезании. Метод не спасает от ошибки в понимании задачи.
⚠️ На топовых моделях эффект слабее. Самые мощные модели и так неплохо держат полный длинный контекст без потерь — выигрыш от аккуратного сокращения для них почти нулевой. Метод даёт максимальный эффект на более простых/дешёвых моделях.
Как исследовали
Исследователи взяли два теста на длинный контекст: один — вопросы по фактам, зашитым в длинный рассказ, другой — поиск пути в графе, описанном текстом. Каждый пример прогнали через четыре модели (три версии Claude и GPT) при разной степени сокращения — от полного текста до четверти — двумя способами: механически обрезая середину, и "умно", убирая только то, что не относится к вопросу.
Результат был резким: при механической обрезке все модели теряли точность — иногда падение доходило до 60 процентных пунктов. При умной обрезке те же модели на тех же примерах либо сохраняли качество, либо даже улучшали результат (потому что убирался мешающий шум). Разницу проверили строгой статистикой на одних и тех же примерах, чтобы исключить случайность — вывод держится железно.
Самое неожиданное: у двух моделей (Claude Haiku и Sonnet) сокращённый до 25% текст дал результат лучше, чем полный текст — то есть шум реально мешал, и его удаление помогло. Вывод для практики: миф "чем короче — тем хуже, если не выбросить нужное" неверен наполовину — короче не хуже и не лучше сам по себе, всё зависит только от того, что вы выбросили.
