Contexto largo

Gemini incluye de serie una ventana de contexto de 1 millón de tokens. Históricamente, los modelos de lenguaje extensos (LLMs) estaban muy limitados por la cantidad de texto (o tokens) que se podían enviar al modelo a la vez. La ventana de contexto larga de Gemini, con una recuperación casi perfecta (más del 99%), abre las puertas a muchos casos prácticos y paradigmas de desarrollo nuevos.

El código que ya usas en casos como la generación de contenido o las entradas multimodales funcionará sin necesidad de configuración con el contexto largo.

A lo largo de esta guía, se explican brevemente los conceptos básicos de la ventana de contexto, cómo deben plantear los desarrolladores el contexto largo, varios casos prácticos reales del contexto largo y formas de optimizar su uso.

¿Qué es una ventana de contexto?

La forma básica de usar los modelos de Gemini es enviando información (contexto) al modelo, que posteriormente generará una respuesta. Una analogía de la ventana de contexto es la memoria a corto plazo. La cantidad de información que se puede almacenar en la memoria a corto plazo de una persona es limitada, y lo mismo ocurre con los modelos generativos.

Puedes consultar más información sobre cómo funcionan los modelos en nuestro guía de modelos generativos.

Empezar a usar el contexto largo

La mayoría de los modelos generativos creados en los últimos años solo podían procesar 8000 tokens a la vez. Los modelos más recientes han ido más allá y aceptan 32.000 o 128.000 tokens. Gemini es el primer modelo capaz de aceptar 1 millón de tokens y, ahora, 2 millones de tokens con Gemini 1.5 Pro.

En la práctica, 1 millón de tokens tendría este aspecto:

  • 50.000 líneas de código (con el estándar de 80 caracteres por línea)
  • Todos los mensajes de texto que has enviado en los últimos 5 años
  • 8 novelas en inglés de longitud media
  • Transcripciones de más de 200 episodios de pódcasts de duración media

Aunque los modelos pueden recibir cada vez más contexto, gran parte de la sabiduría convencional sobre el uso de modelos de lenguaje extensos asume esta limitación inherente del modelo, que, a partir del 2024, ya no es así.

Algunas estrategias habituales para gestionar la limitación de las ventanas de contexto pequeñas son las siguientes:

  • Eliminar arbitrariamente mensajes o texto antiguos de la ventana de contexto a medida que se recibe texto nuevo
  • Resumir el contenido anterior y sustituirlo por el resumen cuando la ventana de contexto esté casi llena
  • Usar RAG con la búsqueda semántica para mover datos de la ventana de contexto a una base de datos de vectores
  • Usar filtros deterministas o generativos para eliminar texto o caracteres de las peticiones y ahorrar tokens

Aunque muchos de estos métodos siguen siendo relevantes en determinados casos, ahora lo más habitual es colocar todos los tokens en la ventana de contexto. Como los modelos de Gemini se han diseñado específicamente con una ventana de contexto larga, son mucho más capaces de aprender en contexto. Por ejemplo, con solo materiales didácticos (una gramática de referencia de 500 páginas, un diccionario y aproximadamente 400 frases paralelas adicionales) proporcionados en contexto, Gemini 1.5 Pro y Gemini 1.5 Flash pueden aprender a traducir del inglés al kalamang, una lengua papúa con menos de 200 hablantes y, por lo tanto, casi sin presencia online, con una calidad similar a la de una persona que haya aprendido con los mismos materiales.

Este ejemplo muestra cómo puedes empezar a pensar en lo que se puede hacer con el contexto largo y las funciones de aprendizaje contextual de Gemini.

Casos prácticos de contexto largo

Aunque el caso práctico estándar de la mayoría de los modelos generativos sigue siendo la entrada de texto, la familia de modelos Gemini permite un nuevo paradigma de casos prácticos multimodales. Estos modelos pueden entender de forma nativa texto, vídeo, audio e imágenes. Se acompañan de la API de Vertex AI para Gemini, que admite tipos de archivo multimodales para mayor comodidad.

Texto largo

El texto ha demostrado ser la capa de inteligencia que sustenta gran parte del impulso de los LLMs. Como hemos mencionado anteriormente, gran parte de las limitaciones prácticas de los LLMs se debían a que no tenían una ventana de contexto lo suficientemente grande para realizar determinadas tareas. Esto ha llevado a la rápida adopción de la generación aumentada por recuperación (RAG) y otras técnicas que proporcionan dinámicamente al modelo información contextual pertinente. Ahora, con ventanas de contexto cada vez más grandes (actualmente, hasta 2 millones en Gemini 1.5 Pro), se están desarrollando nuevas técnicas que permiten descubrir nuevos casos prácticos.

Estos son algunos casos prácticos emergentes y estándar del contexto largo basado en texto:

  • Resumir grandes corpus de texto
    • Las opciones de resumen anteriores con modelos de contexto más pequeños requerían una ventana deslizante u otra técnica para mantener el estado de las secciones anteriores a medida que se pasaban nuevos tokens al modelo.
  • Preguntas y respuestas
    • Antes, esto solo era posible con RAG, ya que la cantidad de contexto era limitada y la capacidad de recordar datos de los modelos era baja.
  • Flujos de trabajo autónomos
    • El texto es la base de cómo los agentes mantienen el estado de lo que han hecho y lo que tienen que hacer. No tener suficiente información sobre el mundo y el objetivo del agente limita la fiabilidad de los agentes.

