A janela de contexto (ou "comprimento do contexto") de um grande modelo de linguagem (LLM) é a quantidade de texto, em tokens, que o modelo pode considerar ou se "lembrar" a qualquer momento. Uma janela de contexto maior permite que um modelo de IA processe entradas mais longas e incorpore uma quantidade maior de informações em cada saída.
A janela de contexto de um LLM pode ser vista como o equivalente à sua memória de trabalho. Ela determina quanto tempo de uma conversa pode ser mantido sem esquecer detalhes de interações anteriores. Também determina o tamanho máximo de documentos ou amostras de código que pode processar de uma vez. Quando um prompt, conversa, documento ou base de código excede a janela de contexto de um modelo de inteligência artificial, ele deve ser truncado ou resumido para que o modelo continue.
De um modo geral, aumentar o tamanho da janela de contexto de um LLM se traduz em maior precisão, menos alucinações, respostas mais coerentes do modelo, conversas mais longas e uma capacidade aprimorada de analisar sequências de dados mais longas. No entanto, o aumento do comprimento do contexto não é isento de contrapartidas: muitas vezes envolve maiores requisitos de poder computacional e, portanto, custos aumentados e um aumento potencial na vulnerabilidade a ataques adversários.
Em termos do mundo real, o comprimento de contexto de um modelo de linguagem é medido não em palavras, mas em tokens. Para entender como as janelas de contexto funcionam na prática, é importante entender como esses tokens funcionam.
A forma como os LLMs processam a linguagem é fundamentalmente diferente da forma como os humanos o fazem. Considerando que a menor unidade de informação que usamos para representar o idioma é um único caractere, como uma letra, número ou sinal de pontuação, a menor unidade de linguagem que os modelos de IA usam é um token. Para treinar um modelo para entender a linguagem, cada token recebe um número de ID; esses números de ID, em vez das palavras ou mesmo os próprios tokens, são usados para treinar o modelo. Essa tokenização da linguagem reduz significativamente o poder computacional necessário para processar e aprender com o texto.
Há uma grande variância na quantidade de texto que um token pode representar: um token pode representar um único caractere, uma parte de uma palavra (como um sufixo ou prefixo), uma palavra inteira ou até mesmo uma curta frase de várias palavras. Considere os diferentes papéis desempenhados pela letra "a" nos exemplos a seguir:
“Jeff drove a car.” (Jeff dirigiu um carro)
Aqui, "" é uma palavra inteira. Nessa situação, seria representado por um token distinto.
“Jeff is amoral.” (Jeff é um exemplo de moral)
Aqui, "" não é uma palavra, mas sim sua adição a muda significativamente o sentido da palavra. portanto, seria representado por dois tokens distintos: um token para e outro para .
"Jeff loves his cat." (Jeff ama seu gato)
Aqui, é simplesmente uma letra na palavra "." Não contém nenhum significado semântico em si e, portanto, não precisa ser representado por um token distinto.
Não há uma “taxa de câmbio” fixa entre palavras e tokens, e diferentes modelos ou tokenizadores (um subconjunto modular de um modelo maior responsável pela tokenização) podem tokenizar o mesmo trecho de texto de maneira diferente. Uma tokenização eficiente pode ajudar a aumentar a quantidade real de texto que cabe dentro dos limites de uma janela de contexto. Mas, para fins gerais, uma estimativa razoável seria aproximadamente 1,5 token por palavra. O Tokenizer Playgroundno Hugging Face é uma maneira fácil de ver e experimentar como diferentes modelos tokenizam entradas de texto.
As variações na estrutura linguística e na representação dos dados de treinamento podem fazer com que alguns idiomas sejam tokenizados com mais eficiência do que outros. Por exemplo, um estudo de outubro de 2024 explorou um exemplo da mesma frase sendo tokenizada em inglês e telugu. Apesar de a tradução em telugu ter significativamente menos caracteres do que o equivalente em inglês, ela resultou em mais de sete vezes o número de tokens no contexto.
Embora janelas de contexto sejam geralmente associadas a LLMs usados para sumarização, geração de texto e outras tarefas de processamento de linguagem natural (NLP), o comprimento do contexto como uma consideração técnica não é exclusivo dos modelos de linguagem. A noção de uma janela de contexto é relevante para qualquer modelo de aprendizado de máquina que use a arquitetura de transformação, que compreende a maioria dos modelos modernos de IA generativa, incluindo quase todos os LLMs.
Modelos de transformação usam um mecanismo de autoatenção para calcular as relações e dependências entre diferentes partes de uma entrada (como palavras no início e no fim de um parágrafo). Matemáticamente falando, um mecanismo de autoatenção calcula vetores de pesos para cada token em uma sequência de texto, na qual cada peso representa a relevância desse token para os outros na sequência. Um LLM autorregressivo consulta iterativamente esses pesos cada vez que gera a próxima palavra de sua saída. O tamanho da janela de contexto determina o número máximo de tokens aos quais o modelo pode "prestar atenção" a qualquer momento.
Vale a pena observar que o texto da entrada real do usuário geralmente não é a única coisa que ocupa espaço na janela de contexto de um modelo. Em muitos casos, como nos chatbots, os modelos também recebem um "prompt do sistema"(frequentemente oculto do usuário), que condiciona seu comportamento e rege outros aspectos da conversa. Informações complementares extraídas de fontes de dados externas para geração aumentada de recuperação (RAG) também são armazenadas dentro da janela de contexto durante a inferência. Caracteres especiais, quebras de linha e outras medidas de formatação também consomem parte do contexto disponível.
Também vale a pena observar que os modelos de linguagem não são as únicas redes neurais que utilizam transformadores. Por exemplo, alguns modelos de difusão usados para geração de imagens incorporam autoatenção em sua arquitetura. No caso deles, o contexto atendido não está entre tokens que representam palavras (ou partes de palavras) no conteúdo escrito, mas entre pixels em uma imagem. Nesse modelo, o comprimento do contexto seria aplicado ao número de pixels cujos relacionamentos o modelo deve entender. Sua janela de contexto pode ser excedida por uma imagem de alta resolução contendo muitos pixels para processar de uma só vez.
Equipar um modelo com uma grande janela de contexto tem um custo, tanto de forma figurativa quanto literal. Os requisitos de processamento aumentam quadraticamente com o comprimento de uma sequência: por exemplo, se o número de tokens de entrada dobrar, o modelo precisará de quatro vezes mais poder de processamento para lidar com isso.
De forma semelhante, aumentar o comprimento do contexto também pode desacelerar as saídas. Cada vez que o modelo prevê de forma autorregressiva o próximo token em uma sequência, ele calcula as relações entre aquele token e todos os tokens anteriores na sequência. A inferência pode ser relativamente rápida no início de uma sequência ou conversa, mas progressivamente tornar-se mais lenta à medida que o comprimento do contexto aumenta. Isso é problemático para casos de uso que exigem inferência quase instantânea em tempo real.
Avanços recentes no comprimento médio do contexto para modelos de linguagem foram parcialmente possibilitados por novas técnicas para aumentar a velocidade e a eficiência da inferência o bastante para compensar suficientemente essas contrapartidas inerentes. Essas técnicas de otimização permitiram que até mesmo pequenos LLMs modernos de código aberto oferecessem janelas de contexto exponencialmente maiores do que as do modelo GPT-3.5 original que lançou o ChatGPT da OpenAI no final de 2022.
Mesmo quando medidas adequadas são tomadas para compensar as contrapartidas nos requisitos de computação e velocidade de processamento, estender o limite de comprimento do contexto de um modelo introduz desafios e complicações adicionais.
Assim como as pessoas, os LLMs podem ficar sobrecarregados por uma abundância de detalhes extras. Elas também podem ficar preguiçosos e usar atalhos cognitivos. Um artigo de 2023 descobriu que os LLMs não "fazem uso robusto de informações em contextos de entradas longas". Mais especificamente, os autores observaram que os modelos têm melhor desempenho quando as informações relevantes estão no início ou no final da entrada. Eles observaram também que o desempenho se degrada quando o modelo deve considerar cuidadosamente as informações no meio de contextos longos.1
Novos métodos para melhorar a eficácia do próprio mecanismo de autoatenção do transformador, como a incorporação de posição rotativa (RoPE), visam modificar a codificação posicional de token em vetores de atenção. A adoção generalizada de métodos baseados em RoPE gerou desempenho aprimorado e velocidade em tarefas envolvendo tokens a uma grande distância uns dos outros.
Pesquisas em andamento produziram uma série de benchmarks projetados para medir a capacidade de um LLM de encontrar e usar informações relevantes em passagens longas, como needle-in-a-haystack (NIAH), RULER e LongBench.
Uma janela de contexto mais longa também pode ter o efeito não intencional de apresentar uma superfície de ataque mais longa para prompts adversários. Pesquisas recentes da Anthropic demonstraram que aumentar o comprimento do contexto de um modelo também aumenta sua vulnerabilidade a "jailbreaking" e (posteriormente) ser provocado a produzir respostas prejudiciais.2
A janela de contexto média de um grande modelo de linguagem cresceu exponencialmente desde que os transformadores pré-treinados generativos (GPTs) originais foram lançados. Até o momento, cada geração sucessiva de LLMs normalmente envolvia comprimentos de contexto significativamente maiores. Atualmente, a maior janela de contexto oferecida por um modelo comercial proeminente é de mais de um milhão de tokens. Resta saber se as janelas de contexto continuarão a se expandir ou se já estamos nos aproximando do limite superior da necessidade prática.
Para referência, veja a seguir os comprimentos de contexto atuais oferecidos por alguns modelos e famílias de modelos comumente citados em outubro de 2024.
A nova família de modelos o1 também oferece uma janela de contexto de 128.000 tokens, embora ofereça um tamanho de contexto de saída maior.
Os modelos originais do Llama tinham um comprimento máximo de contexto de 2.048 tokens, que foi duplicado para 4.096 tokens para o Llama 2. Durante o lançamento em abril de 2024, os modelos Llama 3 ofereciam uma janela de contexto de aproximadamente 8.000 tokens.
O comprimento do contexto do Llama aumentou significativamente com o lançamento dos modelos Llama 3.1, que ofereciam janelas de contexto de 128.000 tokens. Os modelos Llama 3.2 também têm um comprimento máximo de contexto de 128.000 tokens.
Mistral Large 2, o principal modelo oferecido pela Mistral AI, tem uma janela de contexto de 128.000 tokens.
A série de modelos Gemini do Google oferece o que é atualmente a maior janela de contexto entre os modelos de linguagem comerciais. O Gemini 1.5 Pro, o principal modelo do Google, oferece um comprimento de contexto de até dois milhões de tokens. Outros modelos Gemini 1.5, como o Gemini 1.5 Flash, têm uma janela de contexto de um milhão de tokens.
Os mais recentes modelos Claude da Anthropic , como o Claude 3.5 Sonnet, oferecem uma janela de contexto padrão de cerca de 200.000 tokens. No início de setembro de 2024, a Anthropic anunciou que os modelos acessados por meio de seu novo plano "Claude Enterprise" ofereceriam uma janela de contexto ampliada de 500.000 tokens.
1. "Lost in the Middle: How Language Models Use Long Contexts," arXiv, 6 de julho de 2023
2 "Many-shot jailbreaking," Anthropic, 2 de abril de 2024
Projete assistentes e agentes de IA escaláveis com facilidade, automatize tarefas repetitivas e simplifique processos complexos com o IBM® watsonx Orchestrate.
Acelere o valor comercial da inteligência artificial com um portfólio poderoso e flexível de bibliotecas, serviços e aplicativos.
Reinvente os fluxos de trabalho e operações críticos adicionando IA para maximizar experiências, tomadas de decisão em tempo real e valor de negócios.