Pular para o conteúdo

Design clássico · Pleno

Busca visual

Projeto de entrevista clássico. Pontos centrais: embeddings, aprendizado contrastivo, índice ANN e MRR/recall@k.

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

Resposta curta

Projeto de entrevista clássico. Pontos centrais: embeddings, aprendizado contrastivo, índice ANN e MRR/recall@k. Uma busca visual ajuda usuários a descobrir imagens visualmente parecidas com uma imagem selecionada. No enunciado do livro, as imagens que aparecem primeiro na lista devem ser as mais parecidas com a imagem de consulta.

01 · CONTEXTO E REQUISITOS

O que uma busca visual precisa fazer

Uma busca visual ajuda usuários a descobrir imagens visualmente parecidas com uma imagem selecionada. No enunciado do livro, as imagens que aparecem primeiro na lista devem ser as mais parecidas com a imagem de consulta. O escopo cobre só imagens, sem vídeos, e a personalização fica fora dele: uma imagem de consulta produz os mesmos resultados, independentemente de quem busca.

O enunciado supõe de 100 a 200 bilhões de imagens na plataforma, e o sistema precisa recuperar imagens parecidas rapidamente. O paper do Pinterest descreve um sistema real que indexa bilhões de imagens.

Segundo o resumo do paper, uma equipe pequena de engenharia consegue construir, lançar e manter um sistema de busca visual de grande escala e custo controlado com ferramentas amplamente disponíveis. Um dos desafios que o texto cita é controlar o custo de desenvolvimento, tanto humano quanto computacional, numa startup.

02 · ENQUADRAMENTO

Do problema à tarefa de ML

O livro enquadra a busca visual como um problema de ranking e adota o aprendizado de representações: o modelo mapeia imagens para pontos em um espaço N-dimensional chamado espaço de embeddings. Os embeddings são aprendidos para que imagens parecidas fiquem próximas nesse espaço.

Para ranquear, as imagens de entrada são transformadas em vetores de embedding e a similaridade entre a imagem de consulta e as demais é calculada pela distância no espaço de embeddings. As imagens saem ranqueadas por esses scores de similaridade.

Por simplicidade, o modelo usa só os pixels da imagem, sem metadados. Como os modelos normalmente exigem imagens de tamanho fixo, a imagem passa por pré-processamento antes de entrar na rede.

O livro escolhe redes neurais porque, diferente de muitos modelos tradicionais, elas produzem os embeddings necessários ao aprendizado de representações. Arquiteturas baseadas em CNN, como ResNet, ou em Transformers, como ViT, funcionam bem com imagens.

03 · TREINO CONTRASTIVO

Como o modelo aprende a pôr imagens parecidas perto

No treino contrastivo, o modelo aprende a distinguir imagens parecidas de imagens diferentes. Cada exemplo de treino contém uma imagem de consulta, uma imagem positiva parecida com ela e imagens negativas, diferentes da consulta. O rótulo verdadeiro do exemplo é o índice da imagem positiva.

Resta decidir de onde vem a imagem positiva. O livro compara três opções.

CritérioJulgamento humanoCliques como proxyAutossupervisão
Como o positivo é obtidoContratados procuram manualmente imagens parecidasDispensa trabalho manual e gera os dados de treino automaticamenteCria artificialmente uma imagem parecida, sem trabalho manual
Qualidade do sinalDados de treino precisosSinal de clique muito ruidoso e esparsoDados não ruidosos, pois aumentar uma imagem sempre gera uma imagem parecida
Ponto fracoAnotadores são caros e demoradosPode faltar dado de clique para muitas imagensOs dados construídos diferem dos dados reais

O livro escolhe a autossupervisão por dois motivos: não há custo inicial, pois o processo pode ser automatizado, e frameworks como o SimCLR mostraram resultados promissores com um grande conjunto de dados. Ele lembra que dá para trocar de método de rotulagem se os resultados dos experimentos forem insatisfatórios, e que também é possível combinar as opções.

A perda contrastiva simplificada é calculada em três passos. Primeiro, as similaridades entre a imagem de consulta e os embeddings das outras imagens; produto escalar e similaridade de cosseno são amplamente usados para isso, enquanto a distância euclidiana costuma ir mal em alta dimensão por causa da maldição da dimensionalidade. Depois, o softmax faz os valores somarem um, o que permite interpretá-los como probabilidades. Por fim, a entropia cruzada mede quão perto as probabilidades previstas estão dos rótulos verdadeiros.

O livro também menciona aproveitar um modelo contrastivo pré-treinado e ajustá-lo com os dados de treino, o que reduz bastante o tempo de treino em relação a treinar do zero.

