Pular para o conteúdo

Design clássico · Staff

Sistema de recomendação

Projeto de entrevista clássico. Pontos centrais: feature store.

17 min de leitura · Conteúdo revisado em 23 de outubro de 2026

Resposta curta

Projeto de entrevista clássico. Pontos centrais: feature store. Um sistema de recomendação escolhe, para cada pessoa, poucos itens de um catálogo enorme. Este caso usa como referência principal o paper de recomendações do YouTube, que aponta três dificuldades, e é um bom exercício de projeto de sistemas de ML.

01 · CONTEXTO E REQUISITOS

O que um sistema de recomendação precisa resolver

Um sistema de recomendação escolhe, para cada pessoa, poucos itens de um catálogo enorme. Este caso usa como referência principal o paper de recomendações do YouTube, que aponta três dificuldades, e é um bom exercício de projeto de sistemas de ML.

Na escala, o paper afirma que algoritmos de aprendizado distribuído altamente especializados e sistemas de serviço eficientes são essenciais. No frescor, o sistema deve responder bem a conteúdo recém-enviado e às últimas ações do usuário. No ruído, quase nunca se obtém a verdade sobre a satisfação do usuário, e por isso se modelam sinais implícitos e ruidosos.

02 · O FUNIL EM DUAS ETAPAS

Geração de candidatos e ranking

O paper descreve o sistema como duas redes neurais: uma de geração de candidatos e outra de ranking. A primeira recebe eventos do histórico de atividade do usuário e recupera, de um corpus grande, um pequeno subconjunto de vídeos. A segunda atribui uma pontuação a cada vídeo, e os de maior pontuação são apresentados ao usuário, ordenados por ela.

A vantagem da divisão, segundo o paper, é recomendar a partir de um corpus muito grande e ainda ter certeza de que os poucos itens exibidos são personalizados e engajantes. O desenho também permite misturar candidatos vindos de outras fontes.

  1. No diagrama, o aplicativo se liga ao serviço de recomendação, que coordena as duas etapas.

    Diagrama da arquitetura: Recomendação: funil de duas etapas
    CLAplicativo
    CPServiço de recomendação
    CPGeração de candidatos
    CHÍndice de vizinhos mais próximos
    CPRanking
    DBFeature store online
  2. No paper do YouTube, a geração de candidatos recebe eventos do histórico de atividade do usuário e recupera um pequeno subconjunto de vídeos de um corpus grande.

    Diagrama da arquitetura: Recomendação: funil de duas etapas
    CLAplicativo
    CPServiço de recomendação
    CPGeração de candidatosrecupera candidatos
    CHÍndice de vizinhos mais próximos
    CPRanking
    DBFeature store online
  3. Na etapa de serviço, a pontuação se reduz a uma busca de vizinhos mais próximos no espaço de produto escalar, para a qual bibliotecas de uso geral podem ser usadas.

    Diagrama da arquitetura: Recomendação: funil de duas etapas
    CLAplicativo
    CPServiço de recomendação
    CPGeração de candidatos
    CHÍndice de vizinhos mais próximosvizinhos mais próximos
    CPRanking
    DBFeature store online
  4. O ranking atribui uma pontuação a cada vídeo segundo uma função objetivo, usando um conjunto rico de atributos do vídeo e do usuário.

    Diagrama da arquitetura: Recomendação: funil de duas etapas
    CLAplicativo
    CPServiço de recomendação
    CPGeração de candidatos
    CHÍndice de vizinhos mais próximos
    CPRankingpontua
    DBFeature store online
  5. Como só algumas centenas de vídeos são pontuadas, o ranking tem acesso a muito mais atributos do vídeo e da relação do usuário com ele; no diagrama, eles vêm do feature store online.

    Diagrama da arquitetura: Recomendação: funil de duas etapas
    CLAplicativo
    CPServiço de recomendação
    CPGeração de candidatos
    CHÍndice de vizinhos mais próximos
    CPRanking
    DBFeature store onlineatributos
  6. Os vídeos de maior pontuação são apresentados ao usuário, ordenados pela pontuação.

    Diagrama da arquitetura: Recomendação: funil de duas etapas
    CLAplicativolista final
    CPServiço de recomendação
    CPGeração de candidatos
    CHÍndice de vizinhos mais próximos
    CPRanking
    DBFeature store online
