Длинный контекст

Многие модели Gemini имеют большие контекстные окна, охватывающие 1 миллион и более токенов. Исторически большие языковые модели (LLM) были существенно ограничены объёмом текста (или токенов), который можно было передать модели за один раз. Длинное контекстное окно Gemini открывает множество новых вариантов использования и парадигм разработки.

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

В этом документе представлен обзор того, чего можно достичь, используя модели с контекстными окнами размером 1 млн и более токенов. На странице представлен краткий обзор контекстного окна, а также рассматриваются подходы разработчиков к длинному контексту, различные реальные примеры использования длинного контекста и способы оптимизации его использования.

Размеры контекстных окон конкретных моделей см. на странице «Модели» .

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

Основной способ использования моделей Gemini — передача информации (контекста) модели, которая затем генерирует ответ. Аналогом контекстного окна является кратковременная память. Объём информации, который может храниться в кратковременной памяти человека, ограничен, и то же самое справедливо для генеративных моделей.

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

Начало работы с длинным контекстом

Ранние версии генеративных моделей могли обрабатывать только 8000 токенов одновременно. Новые модели пошли ещё дальше, принимая 32 000 или даже 128 000 токенов. Gemini — первая модель, способная принимать 1 миллион токенов.

На практике 1 миллион токенов будет выглядеть так:

  • 50 000 строк кода (при стандартных 80 символах на строку)
  • Все текстовые сообщения, которые вы отправили за последние 5 лет.
  • 8 английских романов средней длины
  • Транскрипты более 200 эпизодов подкаста средней продолжительности

Более ограниченные контекстные окна, распространенные во многих других моделях, часто требуют таких стратегий, как произвольное отбрасывание старых сообщений, суммирование контента, использование RAG с векторными базами данных или фильтрация запросов для сохранения токенов.

Хотя эти методы остаются ценными в конкретных сценариях, обширное контекстное окно Gemini предполагает более прямой подход: предоставление всей необходимой информации заранее. Поскольку модели Gemini были специально разработаны с широкими контекстными возможностями, они демонстрируют эффективное контекстное обучение. Например, используя только учебные материалы (справочник по грамматике на 500 страниц, словарь и ≈400 параллельных предложений), Gemini научился переводить с английского на каламанг — папуасский язык, на котором говорят менее 200 человек, — с качеством, сопоставимым с качеством, получаемым человеком, использующим те же материалы. Это иллюстрирует смену парадигмы, обусловленную обширным контекстом Gemini, открывающим новые возможности благодаря эффективному контекстному обучению.

Длинные контекстные варианты использования

Хотя стандартным вариантом использования большинства генеративных моделей по-прежнему остаётся ввод текста, семейство моделей Gemini открывает новую парадигму мультимодальных вариантов использования. Эти модели изначально распознают текст, видео, аудио и изображения. Они сопровождаются API Gemini, поддерживающим мультимодальные типы файлов для удобства.

Длинный текст

Текст оказался тем уровнем интеллекта, который во многом лежит в основе развития LLM. Как упоминалось ранее, практическое ограничение LLM было обусловлено недостаточно большим контекстным окном для выполнения определённых задач. Это привело к быстрому внедрению методов дополненной генерации (RAG) и других методов, динамически предоставляющих модели релевантную контекстную информацию. Сегодня, с увеличением контекстных окон, появляются новые методы, открывающие новые возможности использования.

Некоторые новые и стандартные варианты использования длинного текстового контекста включают:

  • Резюмирование больших корпусов текстов
    • Предыдущие варианты реферирования с меньшими контекстными моделями потребовали бы скользящего окна или другой техники для сохранения состояния предыдущих разделов по мере передачи новых токенов в модель.
  • Вопросы и ответы
    • Исторически это было возможно только с RAG, учитывая ограниченный объем контекста и низкую фактическую полноту моделей.
  • Агентские рабочие процессы
    • Текст является основой того, как агенты сохраняют информацию о том, что они сделали и что им еще предстоит сделать; недостаток информации о мире и цели агента ограничивает надежность агентов.

Многократное контекстное обучение — одна из самых уникальных возможностей, открываемых моделями с длинным контекстом. Исследования показали, что использование распространённой парадигмы «однократного» или «многократного» обучения, когда модели предъявляется один или несколько примеров задачи, и масштабирование её до сотен, тысяч или даже сотен тысяч примеров может привести к появлению новых возможностей модели. Этот многократный подход также демонстрирует эффективность, схожую с моделями, настроенными под конкретную задачу. В случаях, когда производительность модели Gemini ещё недостаточна для внедрения в эксплуатацию, можно попробовать многократный подход. Как вы, возможно, узнаете далее в разделе, посвящённом оптимизации длинного контекста, кэширование контекста делает такую нагрузку с большим количеством входных токенов гораздо более экономически выгодной и в некоторых случаях даже снижает задержку.

