¡Hola Devs! El problema con los IDs
Todo sistema de recomendación clásico le asigna un ID único a cada anuncio, producto, página y píxel. Funciona... hasta que lanzas algo nuevo. Un tenis de trail recién lanzado no tiene historial de engagement, así que el modelo arranca de cero. Los anuncios de cola larga, con pocas impresiones, generan señal débil. Y lo que el modelo aprendió en una campaña rara vez transfiere bien a la siguiente.
GenRecs Tokenization cambia la capa de representación. En lugar de memorizar un ID por ítem, el sistema describe qué es el ítem usando un vocabulario pequeño de tokens semánticos de un codebook estable. Los ítems parecidos comparten tokens, como las palabras parecidas comparten raíces. Un producto nuevo hereda lo que el modelo ya aprendió sobre su categoría.
Es un cambio de fondo: de IDs efímeros a representaciones semánticas estables sobre las que los modelos generativos pueden razonar. 🚀

El pipeline de tokenización en tres etapas
En el corazón de GenRecs Tokenization, cada ítem se codifica en un embedding semántico, ese embedding se descompone en subespacios independientes, y cada subespacio se cuantiza a una entrada del codebook. El resultado es una secuencia corta de tokens discretos que carga señal de contenido y de engagement.
# Ilustración simplificada del pipeline de tokenización 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 preentrenado
self.codebooks = codebooks # Codebooks vectoriales aprendidos por subespacio
self.num_subspaces = num_subspaces
def forward(self, item_text, item_image):
# 1. Codifica el contenido del ítem en un embedding semántico
embedding = self.encoder(item_text, item_image)
# 2. Descomposición residual en subespacios independientes
residual = embedding
tokens = []
for i in range(self.num_subspaces):
codebook = self.codebooks[i]
# 3. Cuantización: entrada más cercana del codebook por subespacio
distances = torch.cdist(residual, codebook)
token = distances.argmin(dim=-1)
tokens.append(token)
residual = residual - codebook[token]
return torch.stack(tokens, dim=-1) # Secuencia de tokens semánticos
El tokenizer no es caja negra. Puedes medir su calidad antes de entrenar el modelo de ranking:
- Pureza de clúster — ítems que comparten un código tienden a compartir categoría.
- Balance de distribución — ítems repartidos por los IDs semánticos en vez de amontonados en pocos.
- Utilización del codebook — mientras mayor sea la porción de códigos con al menos un ítem, más distinciones expresa el vocabulario.
En las ocho versiones de tokenizer probadas internamente, estas métricas intrínsecas correlacionaron fuerte con la precisión de CTR downstream. Traducción: puedes iterar el tokenizer sin esperar un ciclo completo de entrenamiento del modelo. Eso es ganancia pura de ingeniería. 💡

Dónde ayuda — y dónde no
| Dimensión | IDs tradicionales | Tokens semánticos GenRecs |
|---|---|---|
| Cold start de ítem nuevo | Arranca de cero | Hereda conocimiento de categoría |
| Transferencia entre campañas | Débil, IDs por campaña | Vocabulario estable compartido |
| Anuncios de cola larga | Señal ruidosa y dispersa | Generaliza vía estructura compartida |
| Escala | Lineal en número de ítems | Compone con la curva de escala del LLM |
| Interpretabilidad | ID opaco | Tokens mapean a conceptos |
| Costo de serving | Bajo | Mayor (encoder + cuantización) |
Resultado en producción: combinado con el Generative Ads Model (GEM) y el Adaptive Ranking Model de Meta, GenRecs Tokenization entregó +0.35% de lift en conversiones en las superficies (datos internos de Meta, febrero de 2026).
Lo más interesante es el flywheel: mejores predicciones para anuncios de cola generan mejores datos de entrenamiento, que mejoran las predicciones para todos los anuncios. Cada vuelta del ciclo sube la calidad.
Limitaciones y cuidados:
- Latencia de serving. La tokenización totalmente verbalizada da la vista más rica del anuncio, pero exige ventanas de contexto inviables a escala de anuncios. El enfoque actual mezcla tokens verbalizados compactados con IDs semánticos para equilibrar calidad de razonamiento y latencia.
- Drift del tokenizer. Un vocabulario solo es estable si el codebook se mantiene. Reentrenar o expandir el codebook puede mover la semántica de los tokens e invalidar mapeos aprendidos.
- Complejidad de evaluación. Métricas intrínsecas como pureza de clúster son proxies. Correlacionan con precisión de ranking en las pruebas de Meta, pero esa correlación debe revalidarse para cada dominio nuevo.
- No es drop-in. Es un cambio de capa de representación que toca retrieval, ranking y pipelines de entrenamiento al mismo tiempo.

El panorama completo
GenRecs Tokenization es parte de un giro más grande en sistemas de recomendación: de scoring discriminativo a razonamiento generativo. La base de datos va con él — de IDs efímeros a representaciones semánticas estables que los LLMs pueden aprender, razonar y generar.
Tres direcciones para seguir de cerca:
- Generalización de cold start más profunda — escalar la cobertura de tokenización a todos los tipos de ítem.
- Calidad del tokenizer como objetivo de primera clase — entrenamiento alineado a engagement, vocabulario unificado entre entidades, mejoras de codebook.
- Serving eficiente de arquitecturas LLM-native — tokens verbalizados compactados + IDs semánticos para mantener latencia aceptable.
Más adelante, el mismo vocabulario podría unificar representación entre texto, imagen, audio y video — un solo espacio de tokens para razonar sobre lo que el usuario quiere y lo que el anunciante ofrece.
Próximos pasos si quieres experimentar: empieza con un tokenizer semántico pequeño sobre tu propio catálogo, mide pureza de clúster y utilización del codebook, y compara el CTR de cold start contra tu baseline basado en IDs antes de tocar el modelo de ranking. Para la disciplina de validar sistemas generativos antes de producción, checa Eval-Driven Development: The Engineering Discipline Behind Trustworthy GenAI. Y si operas la capa de configuración que entrega estos cambios de modelo con seguridad, How Airbnb Ships Dynamic Config Changes Safely at Scale es lectura obligada.