Skip to content
BotServBotServ
Longitud de contextoTokenKV-CacheVentana de contextoLLMIA local

Longitud de Contexto

Comprende la longitud de contexto en modelos de IA: tokens, ventana de contexto, KV-Cache y su impacto en IA local.

S

schutzgeist

15 min read
Longitud de Contexto

Longitud de contexto

Qué cubre este artículo sobre longitud de contexto

  • Qué son los tokens y las ventanas de contexto, y cómo se relacionan
  • Cuánto texto cabe realmente en una ventana de contexto, con números concretos
  • Por qué el KV-Cache consume tanta memoria con contextos largos
  • Qué longitudes de contexto ofrecen los modelos locales comunes
  • Qué ocurre cuando tu entrada supera la ventana de contexto

Introducción: explicación clara de la longitud de contexto

Los modelos de lenguaje no procesan el texto como palabras completas, sino como tokens. La cantidad de tokens que un modelo puede procesar de una vez se llama longitud de contexto o ventana de contexto. Este valor determina cuánta información puedes proporcionar al modelo en una única pasada. Para RAG, documentos largos, archivos de código o conversaciones extensas, es uno de los parámetros más importantes.

Quien ejecuta IA local se encuentra inmediatamente con este límite. Un modelo con 4.000 tokens de contexto no puede leer un contrato largo de una vez. Un modelo con 128.000 tokens lo logra sin problema, pero consume significativamente más memoria. Este artículo explica qué hay detrás, cómo evalúas los valores correctos y qué debes considerar en tu hardware.

¿Por qué necesito entender la longitud de contexto?

Imagina que quieres resumir un contrato de 20 páginas. Cargas el documento en tu modelo local, escribes el prompt y presionas enter. En lugar de un resumen, recibes un mensaje de error, una respuesta incompleta, o el modelo comienza a mitad del texto e ignora el principio por completo.

¿Qué pasó? El contrato ocupa quizás 8.000 tokens. Pero tu modelo tiene una ventana de contexto de solo 4.000 tokens. Simplemente no puede procesar todo el texto de una vez. El modelo toma los primeros 4.000 tokens y corta el resto, o falla con un error. En ambos casos, el resultado es inútil.

Este escenario no es teórico. Sucede constantemente cuando trabajas con documentos reales. Sin entender la longitud de contexto, te encuentras desconcertado ante por qué el modelo parece ignorar arbitrariamente texto o se detiene abruptamente. Con este conocimiento, reconoces el problema al instante y puedes resolverlo, ya sea mediante chunking, resumen o eligiendo un modelo con una ventana de contexto más grande.

Longitud de contexto en pocas palabras

La longitud de contexto es el número máximo de tokens que un modelo puede procesar en una pasada. Piensa en la ventana de contexto como el tamaño de tu escritorio. Solo puedes tener tantos documentos abiertos al mismo tiempo como espacio disponible haya. Todo lo que no cabe en tu escritorio debe dejarse a un lado o resumirse antes de continuar.

Una ventana de contexto más grande significa más espacio en tu escritorio. Puedes proporcionar documentos más largos, archivos de código completos o conversaciones extensas de una sola vez. El problema: cuanto más largo sea el contexto, más memoria necesita el modelo durante la inferencia. Especialmente el KV-Cache crece considerablemente y se convierte rápidamente en un cuello de botella en hardware de consumidor.

Para quién está pensado este conocimiento

Este artículo va dirigido a principiantes que quieren experimentar con IA local y entender por qué algunos modelos procesan textos largos y otros no. Si usas Ollama, LM Studio u herramientas similares y te preguntas por qué tu modelo falla con documentos largos, estás en el lugar correcto. No necesitas conocimientos previos en matemáticas o informática, solo una comprensión básica de cómo funciona el procesamiento de texto con IA.

Términos importantes sobre longitud de contexto

