- O feed "For You" do X é um sistema de recomendação baseado em machine learning desenvolvido para melhorar a qualidade das recomendações de conteúdo personalizado
- O feed é composto pela combinação de duas fontes: contas seguidas (Thunder) e conteúdo de contas não seguidas (Phoenix Retrieval)
- Todas as postagens candidatas são avaliadas pelo Phoenix, um modelo Transformer baseado no Grok, para gerar o ranking final
- Esse modelo prevê a probabilidade de engajamento de cada postagem
- Todos os recursos projetados manualmente e a maior parte dos algoritmos heurísticos foram removidos do sistema
- O histórico de atividade do usuário (curtidas, respostas, compartilhamentos) é analisado para identificar conteúdo relevante
Arquitetura do sistema
- O Home Mixer é a camada de orquestração que coordena todo o pipeline
- Inclui a etapa de Query Hydration, que coleta o histórico de comportamento do usuário e as informações de seguimento
- Gerencia uma sequência de etapas, da coleta de candidatos ao enriquecimento de dados, filtragem, pontuação e seleção final
- Retorna postagens ordenadas por usuário via ScoredPostsService baseado em gRPC
- O Thunder é um armazenamento em memória que coleta postagens em tempo real por meio de Kafka event streams
- Mantém armazenamento por usuário para postagens originais, respostas/reposts e postagens em vídeo
- Fornece candidatos de postagens "in-network" das contas seguidas pelo usuário que fez a requisição
- Entrega as postagens mais recentes das contas seguidas com latência ultrabaixa
- Garante desempenho de consulta em nível de submilissegundos sem acesso a banco de dados externo
- O Phoenix é o principal componente de ML da recomendação e é composto por duas etapas: Retrieval e Ranking
- Recuperação: usa um modelo Two-Tower para calcular a similaridade entre embeddings de características/histórico de engajamento do usuário e embeddings das postagens, recuperando os posts Top-K
- Ranking: usa uma arquitetura Transformer with Candidate Isolation projetada para que cada candidato seja avaliado de forma independente
- Recebe como entrada o contexto do usuário (histórico de engajamento) e as postagens candidatas
- Prevê, para cada postagem, probabilidades de múltiplas ações, como curtida, resposta, repost e clique
- O Candidate Pipeline é um framework reutilizável de pipeline de recomendação
- Define traits como
Source, Hydrator, Filter, Scorer e Selector
- Incorpora execução paralela, tratamento de erros e logging para garantir escalabilidade e estabilidade
Como funciona
-
Etapas do pipeline
- 1. Buscar dados da consulta: obtém o histórico recente de atividade do usuário e metadados (por exemplo, lista de seguidos)
- 2. Descoberta de candidatos: busca postagens candidatas nas seguintes fontes
- Thunder: postagens recentes de contas seguidas (dentro da rede)
- Phoenix Retrieval: postagens descobertas por machine learning no corpus global (fora da rede)
- 3. Hydration dos candidatos usando as seguintes informações:
- Dados principais da postagem (texto, mídia etc.)
- Informações do autor (nome de usuário, status de verificação)
- Duração do vídeo (no caso de postagens em vídeo)
- Status de assinatura
- 4. Filtro pré-score: remove postagens que atendam às seguintes condições
- Duplicadas
- Antigas demais
- Do próprio usuário
- De contas bloqueadas/silenciadas
- Com palavras-chave silenciadas
- Já vistas ou servidas recentemente
- Conteúdo sem assinatura disponível
- 5. Método de pontuação: aplica vários scorers em sequência
- Phoenix Scorer: obtém previsões de machine learning usando o modelo Transformer Phoenix
- Weighted score calculator: combina as previsões para calcular a pontuação final de relevância
- Author diversity score calculator: reduz o impacto de pontuações de autores repetidos para promover diversidade
- OON scorer: ajusta a pontuação de conteúdo fora da rede
- 6. Seleção: ordena por pontuação e seleciona os K principais candidatos
- 7. Procedimentos pós-seleção: faz a validação final das postagens candidatas
-
Scoring e ranking
- As previsões do modelo Phoenix são combinadas por soma ponderada
- Ações positivas (curtidas, compartilhamentos etc.) recebem peso maior, enquanto ações negativas (bloqueio, denúncia etc.) reduzem a pontuação
-
Filtragem em duas etapas
- Filtro antes do cálculo de pontuação: remove duplicatas, postagens mais antigas que o limite, posts do próprio usuário, conteúdo pago inacessível, posts já vistos ou já servidos, contas bloqueadas e palavras-chave silenciadas
- Filtro após a seleção: remove postagens excluídas, spam, conteúdo violento, postagens gráficas e duplicações de múltiplos ramos da mesma conversa
Princípios centrais de design
- Eliminação da feature engineering manual, com o Transformer aprendendo diretamente a partir das sequências de comportamento do usuário
- Avaliação independente dos candidatos (Candidate Isolation), facilitando a geração consistente de pontuações e o cache
- Embeddings baseados em hash, usando múltiplas funções de hash para busca e ranking
- Previsão de múltiplas ações (Multi-Action Prediction), prevendo várias ações em vez de uma única pontuação de "relevância"
- Arquitetura de pipeline modular
- Separa a execução e o monitoramento do pipeline da lógica de negócio
- Permite execução paralela de etapas independentes e tratamento adequado de erros
- Facilita a adição de novas fontes, hidratação, filtros e scorers
Licença
2 comentários
"Rust 62,9%"
트위터의 추천알고리즘을 오픈소스로 공개
Será que isso é outra coisa? Vou arrumar um tempo no fim de semana para ler...