O que são vocabulários em computação
Pessoas confundem vocabulário com dicionário o tempo todo. Vocabulário é o conjunto de tokens que um modelo de linguagem reconhece e pode produzir. Dicionário seria a tabela de mapeamento de cada token para seu significado, mas isso não existe de forma acessível. Os modelos do GPT são tokenizadores baseados em Byte Pair Encoding. Isso significa que eles quebram texto em pedaços frequentes do corpus de treinamento. Palavras comuns como "the" viram um único token. Palavras raras ou compostas se dividem em vários. Um token vale aproximadamente 4 caracteres em inglês, mas isso varia completamente dependendo do idioma.
o que sao vocabulos na prática
No dia a dia, o vocabulário importa porque ele limita o que o modelo consegue escrever. Se você pede algo em japonês para um modelo treinado majoritariamente em inglês, a qualidade cai porque o tokenizer não tem tokens eficientes para aquela língua. A mesma coisa acontece com códigos-fonte: comandos específicos, nomes de variáveis inventados, operadores raros podem ocupar muitos tokens desnecessariamente. Eu trabalho com análise de contratos jurídicos há anos. Já perdi horas tentando fazer um modelo resumir cláusulas em latim jurídico. O tokenizer simplesmente não tinha representação eficiente para termos como "habeas corpus" ou "force majeure" como unidades únicas. Cada palavra vinha quebrada em subpeças. O resultado era um resumo que parecia inteligente mas não capturava os conceitos corretamente. Minha solução foi criar um glossário personalizado e inseri-lo no prompt antes da análise. Isso melhorou a precisão em cerca de 40% no meu benchmark, mas aumentou o custo em tokenização porque o próprio glossário consumia espaço.
Como funciona o tokenizer por dentro
O BPE começa com um alfabeto de caracteres e vai fundindo pares frequentes. Na primeira iteração, "h" e "e" podem se tornar "he" se aparecerem juntos com frequência. Depois, "he" e "r" podem virar "her". O processo continua por milhares de iterações até atingir o tamanho desejado do vocabulário. Os principais modelos têm vocabulários entre 30 mil e 150 mil tokens. Isso cria um problema que pouca gente menciona: bordas de palavras. Se você treina um modelo para processar arquivos de log com timestamps no formato "2024-03-15T10:30:00Z", cada dígito e cada caractere especial pode ser seu próprio token. Um timestamp inteiro vira 20 tokens quando poderia ser 2 ou 3. Isso parece trivial até você tentar processar gigabytes de logs e descobrir que está pagando cinco vezes mais do que deveria.
Também existe o problema dos caracteres Unicode. Emojis, caracteres asiáticos, acentos europeus — tudo isso tem representação diferente no tokenizer. Um emoji como "" ocupa um token. Uma palavra francesa com acento como "résumé" pode ocupar três tokens separados. Eu já vi projetos inteiros de NLP falharem porque ninguém considerou como o tokenizer lidava com diacríticos em documentos multilíngues.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Vantagens e desvantagens reais
Tokenização fixa é rápida. Não precisa gerar embeddings complexos para cada palavra, o que significa latência baixa em produção. Isso é bom quando você precisa responder em tempo real. A desvantagem é que tokens são discretos e perdem informação contextual. A palavra "bank" e "riverbank" podem ter tokens completamente diferentes mesmo sendo semanticamente relacionadas. SUBWORD tokenization, que é o que a maioria dos modelos modernos usa, tenta equilibrar isso. Mas ela falha com neologismos. Palavras que ainda não apareceram no corpus de treinamento vão ser decompostas de formas imprevisíveis. Um modelo lançado em 2023 não vai saber como tokenizar uma palavra cunhada em 2024 se ela não estiver em seu vocabulário.
Existe também o custo computacional. Quanto maior o vocabulário, mais memória o modelo precisa para manter suas embeddings. Modelos com vocabulário de 150k tokens precisam de tabelas de embedding significativamente maiores. Isso não afeta diretamente o usuário final, mas impacta o preço de inferência e a velocidade de geração.
O que você deve considerar
Se você está construindo uma aplicação que processa textos especializados, considere treinar ou fine-tunar o tokenizer. Ferramentas como Hugging Face Tokenizers permitem criar vocabulários customizados para domínios específicos. Isso custa esforço e tempo, mas pode reduzir o número de tokens em até 30% em textos técnicos, o que se traduz em economia direta de dinheiro em APIs de inferência. Também pense em pré-processamento. Limpar dados antes da tokenização, normalizar formatação, remover ruído — tudo isso economiza tokens. Eu recomendo medir o ratio de tokens por caractere nos seus dados antes de deploy. Se estiver acima de 0,5, algo está errado e provavelmente há muito overhead sendo gerado.
Para textos bilíngues ou multilíngues, teste especificamente como o tokenizer lida com alternância de código. A maioria dos modelos performática mal quando há.switch frequente entre idiomas no mesmo documento. A solução mais simples é separar os segmentos por idioma e processá-los individualmente, depois combinar os resultados. Isso adiciona complexidade mas geralmente melhora a qualidade final em pelo menos 15% em métricas de avaliação. Não existe solução perfeita aqui. O tokenizador é uma escolha de engenharia entre velocidade, e preservação de significado. Entender essas trade-offs é o que diferencia quem constrói sistemas que funcionam em produção de quem apenas chama uma API e torce para dar certo.