TérminoSignificado
TokenUnidad pequeña de texto que procesa el modelo, generalmente parte de una palabra, una palabra completa o un carácter
Ventana de contextoNúmero máximo de tokens que un modelo puede procesar en una pasada
KV-CacheBúfer para tokens ya procesados, acelera la generación, crece con la longitud de contexto
PromptLa entrada que das al modelo, compuesta por el system prompt y mensajes del usuario
CompletionLa respuesta generada por el modelo
System PromptUna instrucción inicial que controla el comportamiento del modelo
Context WindowTérmino en inglés para ventana de contexto, usado frecuentemente en documentación
TokenizerLa herramienta que divide el texto en tokens, específica para cada modelo

¿Qué es un token?

Un token es la unidad más pequeña que procesa un modelo de lenguaje. Un token no es lo mismo que una palabra. A menudo, un token corresponde a parte de una palabra, a veces solo a un carácter único. El tokenizer, un componente específico del modelo, divide tu texto en estas unidades.

Ejemplo de cómo se divide una oración en inglés:

"Hello world, how are you?"

El tokenizer podría crear estos tokens:

["Hel", "lo", " world", ",", " how", " are", " you", "?"]

Cada modelo trae su propio tokenizer. Un token en un modelo Llama no tiene por qué ser idéntico a un token en un modelo Qwen. Esto significa que el mismo texto puede generar diferentes cantidades de tokens en modelos distintos.

Especialmente relevante para alemán e idiomas similares: Los modelos entrenados en inglés suelen tener inglés en sus datos de entrenamiento, por lo que las palabras en inglés se codifican a menudo como tokens únicos. Las palabras alemanas, que aparecen con menor frecuencia en los datos de entrenamiento, se dividen en múltiples tokens.

Una comparación:

IdiomaTextoAproximadamente tokens
Inglés”The quick brown fox jumps over the lazy dog.”ca. 10 tokens
Alemán”Der schnelle braune Fuchs springt über den faulen Hund.”ca. 14 tokens

Para alemán, debes contar aproximadamente 1,3 a 1,5 tokens por palabra. Un texto con 1.000 palabras corresponde así a unos 1.300 a 1.500 tokens. Esto es importante cuando quieres estimar si un documento cabe en una ventana de contexto.

¿Cómo funciona la ventana de contexto?

La ventana de contexto es todo el espacio disponible para entrada y salida. Todo debe caber dentro: el system prompt, todos los mensajes previos del usuario, todas las respuestas del modelo y la nueva completion que se está generando.

La fórmula es simple:

Ventana de contexto = System Prompt + Mensajes del usuario + Respuestas del modelo + nueva Completion

Si tu modelo tiene una ventana de contexto de 8.000 tokens y tu system prompt ya ocupa 500 tokens, quedan 7.500 tokens para el diálogo actual. Si luego proporcionas un documento de 6.000 tokens, el modelo solo tiene 1.500 tokens de espacio para la respuesta. En una conversación larga, el espacio se agota rápidamente.

Esto significa que una ventana de contexto grande es importante no solo para la entrada, sino también para la salida. Si el modelo debe escribir una respuesta larga, necesita tokens libres en la ventana para hacerlo. Si la entrada es demasiado larga, queda poco espacio para la respuesta, y el modelo se detiene a mitad de la oración.

KV-Cache explicado

El KV-Cache es uno de los aspectos más importantes pero frecuentemente malentendidos de la longitud de contexto. KV significa Key y Value, dos tipos de valores intermedios que el modelo calcula y almacena para cada token durante el procesamiento.

¿Por qué existe este búfer? Durante la generación de texto, el modelo calcula los valores de attention sobre todos los tokens anteriores para cada token nuevo. Sin el búfer, tendría que recalcular todos los tokens anteriores para cada token nuevo. Eso sería extremadamente lento. El KV-Cache almacena en su lugar los valores ya calculados para que el modelo pueda reutilizarlos.

El problema: el búfer crece con cada token. Para cada token, el modelo almacena valores en cada capa y en cada head de attention. El tamaño del KV-Cache depende de tres factores:

  • Número de tokens en el contexto
  • Número de capas del modelo
  • Tamaño de los attention heads

Un ejemplo concreto: con un modelo de 32 capas y un contexto de 32.000 tokens, el KV-Cache puede alcanzar varios gigabytes. Con 128.000 tokens, sigue creciendo. Esta es la razón por la que contextos largos en hardware de consumidor a menudo funcionan solo con modelos más pequeños o cuantizados.

