Контекстное окно на практике: работа с длинными документами
Что реально влезает в контекст модели, почему «большое окно» не значит «клади всё», и стратегии для длинных документов: чанкинг, суммаризация, RAG.
Контекстное окно — это максимум токенов, которые модель удерживает за один запрос: и ваш вход, и её ответ. Современные окна велики, но «большое окно» не означает «клади в него всё подряд»: это бьёт по цене, скорости и качеству. Разберём, что действительно стоит помещать в контекст и как работать с документами, которые в него не влезают. Определение термина — в глоссарии.
Что занимает контекст
В окно должно уместиться всё сразу — а значит, каждая часть отъедает место у остальных:
- Системный промпт — инструкции роли и формата.
- История диалога — предыдущие сообщения, если ведёте разговор.
- Вложенные данные — документы, фрагменты кода, примеры few-shot.
- Текущий запрос пользователя.
- Ответ модели — на него тоже нужно оставить место: вход плюс
max_tokensне должны превышать окно.
Почему «больше контекста» не всегда лучше
- Цена растёт линейно: чем больше входных токенов, тем дороже каждый запрос.
- Скорость падает: модели нужно «прочитать» весь вход перед ответом.
- Качество может снижаться: в очень длинном контексте модель хуже находит нужную деталь среди мусора — важное лучше держать ближе к запросу и не топить его в нерелевантном.
Стратегии для длинных документов
| Стратегия | Как работает | Когда выбирать |
|---|---|---|
| Чанкинг | Документ режется на фрагменты, каждый обрабатывается отдельным запросом, результаты сводятся | Обработка всего документа целиком: перевод, разметка, извлечение по всему тексту |
| Суммаризация | Длинный текст сжимается в краткое резюме, дальше работаем с резюме | Нужна суть, а не каждая деталь: обзор, дайджест, длинная история диалога |
| RAG | В контекст кладутся только релевантные запросу фрагменты, найденные поиском | Ответы по большой базе знаний, где нужен лишь малый её кусок под конкретный вопрос |
Чаще всего эти приёмы комбинируют. Например, для длинной переписки старые сообщения суммаризируют в компактное резюме, а свежие оставляют дословно — так диалог помещается в окно, не теряя контекста. Механику RAG подробно разбирает отдельный гайд основы RAG.
Как уместить документ в контекст
- Оцените размер документа в токенах — для русского текста берите запас, кириллица даёт больше токенов.
- Сравните с окном выбранной модели за вычетом места под системный промпт и ответ.
- Влезает целиком и это оправдано — отправляйте как есть; не влезает или дорого — выбирайте стратегию.
- Нужна обработка всего текста — чанкинг; нужна суть — суммаризация; нужен ответ по большой базе — RAG.
- Если задача упирается в объём, рассмотрите модель с бо́льшим окном — сравнить можно в каталоге.
Частые вопросы
Если окно большое, можно просто класть весь документ?
Технически да, пока влезает, но не всегда разумно: вы платите за все входные токены в каждом запросе, ответ идёт медленнее, а нужная деталь может потеряться в объёме. Часто дешевле и точнее подать только релевантный фрагмент.
Чем чанкинг отличается от RAG?
Чанкинг обрабатывает все фрагменты документа по очереди — когда нужен проход по всему тексту. RAG сначала находит поиском только релевантные запросу куски и подаёт лишь их — когда из большой базы нужен небольшой её фрагмент под конкретный вопрос.
Как понять, что документ не влезает в окно?
Прикиньте его размер в токенах и сравните с окном модели за вычетом системного промпта и max_tokens под ответ. Если сумма превышает окно, API вернёт ошибку — до этого лучше не доводить и заранее выбрать стратегию.
Модели с разным размером окна — в одном каталоге
Открыть каталог