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. 🚀

LLM reasoning over ad content and user preferences with GenRecs tokenization Developer Related Image

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. 💡

Semantic token clusters replacing item IDs in a recommendation system pipeline Software Concept Art

Onde ajuda — e onde não ajuda

DimensãoIDs tradicionaisTokens semânticos GenRecs
Cold start de item novoComeça do zeroHerda conhecimento da categoria
Transferência entre campanhasFraca, IDs por campanhaVocabulário estável compartilhado
Anúncios de cauda longaSinal ruidoso e esparsoGeneraliza via estrutura compartilhada
EscalaLinear no número de itensCompõe com a curva de escala do LLM
InterpretabilidadeID opacoTokens mapeiam para conceitos
Custo de servingBaixoMaior (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.

Scalable tokenization flywheel improving ranking accuracy for tail ads IT Technology Image

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:

  1. Generalização de cold start mais profunda — escalar a cobertura da tokenização para todos os tipos de item.
  2. Qualidade do tokenizer como objetivo de primeira classe — treino alinhado a engajamento, vocabulário unificado entre entidades, melhorias de codebook.
  3. 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.

Fonte: Meta Engineering — GenRecs Tokenization

Este conteúdo foi elaborado com o auxílio de ferramentas de IA, com base em fontes confiáveis, e revisado pela nossa equipe editorial antes da publicação. Não substitui o aconselhamento de um profissional especializado.