El aprendizaje en contexto con muchos ejemplos es una de las funciones más exclusivas que ofrecen los modelos de contexto largo. Las investigaciones han demostrado que, si se toma el paradigma habitual de "un intento" o "varios intentos", en el que se le presentan al modelo uno o varios ejemplos de una tarea, y se amplía a cientos, miles o incluso cientos de miles de ejemplos, se pueden obtener nuevas funciones del modelo. También se ha demostrado que este enfoque de muchos ejemplos funciona de forma similar a los modelos que se han ajustado para una tarea específica. En los casos prácticos en los que el rendimiento de un modelo de Gemini aún no sea suficiente para una implementación en producción, puedes probar el enfoque de muchos ejemplos. Como verás más adelante en la sección sobre optimización del contexto largo, el almacenamiento en caché del contexto hace que este tipo de carga de trabajo con un gran número de tokens de entrada sea mucho más viable económicamente e incluso que tenga una latencia menor en algunos casos.

Vídeos largos

La utilidad del contenido de vídeo se ha visto limitada durante mucho tiempo por la falta de accesibilidad del propio medio. Era difícil leer el contenido por encima, las transcripciones a menudo no captaban los matices de un vídeo y la mayoría de las herramientas no procesaban imágenes, texto y audio al mismo tiempo. Con Gemini, las funciones de texto de contexto largo se traducen en la capacidad de razonar y responder a preguntas sobre entradas multimodales con un rendimiento constante.

Estos son algunos casos prácticos emergentes y estándar del contexto largo de vídeo:

  • Preguntas y respuestas sobre vídeos
  • Memoria de vídeo, como se muestra en Project Astra de Google
  • Subtitulado de vídeos
  • Sistemas de recomendación de vídeos, enriqueciendo los metadatos con una nueva comprensión multimodal
  • Personalización de vídeos: se analiza un corpus de datos y los metadatos de vídeo asociados y, a continuación, se eliminan las partes de los vídeos que no son relevantes para el usuario.
  • Moderación de contenido de vídeo
  • Procesamiento de vídeo en tiempo real

Cuando trabajes con vídeos, es importante que tengas en cuenta cómo se procesan los vídeos para convertirlos en tokens, ya que esto afecta a la facturación y a los límites de uso. Puedes consultar más información sobre las peticiones con archivos de vídeo en la guía de peticiones.

Audio de formato largo

Los modelos de Gemini fueron los primeros modelos de lenguaje extenso multimodales nativos que podían entender audio. Tradicionalmente, el flujo de trabajo habitual de los desarrolladores consistía en combinar varios modelos específicos de un dominio, como un modelo de transcripción de voz y un modelo de texto a texto, para procesar audio. Esto provocó una latencia adicional necesaria para realizar varias solicitudes de ida y vuelta, así como una disminución del rendimiento que suele atribuirse a las arquitecturas desconectadas de la configuración de varios modelos.

En las evaluaciones estándar de audio en un pajar, Gemini 1.5 Pro puede encontrar el audio oculto en el 100% de las pruebas y Gemini 1.5 Flash, en el 98,7% de las pruebas. Gemini 1.5 Flash acepta hasta 9,5 horas de audio en una sola solicitud, y Gemini 1.5 Pro puede aceptar hasta 19 horas de audio con la ventana de contexto de 2 millones de tokens. Además, en un conjunto de prueba de clips de audio de 15 minutos, Gemini 1.5 Pro consigue una tasa de error de palabras (WER) de aproximadamente el 5,5%, mucho más baja que la de los modelos especializados de voz a texto, sin la complejidad añadida de la segmentación y el preprocesamiento de entradas adicionales.

Estos son algunos casos prácticos emergentes y estándar del contexto de audio:

  • Transcripción y traducción en tiempo real
  • Preguntas y respuestas sobre pódcasts o vídeos
  • Transcripción y resumen de reuniones
  • Asistentes de voz

Puedes consultar más información sobre cómo usar archivos de audio en las peticiones en la guía de peticiones.

Optimizaciones de contexto largo

La optimización principal al trabajar con un contexto largo y los modelos de Gemini es usar el almacenamiento en caché del contexto. Además de la imposibilidad de procesar muchos tokens en una sola solicitud, la otra limitación principal era el coste. Si tienes una aplicación de chat con tus datos en la que un usuario sube 10 PDFs, un vídeo y algunos documentos de trabajo, históricamente tendrías que trabajar con una herramienta o un marco de generación aumentada por recuperación (RAG) más complejos para procesar estas solicitudes y pagar una cantidad significativa por los tokens que se mueven a la ventana de contexto. Ahora puedes almacenar en caché los archivos que suba el usuario y pagar por almacenarlos por horas. El coste de entrada/salida por solicitud es inferior al coste de entrada/salida estándar, por lo que, si el usuario chatea con sus datos lo suficiente, se convertirá en un ahorro de costes enorme para ti como desarrollador.

Limitaciones de contexto largas

En varias secciones de esta guía, hemos hablado de cómo los modelos de Gemini consiguen un alto rendimiento en varias evaluaciones de recuperación de información específica. Estas pruebas tienen en cuenta la configuración más básica, en la que solo buscas una aguja. En los casos en los que tengas varias "agujas" o información específica que estés buscando, el modelo no funcionará con la misma precisión. El rendimiento puede variar considerablemente en función del contexto. Es importante tener en cuenta este aspecto, ya que existe un equilibrio inherente entre obtener la información correcta y el coste. Puedes obtener aproximadamente un 99% en una sola consulta, pero tienes que pagar el coste de los tokens de entrada cada vez que envíes esa consulta. Por lo tanto, para recuperar 100 elementos de información, si necesitas un rendimiento del 99 %, probablemente tengas que enviar 100 solicitudes. Este es un buen ejemplo de cómo el almacenamiento en caché del contexto puede reducir significativamente el coste asociado al uso de modelos de Gemini y, al mismo tiempo, mantener un rendimiento alto.

Siguientes pasos