CritérioGeração de candidatosRanking
PapelReduz o corpus grande a um pequeno subconjunto de candidatosAtribui uma pontuação a cada vídeo
AtributosPersonalização ampla por filtragem colaborativaConjunto rico de atributos do vídeo e do usuário
FocoCandidatos relevantes de modo geral, com alta precisãoRepresentação fina para distinguir a importância relativa, com alto recall

03 · GERAR CANDIDATOS

Embeddings, vizinhos mais próximos e a escolha do rótulo

Para treinar a geração de candidatos, o paper usa o feedback implícito de assistir: terminar um vídeo é um exemplo positivo. A justificativa é que há ordens de magnitude mais histórico implícito, o que permite recomendar itens na cauda, onde o feedback explícito é extremamente esparso.

Um embedding é um mapeamento de entidades esparsas, como vídeos e usuários, em um vetor denso. Em serviço, pontuar milhões de itens sob latência de dezenas de milissegundos exige um esquema aproximado e sublinear no número de classes; como as verossimilhanças calibradas não são necessárias, o problema se reduz a uma busca de vizinhos mais próximos no espaço de produto escalar.

A escolha do que prever também pesa. O paper gera exemplos de treino a partir de todas as reproduções, inclusive de vídeos incorporados em outros sites, e não só das feitas nas próprias recomendações; do contrário, seria muito difícil o conteúdo novo aparecer e o recomendador ficaria excessivamente enviesado em direção ao aproveitamento (exploitation). O paper também encontrou desempenho muito melhor ao prever a próxima reprodução do usuário do que uma reprodução retirada ao acaso.

04 · RANKING E FEATURE STORE

Atributos ricos, tempo assistido e consistência entre treino e serviço

No ranking só algumas centenas de vídeos são pontuadas, em vez dos milhões da geração de candidatos; por isso o paper diz haver acesso a muito mais atributos do vídeo e da relação do usuário com ele. O ranking também é crucial para combinar fontes de candidatos cujas pontuações não são diretamente comparáveis.

O objetivo final do ranking, segundo o paper, é em geral uma função simples do tempo assistido esperado por impressão. Ranquear por taxa de cliques costuma promover vídeos enganosos que o usuário não completa.

Atributos servidos ao vivo exigem infraestrutura própria: o paper chama de façanha de engenharia, fora do seu escopo, servir o histórico de impressões e reproduções atualizado até o segundo, e o considera vital para recomendações responsivas.

É aqui que entra o feature store. A documentação do Feast o descreve, entre seus componentes, com um armazém offline para extração histórica de atributos usada no treino de modelos, e um armazém online, que serve atributos com baixa latência em sistemas de produção. A mesma documentação diz que ele evita vazamento de dados ao gerar conjuntos de atributos corretos no ponto no tempo, de modo que valores futuros não vazem para os modelos durante o treino.

  1. O diagrama começa no aplicativo, cujos eventos de uso passam por uma fila até um pipeline de atributos.

    Diagrama da arquitetura: Recomendação: atributos para treino e serviço
    CLAplicativo
    QFila de eventos
    CPPipeline de atributos
    DBArmazém offline
    CPTreino do modelo
    DBArmazém online
    CPServiço de ranking
  2. A documentação do Feast afirma que ele depende de pipelines de dados a montante para produzir os valores dos atributos; aqui, esse papel é do pipeline de atributos.

    Diagrama da arquitetura: Recomendação: atributos para treino e serviço
    CLAplicativo
    QFila de eventos
    CPPipeline de atributosproduz valores
    DBArmazém offline
    CPTreino do modelo
    DBArmazém online
    CPServiço de ranking
  3. O armazém offline serve à extração histórica de atributos usada no treino de modelos.

    Diagrama da arquitetura: Recomendação: atributos para treino e serviço
    CLAplicativo
    QFila de eventos
    CPPipeline de atributos
    DBArmazém offlinehistórico
    CPTreino do modelotreino
    DBArmazém online
    CPServiço de ranking
  4. Conjuntos de atributos corretos no ponto no tempo evitam o vazamento de dados: valores futuros dos atributos não chegam ao modelo durante o treino.

    Diagrama da arquitetura: Recomendação: atributos para treino e serviço
    CLAplicativo
    QFila de eventos
    CPPipeline de atributos
    DBArmazém offline
    CPTreino do modelosem vazamento
    DBArmazém online
    CPServiço de ranking
  5. O feature store empurra os valores para o armazém online, o que reduz a latência de recuperação dos atributos.

    Diagrama da arquitetura: Recomendação: atributos para treino e serviço
    CLAplicativo
    QFila de eventos
    CPPipeline de atributos
    DBArmazém offline
    CPTreino do modelo
    DBArmazém onlinepush
    CPServiço de ranking
  6. O armazém online serve atributos com baixa latência em produção; no diagrama, o serviço de ranking os lê dali.

    Diagrama da arquitetura: Recomendação: atributos para treino e serviço
    CLAplicativo
    QFila de eventos
    CPPipeline de atributos
    DBArmazém offline
    CPTreino do modelo
    DBArmazém online
    CPServiço de rankinglê atributos