Длинное видео

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

Некоторые новые и стандартные варианты использования длинного контекста видео включают в себя:

  • Видеовопросы и ответы
  • Видеопамять, как показано на примере проекта Google Astra
  • Субтитры к видео
  • Системы видеорекомендаций, обогащающие существующие метаданные новым мультимодальным пониманием
  • Настройка видео путем анализа корпуса данных и связанных с ними метаданных видео с последующим удалением частей видео, которые не имеют значения для зрителя.
  • Модерация видеоконтента
  • Обработка видео в реальном времени

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

Длинная аудиозапись

Модели Gemini стали первыми изначально многомодальными моделями для больших языков, способными понимать аудио. Исторически типичный рабочий процесс разработчика включал в себя объединение нескольких предметно-ориентированных моделей, таких как модель преобразования речи в текст и модель преобразования текста в текст, для обработки аудио. Это приводило к дополнительной задержке, связанной с выполнением множества запросов на передачу данных, и снижению производительности, обычно обусловленному разрозненными архитектурами многомодельной конфигурации.

Некоторые новые и стандартные варианты использования аудиоконтекста включают в себя:

  • Транскрипция и перевод в реальном времени
  • Подкаст/видеовопросы и ответы
  • Транскрипция и резюмирование встреч
  • Голосовые помощники

Дополнительную информацию о подсказках с помощью аудиофайлов можно найти в Руководстве по подсказкам .

Оптимизация длинного контекста

Основная оптимизация при работе с длинным контекстом и моделями Gemini заключается в использовании кэширования контекста . Помимо невозможности обработки большого количества токенов за один запрос, другим важным ограничением была стоимость. Если у вас есть приложение для «чата с вашими данными», в которое пользователь загружает 10 PDF-файлов, видео и несколько рабочих документов, вам, как правило, приходилось использовать более сложный инструмент/фреймворк для поиска дополненной генерации (RAG) для обработки этих запросов и платить значительную сумму за токены, перемещаемые в контекстное окно. Теперь вы можете кэшировать загружаемые пользователем файлы и оплачивать их хранение почасово. Стоимость ввода/вывода на запрос, например, в Gemini Flash, примерно в 4 раза ниже стандартной стоимости ввода/вывода, поэтому, если пользователь достаточно часто общается со своими данными, это становится для вас, как разработчика, существенной экономией средств.

Ограничения длинного контекста

В различных разделах этого руководства мы рассказывали о том, как модели Gemini достигают высокой производительности при различных вариантах поиска информации по принципу «иголка в стоге сена». Эти тесты рассматривают самую простую конфигурацию, когда у вас есть одна иголка, которую вы ищете. В случаях, когда у вас может быть несколько «иголок» или определённых фрагментов информации, модель работает с разной точностью. Производительность может сильно варьироваться в зависимости от контекста. Это важно учитывать, поскольку существует неизбежный компромисс между получением нужной информации и стоимостью. Вы можете получить около 99% от общего запроса, но вам придётся платить стоимость входного токена за каждую отправку этого запроса. Таким образом, если вам нужна производительность 99%, для получения 100 фрагментов информации вам, вероятно, потребуется отправить 100 запросов. Это хороший пример того, как кэширование контекста может значительно снизить стоимость, связанную с использованием моделей Gemini, сохраняя при этом высокую производительность.

Часто задаваемые вопросы

Где лучше всего поместить мой запрос в контекстном окне?

В большинстве случаев, особенно если общий контекст длинный, производительность модели будет выше, если вы поместите свой запрос/вопрос в конце подсказки (после всего остального контекста).

Теряю ли я производительность модели при добавлении дополнительных токенов в запрос?

Как правило, если вам не нужно передавать токены модели, лучше этого не делать. Однако, если у вас есть большой массив токенов с какой-либо информацией и вы хотите задать вопросы по этой информации, модель вполне способна извлечь эту информацию (во многих случаях с точностью до 99%).

Как можно снизить затраты с помощью длинных контекстных запросов?

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

Влияет ли длина контекста на задержку модели?

Для любого запроса существует фиксированная величина задержки, независимо от его размера, но, как правило, более длинные запросы будут иметь большую задержку (время до первого токена).