04 · SERVING E INDEXAÇÃO

Do embedding à lista de resultados

Em produção, o livro separa um pipeline de predição, que atende a consulta, de um pipeline de indexação, que mantém o índice.

  1. A imagem de consulta chega ao serviço de geração de embedding, que a pré-processa e usa o modelo treinado para obter o embedding.

    Diagrama da arquitetura: Busca visual: pipeline de predição
    CLUsuário
    CPGeração de embeddingcalcula o embedding
    CPVizinho mais próximo
    DBÍndice de embeddings
    CPReranking
  2. Com o embedding em mãos, o serviço de vizinho mais próximo recupera imagens parecidas do espaço de embeddings, consultando a tabela de índice com os embeddings das imagens.

    Diagrama da arquitetura: Busca visual: pipeline de predição
    CLUsuário
    CPGeração de embedding
    CPVizinho mais próximobusca vizinhos
    DBÍndice de embeddingsembeddings das imagens
    CPReranking
  3. O reranking incorpora lógica de negócio: filtra resultados inapropriados, evita imagens privadas e remove duplicatas ou quase duplicatas.

    Diagrama da arquitetura: Busca visual: pipeline de predição
    CLUsuário
    CPGeração de embedding
    CPVizinho mais próximo
    DBÍndice de embeddings
    CPRerankingregras de negócio
  4. A lista final, ranqueada por similaridade, é exibida ao usuário.

    Diagrama da arquitetura: Busca visual: pipeline de predição
    CLUsuário
    CPGeração de embedding
    CPVizinho mais próximo
    DBÍndice de embeddings
    CPReranking

O pipeline de indexação cuida do outro lado: todas as imagens da plataforma são indexadas para melhorar o desempenho da busca, e o serviço mantém a tabela de índice atualizada. Quando um criador adiciona uma imagem nova, o serviço indexa o embedding dela para que seja descoberta pela busca de vizinhos.

  1. Criadores enviam imagens e o sistema as armazena junto com seus metadados.

    Diagrama da arquitetura: Busca visual: pipeline de indexação
    CLCriador
    DBArmazenamento de imagens
    CPServiço de indexação
    DBÍndice de embeddings
  2. O serviço de indexação indexa o embedding da imagem nova para que ela seja descoberta pela busca de vizinhos.

    Diagrama da arquitetura: Busca visual: pipeline de indexação
    CLCriador
    DBArmazenamento de imagens
    CPServiço de indexaçãoindexa o embedding
    DBÍndice de embeddingsimagem nova
  3. Guardar os embeddings de todas as imagens numa tabela de índice aumenta o uso de memória; há otimizações para reduzi-lo, como a quantização.

    Diagrama da arquitetura: Busca visual: pipeline de indexação
    CLCriador
    DBArmazenamento de imagens
    CPServiço de indexação
    DBÍndice de embeddingsocupa memória

05 · BUSCA DE VIZINHOS

Exata ou aproximada

A busca exata, também chamada de busca linear, percorre toda a tabela de índice e calcula a distância de cada ponto até o ponto de consulta. Em sistemas grandes, com N chegando a bilhões, a complexidade linear é lenta demais. Já nos algoritmos de vizinho mais próximo aproximado (ANN), uma estrutura de dados específica reduz a complexidade da busca a sublinear, em geral à custa de pré-processamento ou espaço adicional.

Os algoritmos ANN se dividem em famílias baseadas em árvores, em LSH e em clustering. Entrevistadores normalmente não esperam conhecimento de cada detalhe, e basta uma visão geral de alto nível.

FamíliaIdeia central
Baseada em árvoresBusca só a partição a que o ponto de consulta pertence
LSHFunções de hash mapeiam pontos próximos para o mesmo balde e a busca olha só os pontos do balde da consulta
ClusteringDepois de formados os clusters, busca só o subconjunto de pontos do cluster da consulta

A busca exata tem garantia de exatidão. Os métodos ANN podem não devolver os pontos exatos, mas são mais eficientes para achar os mais próximos; o livro usa ANN para achar embeddings de imagens parecidas. Duas bibliotecas muito usadas são Faiss, da Meta, e ScaNN, do Google.

06 · AVALIAÇÃO

Como medir se a busca é boa

Sistemas de busca costumam usar as métricas offline MRR, recall@k, precision@k, mAP e nDCG. O livro supõe um conjunto de avaliação com imagens candidatas e uma nota de similaridade por par de consulta e candidata.

