Основы

Контекстное окно на практике: работа с длинными документами

Что реально влезает в контекст модели, почему «большое окно» не значит «клади всё», и стратегии для длинных документов: чанкинг, суммаризация, RAG.

3 минуты чтения

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

Что занимает контекст

В окно должно уместиться всё сразу — а значит, каждая часть отъедает место у остальных:

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

Почему «больше контекста» не всегда лучше

  • Цена растёт линейно: чем больше входных токенов, тем дороже каждый запрос.
  • Скорость падает: модели нужно «прочитать» весь вход перед ответом.
  • Качество может снижаться: в очень длинном контексте модель хуже находит нужную деталь среди мусора — важное лучше держать ближе к запросу и не топить его в нерелевантном.

Стратегии для длинных документов

СтратегияКак работаетКогда выбирать
ЧанкингДокумент режется на фрагменты, каждый обрабатывается отдельным запросом, результаты сводятсяОбработка всего документа целиком: перевод, разметка, извлечение по всему тексту
СуммаризацияДлинный текст сжимается в краткое резюме, дальше работаем с резюмеНужна суть, а не каждая деталь: обзор, дайджест, длинная история диалога
RAGВ контекст кладутся только релевантные запросу фрагменты, найденные поискомОтветы по большой базе знаний, где нужен лишь малый её кусок под конкретный вопрос

Чаще всего эти приёмы комбинируют. Например, для длинной переписки старые сообщения суммаризируют в компактное резюме, а свежие оставляют дословно — так диалог помещается в окно, не теряя контекста. Механику RAG подробно разбирает отдельный гайд основы RAG.

Как уместить документ в контекст

  1. Оцените размер документа в токенах — для русского текста берите запас, кириллица даёт больше токенов.
  2. Сравните с окном выбранной модели за вычетом места под системный промпт и ответ.
  3. Влезает целиком и это оправдано — отправляйте как есть; не влезает или дорого — выбирайте стратегию.
  4. Нужна обработка всего текста — чанкинг; нужна суть — суммаризация; нужен ответ по большой базе — RAG.
  5. Если задача упирается в объём, рассмотрите модель с бо́льшим окном — сравнить можно в каталоге.

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

Если окно большое, можно просто класть весь документ?

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

Чем чанкинг отличается от RAG?

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

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

Прикиньте его размер в токенах и сравните с окном модели за вычетом системного промпта и max_tokens под ответ. Если сумма превышает окно, API вернёт ошибку — до этого лучше не доводить и заранее выбрать стратегию.

Модели с разным размером окна — в одном каталоге

Открыть каталог