Перейти к содержанию
Innovialabs

Контекстное окно LLM: лимиты, длинные документы и обходные пути

Основы3 мин

Коротко

Контекстное окно — это объём текста в токенах, который модель видит за один запрос; всё, что не поместилось, для неё не существует, а длинные документы обрабатывают через сжатие, разбиение на части или RAG.

Что такое контекстное окно

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

  • системная инструкция;
  • история диалога;
  • вложенные документы и результаты инструментов;
  • ответ, который модель генерирует.

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

Что происходит при переполнении

Зависит от того, как устроено приложение:

  • API возвращает ошибку, если запрос длиннее окна;
  • приложение обрезает старые сообщения, и модель «забывает» начало разговора;
  • ответ обрывается, если на генерацию не осталось места.

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

Эффект lost in the middle

Даже если документ поместился, это не значит, что модель одинаково внимательна ко всем его частям. Исследования показывают эффект lost in the middle: информацию в начале и в конце длинного контекста модели используют надёжнее, чем информацию в середине.

Что из этого следует:

  • кладите ключевую инструкцию в начало или повторяйте её в конце;
  • вопрос пользователя ставьте после документа, а не перед ним;
  • не добавляйте в контекст лишнее «на всякий случай» — шум мешает найти нужное.

Современные модели справляются с длинным контекстом лучше прежних, но проверять качество на своих данных всё равно нужно.

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

ПодходКак работаетКогда подходит
Просто большое окноВесь документ в одном запросеРазовый анализ одного документа
Разбиение (chunking)Документ делится на части, каждая обрабатывается отдельноПеревод, извлечение данных, проверка по частям
Map-reduce суммаризацияСначала резюме частей, потом резюме резюмеКраткое изложение очень длинных текстов
Скользящее резюмеСтарая часть диалога заменяется кратким пересказомДлинные чаты, ассистенты поддержки
RAGИз базы извлекаются только релевантные фрагментыВопросы по большой базе знаний

Как выбрать подход

  1. Один документ, разовая задача — если помещается в окно, отправляйте целиком.
  2. Много документов или база знаний — нужен RAG: поиск подбирает несколько подходящих фрагментов, и модель отвечает по ним.
  3. Длинный диалог — храните последние сообщения дословно, а старые сжимайте в резюме.
  4. Задача по частям (перевод, разметка) — разбейте на куски с небольшим перекрытием, чтобы не терялся смысл на границах.

Типичные ошибки

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

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

Нет, если приложение специально не передаёт эту информацию. Функции «памяти» в чат-сервисах работают тем же способом: сохранённые факты подставляются в контекст нового запроса.

Поможем с этим

Если хотите не разбираться самим, а получить результат — этим мы занимаемся каждый день.

Обсудить проект

Читайте также

Есть идея или задача? Расскажите нам

Ответим в течение рабочего дня и предложим решение. Консультация бесплатная.