O Feast não orquestra fluxos complexos: ele depende de pipelines de dados a montante para produzir os valores dos atributos. Em contrapartida, oferece um catálogo central de definições de atributos, uma única fonte de verdade, e busca disponibilizar atributos de forma consistente para o treino e para o serviço de baixa latência.

05 · FRESCOR E AVALIAÇÃO

Itens novos, repetição e como saber se melhorou

O conteúdo novo importa: o paper observa que usuários preferem conteúdo recente, mas não à custa da relevância. Sistemas de ML costumam ter viés implícito em direção ao passado. Para corrigir isso, o modelo recebe a idade do exemplo de treino como atributo; em serviço, esse atributo vale zero (ou levemente negativo), refletindo previsões feitas no fim da janela de treino.

Atributos sobre a frequência de impressões passadas são críticos para introduzir “churn”, isto é, pedidos sucessivos que não devolvem listas idênticas: se um vídeo foi recomendado recentemente e o usuário não o assistiu, o modelo naturalmente o rebaixa na próxima carga da página.

Na avaliação, o paper usa métricas offline, como precisão, recall e perda de ranking, para guiar as melhorias, mas para a determinação final recorre a testes A/B com experimentos ao vivo, porque os resultados A/B ao vivo nem sempre se correlacionam com os offline.

ProblemaCorreção descrita no paper
Viés em direção ao passadoIdade do exemplo de treino como atributo
Vídeos enganososObjetivo baseado em tempo assistido esperado, não em taxa de cliques
Listas repetidasAtributos sobre a frequência de impressões passadas
Viés em direção ao aproveitamentoExemplos de treino de todas as reproduções, não só das recomendadas
Rótulo de treinoPrever a próxima reprodução, não uma retirada ao acaso

06 · EVOLUÇÃO E LIMITES

O que este caso não cobre

Usuários novos são um caso à parte: segundo o paper, atributos demográficos fornecem priors para que as recomendações se comportem de forma razoável para eles.

Para ampliar o desenho em entrevista, vale discutir como medir o sucesso, o que fazer quando o índice de vizinhos ou o armazém online ficam indisponíveis e como incluir outras fontes de candidatos.

Perguntas frequentes

O que é Sistema de recomendação?

Projeto de entrevista clássico. Pontos centrais: feature store.

O que o design de Sistema de recomendação cobre?

Ele está organizado nestas seções: O que um sistema de recomendação precisa resolver, Geração de candidatos e ranking, Embeddings, vizinhos mais próximos e a escolha do rótulo, Atributos ricos, tempo assistido e consistência entre treino e serviço, Itens novos, repetição e como saber se melhorou e O que este caso não cobre.

Quanto tempo leva Sistema de recomendação e qual é o nível?

Leva cerca de 17 minutos para ler e tem nível Staff.

Agora projete você mesmo

Rode este caso como uma entrevista na escola de System Design: você toma as decisões, o tutor as questiona e você vê a nota do seu desenho.