MétricaLimite apontado pelo livroDecisão do livro
MRRConsidera só o primeiro item relevante e ignora os demaisNão usa
recall@kCom muitos itens relevantes, o denominador fica muito grandeNão usa, pois não mede a qualidade do ranking
precision@kMede quão precisas são as listas, mas não considera a qualidade do rankingNão é ideal para o caso
mAPFoi projetada para relevâncias bináriasA nDCG é melhor para notas contínuas
nDCGNem sempre é possível obter as notas de relevância verdadeirasUsa na avaliação offline, pois o conjunto tem notas de similaridade

A nDCG divide o DCG pelo DCG de um ranking ideal. Online, o livro cita o CTR, que mostra com que frequência os usuários clicam nos itens exibidos, e o tempo médio diário, semanal e mensal gasto nas imagens sugeridas.

07 · SISTEMA REAL

O que o Pinterest descreve no paper

O paper descreve os features extraídos das imagens, a infraestrutura distribuída e incremental de extração e o serviço de busca em tempo real. Os features profundos são binarizados e comparados por distância de Hamming. Para os detectores de objetos, classificar a categoria primeiro permite rodar os detectores só em imagens com alta probabilidade prévia, reduzindo custo computacional e falsos positivos.

Com uma coleção de mais de um bilhão de imagens, é crítico atualizar os features de forma incremental, evitando recomputação desnecessária. Imagens antigas não mudam, então seus features não são recomputados. A computação inicial leva pouco mais de um dia num cluster de várias centenas de máquinas de 32 núcleos, e o processamento incremental em regime estável exige só cerca de 5 máquinas.

  1. Um job reúne as assinaturas das imagens recém-enviadas e as agrupa por data em épocas; outro identifica épocas faltantes e enfileira trabalhos na fila.

    Diagrama da arquitetura: Busca visual do Pinterest: features e consulta
    DBBanco de Pins
    QFila de trabalhostrabalhos por época
    CPCluster de features
    DBRepositório de features
    DBShards do índice
    CPLeaf ranker
    CPRoot ranker
    CLUsuário
  2. Os trabalhos rodam num cluster de instâncias lançado automaticamente e dimensionado conforme o tamanho da atualização.

    Diagrama da arquitetura: Busca visual do Pinterest: features e consulta
    DBBanco de Pins
    QFila de trabalhos
    CPCluster de featurescalcula features
    DBRepositório de features
    DBShards do índice
    CPLeaf ranker
    CPRoot ranker
    CLUsuário
  3. Os features ficam em bloco no repositório, organizados por tipo de feature, versão e data; imagens antigas não são recomputadas.

    Diagrama da arquitetura: Busca visual do Pinterest: features e consulta
    DBBanco de Pins
    QFila de trabalhos
    CPCluster de features
    DBRepositório de featuresfeatures por época
    DBShards do índice
    CPLeaf ranker
    CPRoot ranker
    CLUsuário
  4. O índice é fragmentado por doc-ID e cada máquina guarda os índices e features de um subconjunto da coleção.

    Diagrama da arquitetura: Busca visual do Pinterest: features e consulta
    DBBanco de Pins
    QFila de trabalhos
    CPCluster de features
    DBRepositório de features
    DBShards do índicesubconjunto da coleção
    CPLeaf ranker
    CPRoot ranker
    CLUsuário
  5. Cada leaf ranker reordena os melhores candidatos com metadados adicionais, e o root ranker reúne os melhores resultados de cada leaf ranker.

    Diagrama da arquitetura: Busca visual do Pinterest: features e consulta
    DBBanco de Pins
    QFila de trabalhos
    CPCluster de features
    DBRepositório de features
    DBShards do índice
    CPLeaf rankerreordena candidatos
    CPRoot rankerreúne os resultados
    CLUsuário

Na avaliação estática, as anotações das imagens serviram de proxy de relevância. O FC6 da VGG de 16 camadas trouxe ganho substancial de precisão, com latência aceitável para as aplicações. No experimento ao vivo, o Pinterest preferiu reduzir o recall se isso melhorasse a relevância; o teste começou com 10% do tráfego elegível e, após três meses, as relacionadas visuais aumentaram o total de repins em Related Pins em 2%.

Perguntas frequentes

O que é Busca visual?

Projeto de entrevista clássico. Pontos centrais: embeddings, aprendizado contrastivo, índice ANN e MRR/recall@k.

O que o design de Busca visual cobre?

Ele está organizado nestas seções: O que uma busca visual precisa fazer, Do problema à tarefa de ML, Como o modelo aprende a pôr imagens parecidas perto, Do embedding à lista de resultados, Exata ou aproximada e Como medir se a busca é boa.

Quanto tempo leva Busca visual e qual é o nível?

Leva cerca de 14 minutos para ler e tem nível Pleno.

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.