X AlgorithmEnglish

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

Começar a ler

O fluxo em um olhar

  1. Pedido
  2. Buscar candidatos
  3. Filtrar
  4. Pontuar com ML
  5. Seu feed

A versão de 30 segundos

  1. Um pedido entra no sistema.
  2. O sistema reúne tudo o que sabe sobre você.
  3. Ele junta candidatos — de quem você segue e de desconhecidos.
  4. Cada post recebe mais dados em volta.
  5. Ele descarta o lixo óbvio.
  6. Um modelo de ML prevê como você vai reagir a cada post.
  7. Ele ordena pela nota e fica com os do topo.
  8. Uma última verificação e o feed é devolvido.

Passo a passo

01

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

Ler este passo

02

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/

Ler este passo

03

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

Ler este passo

04

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/

Ler este passo

05

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/

Ler este passo

06

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/

Ler este passo

07

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/

Ler este passo

08

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/

Ler este passo

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.