Olha só o problema dos IDs
Todo sistema de recomendação clássico dá um ID único para cada anúncio, produto, página e pixel. Funciona... até você lançar algo novo. Um tênis de trail recém-lançado não tem histórico de engajamento, então o modelo começa do zero. Anúncios de cauda longa, com poucas impressões, geram sinal fraco. E o que o modelo aprendeu em uma campanha raramente transfere direito para a próxima.
O GenRecs Tokenization muda a camada de representação. Em vez de decorar um ID por item, o sistema descreve o que o item é usando um vocabulário pequeno de tokens semânticos de um codebook estável. Itens parecidos compartilham tokens, como palavras parecidas compartilham radicais. Um produto novo herda o que o modelo já aprendeu sobre a categoria.
É uma mudança de base: de IDs efêmeros para representações semânticas estáveis, que modelos generativos conseguem raciocinar em cima. 🚀

O pipeline de tokenização em três etapas
No coração do GenRecs Tokenization, cada item é codificado em um embedding semântico, esse embedding é decomposto em subespaços independentes, e cada subespaço é quantizado para uma entrada do codebook. O resultado é uma sequência curta de tokens discretos que carrega sinal de conteúdo e de engajamento.
# Ilustração simplificada do pipeline de tokenização GenRecs
import torch
import torch.nn.functional as F
class GenRecsTokenizer(torch.nn.Module):
def __init__(self, encoder, codebooks, num_subspaces=8):
super().__init__()
self.encoder = encoder # Encoder multimodal pré-treinado
self.codebooks = codebooks # Codebooks vetoriais aprendidos por subespaço
self.num_subspaces = num_subspaces
def forward(self, item_text, item_image):
# 1. Codifica o conteúdo do item em um embedding semântico
embedding = self.encoder(item_text, item_image)
# 2. Decomposição residual em subespaços independentes
residual = embedding
tokens = []
for i in range(self.num_subspaces):
codebook = self.codebooks[i]
# 3. Quantização: entrada mais próxima do codebook por subespaço
distances = torch.cdist(residual, codebook)
token = distances.argmin(dim=-1)
tokens.append(token)
residual = residual - codebook[token]
return torch.stack(tokens, dim=-1) # Sequência de tokens semânticos
O tokenizer não é caixa-preta. Dá para medir a qualidade dele antes de treinar o modelo de ranking:
- Pureza de cluster — itens que compartilham um código tendem a compartilhar categoria.
- Balanço de distribuição — itens espalhados pelos IDs semânticos em vez de amontoados em poucos.
- Utilização do codebook — quanto maior a fatia de códigos com pelo menos um item, mais distinções o vocabulário expressa.
Nos oito versões de tokenizer testadas internamente, essas métricas intrínsecas correlacionaram fortemente com a acurácia de predição de CTR downstream. Traduzindo: dá para iterar no tokenizer sem esperar um ciclo completo de treino do modelo. Isso é ganho de engenharia puro. 💡

Onde ajuda — e onde não ajuda
| Dimensão | IDs tradicionais | Tokens semânticos GenRecs |
|---|---|---|
| Cold start de item novo | Começa do zero | Herda conhecimento da categoria |
| Transferência entre campanhas | Fraca, IDs por campanha | Vocabulário estável compartilhado |
| Anúncios de cauda longa | Sinal ruidoso e esparso | Generaliza via estrutura compartilhada |
| Escala | Linear no número de itens | Compõe com a curva de escala do LLM |
| Interpretabilidade | ID opaco | Tokens mapeiam para conceitos |
| Custo de serving | Baixo | Maior (encoder + quantização) |
Resultado em produção: combinado com o Generative Ads Model (GEM) e o Adaptive Ranking Model da Meta, o GenRecs Tokenization entregou +0,35% de lift em conversões nas superfícies (dados internos da Meta, fevereiro de 2026).
O detalhe mais interessante é o flywheel: previsões melhores para anúncios de cauda geram dados de treino melhores, que melhoram as previsões para todos os anúncios. Cada volta do ciclo sobe a qualidade.
Limitações e cuidados:
- Latência de serving. Tokenização totalmente verbalizada dá a visão mais rica do anúncio, mas exige janelas de contexto inviáveis na escala de anúncios. A abordagem atual mistura tokens verbalizados compactados com IDs semânticos para equilibrar qualidade de raciocínio e latência.
- Drift do tokenizer. Um vocabulário só é estável se o codebook for mantido. Retreinar ou expandir o codebook pode deslocar a semântica dos tokens e invalidar mapeamentos aprendidos.
- Complexidade de avaliação. Métricas intrínsecas como pureza de cluster são proxies. Correlacionam com acurácia de ranking nos testes da Meta, mas essa correlação precisa ser revalidada para cada domínio novo.
- Não é drop-in. É uma mudança de camada de representação que mexe em retrieval, ranking e pipelines de treino ao mesmo tempo.

O quadro maior
O GenRecs Tokenization faz parte de uma virada maior nos sistemas de recomendação: de scoring discriminativo para raciocínio generativo. A fundação de dados vai junto — de IDs efêmeros para representações semânticas estáveis que LLMs conseguem aprender, raciocinar e gerar em cima.
Três direções para ficar de olho:
- Generalização de cold start mais profunda — escalar a cobertura da tokenização para todos os tipos de item.
- Qualidade do tokenizer como objetivo de primeira classe — treino alinhado a engajamento, vocabulário unificado entre entidades, melhorias de codebook.
- Serving eficiente de arquiteturas LLM-native — tokens verbalizados compactados + IDs semânticos para manter latência aceitável.
Mais para frente, o mesmo vocabulário pode unificar representação entre texto, imagem, áudio e vídeo — um único espaço de tokens para raciocinar sobre o que o usuário quer e o que o anunciante oferece.
Próximos passos se você quer experimentar: comece com um tokenizer semântico pequeno no seu próprio catálogo, meça pureza de cluster e utilização do codebook, e compare o CTR de cold start contra o baseline baseado em IDs antes de mexer no modelo de ranking. Para a disciplina de validar sistemas generativos antes de colocar em produção, dá uma olhada em Eval-Driven Development: The Engineering Discipline Behind Trustworthy GenAI. E se você opera a camada de configuração que entrega essas mudanças de modelo com segurança, How Airbnb Ships Dynamic Config Changes Safely at Scale é leitura companheira obrigatória.