O que é
A janela de contexto é a memória de trabalho do modelo para uma única solicitação: o número máximo de tokens que ele pode levar em consideração de uma só vez. Ela é compartilhada por tudo — o prompt de sistema, cada interação anterior da conversa, quaisquer documentos inseridos no prompt, a nova mensagem e a resposta que o modelo está escrevendo. Qualquer coisa que não caiba simplesmente não é vista.
As janelas cresceram rapidamente, de alguns milhares de tokens nos primeiros modelos para centenas de milhares, e cerca de um milhão em alguns modelos atuais. O tamanho é fixado pela forma como o modelo foi construído e treinado; o fine-tuning não o altera.
Como funciona
Um transformer lê a sua entrada em paralelo e, a cada camada, permite que cada token olhe para trás para todos os tokens anteriores através de um mecanismo chamado atenção. É isso que permite que uma resposta dependa de um detalhe muito anterior na conversa. É também por isso que contextos longos são caros: na atenção padrão, a computação cresce com o quadrado do comprimento, e a memória usada para manter a conversa visível durante a geração cresce a cada token.
A resposta também conta. Se um modelo tem uma janela de 128.000 tokens e a entrada tem 126.000 tokens de comprimento, restam apenas 2.000 tokens para a resposta. A maioria das APIs também limita o comprimento da saída separadamente.
Maior não é sinônimo de melhor
Um modelo pode aceitar uma entrada longa sem fazer um bom uso de toda ela. Estudos sobre contextos longos revelam que os modelos usam as informações no início e no fim da entrada com mais confiabilidade do que as informações enterradas no meio, e que muitos modelos que anunciam janelas muito longas perdem a precisão muito antes do limite declarado. Tanto para o treinamento quanto para o uso, um contexto curto e relevante geralmente tem um desempenho melhor do que um contexto longo e com informações desnecessárias.
O limite de treinamento por exemplo
O treinamento adiciona um segundo limite: o limite de tokens por exemplo, o registro único mais longo no qual um provedor fará o treinamento. Ele é frequentemente menor do que a janela de contexto do modelo, porque treinar em um registro longo exige muito mais memória do que responder a um. Um registro acima do limite precisa ser encurtado ou deixado de fora.
- Um registro possui um prompt de sistema de 300 tokens, 14 interações anteriores de cerca de 600 tokens cada, e uma pergunta final mais a resposta alvo de 400 tokens: 300 + 8.400 + 400 = 9.100 tokens.
- O limite por exemplo do provedor para este modelo é de 8.192 tokens, portanto, o registro excede o limite em 908 tokens.
- O corte remove as interações mais antigas primeiro. Descartar duas delas (cerca de 1.200 tokens) reduz o registro para aproximadamente 7.900 tokens.
- O prompt de sistema, as doze interações mais recentes e a resposta alvo são mantidos, para que o modelo ainda aprenda a resposta na situação que a produziu.
Erros comuns
- Presumir que um modelo com uma grande janela de contexto será treinado em registros igualmente longos.
- Esquecer que a resposta precisa caber na janela junto com a entrada.
- Preencher o prompt com todos os documentos disponíveis sob a teoria de que mais contexto é sempre melhor.
- Descartar conversas longas por completo quando cortar as interações mais antigas teria mantido um alvo útil.
Referências e leitura complementar
Fontes externas abrem em uma nova aba.
- 01Lost in the Middle: How Language Models Use Long ContextsLiu et al., 2023 · arXiv · arxiv.orgMostra que as informações no meio de uma entrada longa são usadas com menos confiabilidade.
- 02RULER: What's the Real Context Size of Your Long-Context Language Models?Hsieh et al., 2024 · arXiv · arxiv.orgMede o quão abaixo de suas janelas anunciadas os modelos permanecem confiáveis.
- 03Attention Is All You NeedVaswani et al., 2017 · arXiv · arxiv.orgO artigo sobre transformers, de onde vem a atenção sobre todo o contexto.
- 04Context windowsClaude Platform Docs · platform.claude.comA explicação de um provedor sobre como a entrada e a saída compartilham a janela.