La cuantización reduce el tamaño de los pesos del modelo, pero el KV-Cache sigue creciendo con la longitud de la secuencia. Existen enfoques como la cuantización del KV-Cache que comprimen el búfer mismo, pero ese es un tema avanzado. Por ahora, es suficiente saber: cuanto más largo sea el contexto, mayor será el consumo de memoria durante la inferencia.

Longitud de contexto en perspectiva

Los distintos modelos ofrecen ventanas de contexto muy variables. Aquí tienes una visión de los modelos más comunes que funcionan bien en entornos locales:

ModeloVentana de contextoObservación
Llama 3.1 (8B, 70B)128.000 tokensVentana muy amplia, excelente para documentos largos
Llama 3 (8B)8.192 tokensVentana estándar, suficiente para muchas tareas
Qwen 2.5 (7B, 14B, 32B)128.000 tokensVentana amplia, muy capaz en español y alemán
Mistral 7B / v0.332.000 tokensVentana intermedia, buen equilibrio
Mixtral 8x7B32.000 tokensMixture-of-Experts, mayor consumo de memoria
Phi-3 Mini4.096 tokensCompacto y rápido, pero ventana limitada
Gemma 2 (9B, 27B)8.192 tokensVentana sólida para su tamaño

Los números representan la longitud máxima teórica del contexto. En la práctica, la memoria disponible y la velocidad suelen ser los limitantes reales. De poco sirve una ventana de 128K si tu VRAM se llena después de 16.000 tokens.

Qué sucede cuando el input es demasiado largo

Cuando tu entrada supera la ventana de contexto, existen tres reacciones típicas:

1. Truncation (Corte): Muchas herramientas truncan el texto automáticamente. Conservan los primeros tokens y descartan el resto. El modelo solo ve una parte de tu documento, y a menudo ni siquiera te das cuenta. La respuesta se basa entonces en información incompleta.

2. Mensaje de error: Algunas herramientas y modelos se detienen con un error. Es honesto, pero no siempre útil. Tendrás que acortar o dividir el texto manualmente.

3. Chunking automático: Las herramientas avanzadas, como las pipelines de RAG, dividen el texto automáticamente en fragmentos y los procesan secuencialmente. Funciona, pero requiere lógica adicional y puede causar pérdida de información si las relaciones se extienden más allá de los límites de los fragmentos.

Ollama, por ejemplo, frecuentemente falla con un mensaje de error cuando el input es demasiado largo. Otras herramientas como LM Studio cortan silenciosamente. Vale la pena conocer el comportamiento de tu herramienta antes de trabajar con documentos extensos.

Longitud de contexto y RAG

RAG significa Retrieval-Augmented Generation, una técnica en la que el modelo recupera pasajes relevantes de una base de datos antes de generar la respuesta. La longitud del contexto juega un papel central aquí.

En RAG, buscas fragmentos de texto coincidentes en una base de datos vectorial y los pasas junto con tu pregunta al modelo. Cuantos más fragmentos envíes, más contexto necesita el modelo. Una ventana de contexto más amplia permite incluir más y más largos chunks, lo que puede mejorar la calidad de las respuestas.

Pero cuidado: más contexto no siempre es mejor. Los modelos suelen tener dificultades para identificar información relevante en el medio de contextos muy largos, un efecto conocido como “Lost in the Middle”. Además, aumenta el consumo de memoria y el tiempo de respuesta crece.

Para RAG con inteligencia artificial local, la regla es: elige un modelo con una ventana de contexto suficiente, pero no innecesariamente grande. Para la mayoría de aplicaciones RAG bastan 8.000 a 32.000 tokens. Si necesitas más, consulta los artículos sobre RAG local y especialmente Chunking para preparar los textos de forma óptima.

Estrategias para trabajar con contexto limitado

Si tu modelo tiene una ventana pequeña o tu VRAM es escaso, hay varias tácticas:

Chunking: Divide documentos largos en fragmentos más pequeños. Procesa cada uno individualmente y resume los resultados. Es el método estándar en RAG y funciona incluso sin base de datos vectorial. Más detalles en el artículo sobre Chunking.

Resumen previo: Antes de alimentar al modelo con un texto largo, haz que lo resuma en etapas. Toma la primera mitad, resume, toma la segunda mitad, resume, y luego pasa ambos resúmenes juntos al modelo.

Prompting inteligente: Reflexiona sobre qué información necesita realmente el modelo. En lugar de proporcionar un libro completo, pasa solo los capítulos relevantes. Un prompt preciso con la información correcta suele funcionar mejor que una montaña de texto.

Reducir historial de chat: En diálogos largos, los mensajes se acumulan. Elimina mensajes antiguos e irrelevantes o resume el historial hasta ese punto antes de continuar. Esto ahorra contexto y frecuentemente mejora incluso la calidad de las respuestas.

Optimizar el System Prompt: Un System Prompt largo ocupa espacio permanente en la ventana de contexto. Mantenlo lo más conciso posible sin perder instrucciones críticas.

Obstáculos comunes con la longitud de contexto

  • Confundir tokens con palabras: Una palabra no es un token. En español generalmente necesitas 1,3 a 1,5 tokens por palabra. Si calculas con palabras, sobrestimas la capacidad del modelo.
  • Olvidar el System Prompt: El System Prompt ocupa espacio en la ventana de contexto. Si no lo cuentas, te sorprenderá que el modelo se detenga antes de lo esperado.
  • Ignorar el KV-Cache: Una ventana de contexto grande no sirve si la VRAM es insuficiente. El KV-Cache crece con la longitud de la secuencia y puede llenar la memoria disponible antes de alcanzar el límite teórico.
  • Asumir que más contexto siempre es mejor: Contextos largos requieren más tiempo y memoria. Además, los modelos a veces captan peor la información relevante con inputs muy largos. Para muchas tareas bastan 8.000 tokens.
  • No detectar truncamiento silencioso: Algunas herramientas cortan inputs largos sin avisar. El modelo responde como si todo fuera correcto, pero basándose en datos incompletos. Verifica si tu herramienta emite una advertencia.
  • Dejar que el historial de chat crezca sin control: En diálogos largos, el historial llena la ventana de contexto hasta que no queda espacio para respuestas. Es necesario acortar o resumir regularmente.
  • Expectativa incorrecta sobre cuantización: La cuantización reduce los pesos del modelo, pero no necesariamente el KV-Cache. Si cargas un modelo cuantizado con contexto de 128K, puedes seguir encontrando limitaciones de memoria solo por el cache.

Hardware, costos y seguridad en relación con la longitud de contexto

Contextos largos requieren más VRAM o RAM. Si deseas procesar muchos documentos extensos, deberás optar por modelos muy grandes y workstations potentes, o acortar deliberadamente las entradas. Los detalles se encuentran en el artículo sobre requisitos de RAM y VRAM.

La cuantización ayuda con los pesos del modelo, pero no reduce significativamente el KV-Cache, ya que depende de la longitud de la secuencia y la arquitectura del modelo. Si deseas cargar un modelo de 8B con 128K de contexto, aún necesitarás memoria considerable solo para el cache.

Los costos en inteligencia artificial local provienen principalmente del hardware y la electricidad. La ventaja es clara: incluso documentos largos no salen de tu red. Es especialmente importante con contratos confidenciales, archivos de código interno o datos personales. Con servicios en la nube, un contexto largo puede resultar costoso porque cada token se cobra.

En términos de seguridad, el funcionamiento local tiene una ventaja definitiva. No envías datos sensibles a servidores externos. A cambio, asumes la responsabilidad completa de copias de seguridad, actualizaciones y protección de acceso. Más información en el artículo Ejecutar LLMs localmente.

Enlaces y recursos sobre la longitud de contexto

Preguntas frecuentes sobre la longitud de contexto

¿Cuántas palabras equivalen a un token?

Aproximadamente 0,75 palabras por token en inglés, en alemán más bien 0,6 a 0,7 palabras. Un texto alemán con 1.000 palabras corresponde frecuentemente a unos 1.300 a 1.500 tokens.

