Design clássico · Pleno
Busca visual
Projeto de entrevista clássico. Pontos centrais: embeddings, aprendizado contrastivo, índice ANN e MRR/recall@k.
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ério | Julgamento humano | Cliques como proxy | Autossupervisão |
|---|---|---|---|
| Como o positivo é obtido | Contratados procuram manualmente imagens parecidas | Dispensa trabalho manual e gera os dados de treino automaticamente | Cria artificialmente uma imagem parecida, sem trabalho manual |
| Qualidade do sinal | Dados de treino precisos | Sinal de clique muito ruidoso e esparso | Dados não ruidosos, pois aumentar uma imagem sempre gera uma imagem parecida |
| Ponto fraco | Anotadores são caros e demorados | Pode faltar dado de clique para muitas imagens | Os 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.
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.
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.
O reranking incorpora lógica de negócio: filtra resultados inapropriados, evita imagens privadas e remove duplicatas ou quase duplicatas.
A lista final, ranqueada por similaridade, é exibida ao usuário.
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.
Criadores enviam imagens e o sistema as armazena junto com seus metadados.
O serviço de indexação indexa o embedding da imagem nova para que ela seja descoberta pela busca de vizinhos.
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.
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ília | Ideia central |
|---|---|
| Baseada em árvores | Busca só a partição a que o ponto de consulta pertence |
| LSH | Funções de hash mapeiam pontos próximos para o mesmo balde e a busca olha só os pontos do balde da consulta |
| Clustering | Depois 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étrica | Limite apontado pelo livro | Decisão do livro |
|---|---|---|
| MRR | Considera só o primeiro item relevante e ignora os demais | Não usa |
| recall@k | Com muitos itens relevantes, o denominador fica muito grande | Não usa, pois não mede a qualidade do ranking |
| precision@k | Mede quão precisas são as listas, mas não considera a qualidade do ranking | Não é ideal para o caso |
| mAP | Foi projetada para relevâncias binárias | A nDCG é melhor para notas contínuas |
| nDCG | Nem sempre é possível obter as notas de relevância verdadeiras | Usa 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.
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.
Os trabalhos rodam num cluster de instâncias lançado automaticamente e dimensionado conforme o tamanho da atualização.
Os features ficam em bloco no repositório, organizados por tipo de feature, versão e data; imagens antigas não são recomputadas.
O índice é fragmentado por doc-ID e cada máquina guarda os índices e features de um subconjunto da coleção.
Cada leaf ranker reordena os melhores candidatos com metadados adicionais, e o root ranker reúne os melhores resultados de cada leaf ranker.
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.