Um guia simples, em linguagem natural
Como funciona o algoritmo “For You” do X
Já parou para pensar por que o X te mostrou aquele post? Tem uma cadeia de 8 passos por trás. Aqui está — em 5 minutos, em português simples.
Leitura de 5 min · 8 passos
O fluxo em um olhar
- Pedido
- Buscar candidatos
- Filtrar
- Pontuar com ML
- Seu feed
A versão de 30 segundos
- Um pedido entra no sistema.
- O sistema reúne tudo o que sabe sobre você.
- Ele junta candidatos — de quem você segue e de desconhecidos.
- Cada post recebe mais dados em volta.
- Ele descarta o lixo óbvio.
- Um modelo de ML prevê como você vai reagir a cada post.
- Ele ordena pela nota e fica com os do topo.
- Uma última verificação e o feed é devolvido.
Passo a passo
O pedido chega
Você abre o app e puxa para atualizar. Isso envia um pedido a um serviço chamado Home Mixer, que é o maestro de tudo o que acontece a seguir.
Pense no Home Mixer como o balcão de passagem de uma cozinha de restaurante: todo prato passa por ali, e é ele que decide o que chega à sua mesa e em que ordem.
Por dentro: O Home Mixer expõe um endpoint gRPC que devolve posts ranqueados para um usuário. home-mixer/scored_posts_server.rs
Quem é você, agora?
Antes de buscar qualquer post, o sistema monta um retrato fresco de você: quem você segue, o que você curtiu, respondeu, compartilhou, os tópicos que você acompanha, até o que foi exibido recentemente.
Como uma barista que, antes de preparar seu café, dá uma olhada no seu pedido de costume, no humor que você parece estar e no que você experimentou na semana passada.
Por dentro: São os “query hydrators” — pequenos pedaços de código que buscam, cada um, uma fatia do contexto em paralelo. home-mixer/query_hydrators/
Duas fontes de posts
Agora ele reúne candidatos de dois lugares, ao mesmo tempo. Posts de contas que você segue (“in-network”, servidos pelo Thunder) e posts de gente que você não segue mas que pode te interessar (“out-of-network”, encontrados pelo Phoenix).
Dois batedores saem em campo: um vasculha o que o seu círculo de confiança postou, o outro varre o mundo inteiro atrás de coisas que tenham a sua cara.
Por dentro: O Thunder é um armazenamento em memória escrito em Rust, alimentado por Kafka, com buscas em menos de um milissegundo. O Phoenix retrieval usa um modelo de duas torres: uma torre transforma você num vetor, outra transforma os posts em vetores, e os mais próximos vencem. thunder/ · phoenix/recsys_retrieval_model.py
Preenchendo as lacunas
Para cada candidato, mais dados são puxados: o texto em si, mídia, dados do autor, contagens de engajamento, idioma, sinais de brand safety, se é um quote post, e por aí vai.
Cada prato candidato volta com a ficha completa: ingredientes, alérgenos, de onde veio.
Por dentro: São hydrators — eles enriquecem os candidatos em paralelo, antes de qualquer decisão de ranqueamento. home-mixer/candidate_hydrators/
Filtros baratos primeiro
Antes de pagar o custo de rodar ML, vêm as remoções óbvias: duplicatas, posts velhos demais, seus próprios posts, posts de gente que você bloqueou ou silenciou, posts com palavras que você silenciou e posts que você já viu.
A primeira passada do segurança na porta — quem claramente não entra hoje à noite é dispensado antes do show começar.
Por dentro: Cada filtro é um pedaço pequeno de código com um único trabalho. Componível e barato de rodar. home-mixer/filters/
A pontuação (o algoritmo em si)
Cada post restante é pontuado por um modelo de ML chamado Phoenix, um transformer baseado no Grok. Para cada post, ele prevê a probabilidade de você: curtir, responder, repostar, citar, clicar, expandir a foto, assistir ao vídeo, ficar olhando, compartilhar, seguir o autor… e também as negativas: marcar como “não tenho interesse”, bloquear, silenciar, denunciar.
Imagine um amigo olhando para um post e apostando baixinho: “Tem 14% de chance de você curtir, 2% de chance de responder, 0,3% de chance de bloquear essa pessoa.” Depois ele soma tudo com pesos.
Por dentro: Cada probabilidade prevista tem um peso. Ações positivas somam, ações negativas subtraem. Em seguida rodam duas passadas de correção: a diversidade de autores atenua posts quando um autor está dominando o feed, e o OON scorer reequilibra o conteúdo out-of-network. phoenix/recsys_model.py · home-mixer/scorers/
Escolher os melhores
Ordena pela nota final. Pega os K melhores. Esses são os posts que vão ser entregues a você, nessa ordem.
Todos os pratos têm uma nota final. O balcão manda os melhores, do melhor para o pior.
Por dentro: O selector só ordena e corta. home-mixer/selectors/
Uma última passagem de segurança
Logo antes de mandar o feed de volta para você, mais uma verificação: o que foi apagado, marcado como spam, violento, gore etc. é removido. Threads de conversa são colapsadas para você não ver cinco galhos da mesma discussão.
O expedidor dá uma última olhada no prato antes de ele sair da cozinha.
Por dentro: Filtros pós-seleção — a mesma ideia do passo 5, mas aplicada depois do ranqueamento, sobre o pequeno conjunto final. home-mixer/filters/
A grande ideia por trás da pontuação
O modelo não devolve um único número de “relevância”. Ele prevê a probabilidade de várias reações diferentes que você pode ter — curtir, responder, repostar, compartilhar, clicar, ficar olhando, bloquear, silenciar, denunciar. Cada ação tem um peso: reações boas somam pontos, reações ruins tiram. O feed é ordenado pela soma ponderada.
Por isso “engajamento” não conta a história inteira. Posts que fazem as pessoas bloquearem ou denunciarem não são recompensados — esses sinais derrubam a pontuação.
Conhece alguém que ia curtir isso?
Se isso te ajudou a entender o feed um pouco melhor, manda para uma pessoa que ia gostar.