¿Puedo introducir más texto de lo que permite la ventana de contexto?

No. El modelo ignora los tokens que superan la ventana o genera errores. Las herramientas truncan o dividen el texto de antemano, a veces sin avisarte.

¿Por qué el KV-Cache se vuelve tan grande?

Almacena valores intermedios para cada token ya procesado en cada capa del modelo. Con textos largos, estos valores se acumulan y ocupan mucha memoria, creciendo linealmente con la longitud de la secuencia.

¿Las ventanas de contexto más largas siempre son mejores?

No necesariamente. Contextos largos requieren más memoria y tiempo. Además, los modelos a veces pierden de vista pasajes relevantes en medio de un texto muy extenso. Para muchas tareas, 8.000 a 32.000 tokens son suficientes.

¿Qué sucede con los mensajes antiguos del chat?

Cuando el historial supera la ventana de contexto, los mensajes más antiguos se descartan. Por eso muchas aplicaciones utilizan un resumen de la conversación anterior para ahorrar espacio.

¿Cómo sé cuántos tokens tiene mi texto?

Usa un contador de tokens en línea o las bibliotecas tokenizadoras de Hugging Face. Asegúrate de usar el tokenizador del modelo específico, ya que diferentes modelos tokenizán de formas distintas.

¿Afecta la longitud de contexto a la velocidad?

Sí. Contextos más largos implican más cálculos por token, porque el modelo calcula la atención sobre todos los tokens anteriores. El tiempo de respuesta aumenta con la longitud del contexto.

¿Puedo cuantizar el KV-Cache?

Sí, existen enfoques como la cuantización de KV-Cache que comprimen el caché. Sin embargo, es un tema avanzado y no está disponible en todas las herramientas. Para empezar, basta saber que el caché crece y consume memoria.

¿Qué ventana de contexto necesito para RAG?

Para la mayoría de aplicaciones RAG, 8.000 a 32.000 tokens son suficientes. Introduces algunos fragmentos de texto más tu pregunta, y eso suele bastar. Más contexto ayuda solo si quieres pasar muchos o muy largos chunks.

¿Por qué mi modelo se detiene a mitad de la respuesta?

Probablemente la ventana de contexto está llena. La entrada y la salida comparten la ventana. Si la entrada es demasiado larga, no queda espacio para la respuesta y el modelo se detiene. Reduce la entrada o elige un modelo con una ventana de contexto más grande.

¿Ayuda la cuantización con contextos largos?

La cuantización reduce los pesos del modelo, pero el KV-Cache sigue creciendo con la longitud de la secuencia. Ahorras memoria en los pesos, pero con contextos muy largos el caché puede seguir siendo un cuello de botella.

¿Qué significa “Lost in the Middle”?

Es un efecto observado donde los modelos prestan menos atención a la información en medio de un contexto largo que al principio o al final. Si tienes información importante, es mejor colocarla al principio o al final del prompt.

¿Puedo ampliar la ventana de contexto de un modelo?

No, la ventana de contexto se establece durante el entrenamiento. Un modelo entrenado con 8.000 tokens no puede de repente procesar 32.000 tokens. Tienes que elegir un modelo que ya soporte desde el inicio la ventana deseada.

¿Necesito hardware especial para un contexto de 128K?

No necesariamente especial, pero sí suficiente. El KV-Cache para 128.000 tokens puede ocupar varios gigabytes. Necesitas suficiente VRAM o RAM para mantener el modelo y el caché simultáneamente. Con ejecución local, eso frecuentemente significa 16 GB de VRAM o más.

Fuentes y lecturas adicionales

  • Hugging Face Tokenizer-Dokumentation
  • Ollama Modellübersicht
  • Llama 3.1 Kontextlängen-Spezifikation
  • Qwen 2.5 Modellkarte
  • Mistral AI Dokumentation
  • Forschung zum Thema “Lost in the Middle” (Liu et al., 2023)
Volver al blog
Share:

Nächster Artikel in IA Local

Weiterlesen
¿Qué es la IA local?

Entradas relacionadas