Pular para o conteúdo

Arquitetura real · Sênior

Embedding-based retrieval na busca do Facebook

Arquitetura real em produção. Pontos centrais: two-tower, hard negatives e ANN híbrido com match de termos.

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

Resposta curta

Arquitetura real em produção. Pontos centrais: two-tower, hard negatives e ANN híbrido com match de termos. No momento do paper, a busca do Facebook ainda se baseava sobretudo em um modelo de correspondência Booleana, embora a recuperação por embeddings já fosse usada em buscadores web havia anos.

01 · CONTEXTO

Por que a busca social pede embeddings

No momento do paper, a busca do Facebook ainda se baseava sobretudo em um modelo de correspondência Booleana, embora a recuperação por embeddings já fosse usada em buscadores web havia anos. Ali, a intenção de busca não depende só do texto: é influenciada também por quem faz a busca e pelo contexto em que ela acontece. Por isso, para os autores, a recuperação por embeddings no Facebook não é um problema de embedding de texto.

Uma busca tem um estágio de recuperação, que procura um conjunto de documentos relevantes com baixa latência e baixo custo computacional, e um estágio de ranking, que coloca os documentos mais desejados no topo com modelos mais complexos. A diferença de escala é grande: o ranking costuma considerar centenas de documentos por sessão, enquanto a recuperação precisa processar bilhões ou trilhões de documentos do índice.

A recuperação por embeddings (EBR) usa embeddings para representar a consulta e os documentos e converte o problema de recuperação em uma busca de vizinhos mais próximos no espaço de embeddings.

02 · MODELO E TREINO

Embedding unificado de dois lados

Os autores formulam a recuperação como um problema de otimização de recall. O conjunto de resultados-alvo de uma consulta pode vir de cliques ou de documentos considerados relevantes por avaliação humana. Como métrica offline, propõem rodar uma busca KNN no índice inteiro e usar o recall@K.

O modelo unificado tem dois lados: de um, a requisição de busca, com texto da consulta, pessoa que busca e contexto; do outro, o documento. Os dois codificadores são, por padrão, redes separadas, com a opção de compartilhar parte dos parâmetros. Os vetores densos são comparados por similaridade de cosseno, e a perda triplet tem a intuição de separar o par positivo do par negativo por uma margem de distância.

A margem exige ajuste: o valor ótimo varia bastante entre tarefas de treino, e margens diferentes resultaram em uma variação de 5-10% no recall de KNN.

Entradas além do texto fazem diferença. Ao trocar embeddings de texto por embeddings unificados, o recall melhorou +18% na busca de eventos e +16% na de grupos. Entre os atributos adicionados estão a localização, vantajosa em buscas por negócios, grupos e eventos locais, e atributos sociais, vindos de um modelo de embedding separado treinado sobre o grafo social.

Comparados à correspondência Booleana por termos, embeddings treinados só com atributos de texto se mostraram bons em dois cenários: a correspondência aproximada de texto e a opcionalização de termos, como descartar um termo da consulta e ainda recuperar o grupo esperado.

Escolha de treinoResultado observado
Cliques ou impressões como positivosRecall semelhante, dado o mesmo volume de dados
Impressões sem clique como negativosRegressão absoluta de 55% no recall do modelo de pessoas, frente a negativos aleatórios
Cliques como positivos e aleatórios como negativosDesempenho razoável do modelo

Os autores atribuem a regressão a um viés: os negativos sem clique tendem a ser casos difíceis, enquanto a maioria dos documentos do índice são casos fáceis, que não casam com a consulta. Treinar só com negativos assim muda a representatividade dos dados de treino em relação à tarefa real de recuperação.

03 · SERVING

Recuperação híbrida sobre o índice invertido

A forma direta de servir seria juntar os candidatos da recuperação existente com os de uma busca KNN de embeddings. Os autores consideraram isso subótimo por três motivos: alto custo de desempenho no experimento inicial, alto custo de manutenção por haver dois índices e grande sobreposição possível entre os dois conjuntos de candidatos.

A solução foi uma recuperação híbrida, que integra KNN de embeddings e correspondência Booleana para pontuar documentos. Para isso usaram a biblioteca Faiss na quantização dos vetores e a integraram à recuperação por índice invertido. Os autores citam duas vantagens da busca aproximada baseada em índice invertido: custo de armazenamento menor, pela quantização dos vetores, e integração mais fácil ao sistema de recuperação existente.

A integração foi feita no Unicorn, o motor de recuperação por trás da maioria dos produtos de busca do Facebook. Os autores estenderam a representação do documento para incluir embeddings e criaram o operador de consulta (nn), que casa os documentos cujo embedding está dentro de um raio do embedding da consulta. Na indexação, o embedding de cada documento é quantizado e vira um termo, para seu cluster grosso, e um payload, para o resíduo quantizado. Na consulta, o operador é reescrito internamente como um OR dos termos dos clusters mais próximos do embedding da consulta.

O modelo de dois lados foi decomposto em um modelo de consulta e um de documento, servidos separadamente. A consulta passa por um serviço online de inferência, em tempo real. Os documentos são processados em lote offline com Spark, e os embeddings gerados são publicados, junto de outros metadados, no índice direto; com a quantização adicional (grossa e PQ), também no índice invertido.

  1. A consulta chega com o texto, a pessoa que busca e o contexto, e vai ao serviço online que calcula o embedding da requisição em tempo real.

    Diagrama da arquitetura: Recuperação híbrida por embeddings na busca
    CLCliente
    CPInferência de embedding da consultainferência online
    CPMotor de recuperação híbrida
    DBÍndice invertido com embeddings
    CPInferência em lote dos documentos
    CPRanking e filtragem
  2. O embedding da consulta segue para o motor de recuperação híbrida.

    Diagrama da arquitetura: Recuperação híbrida por embeddings na busca
    CLCliente
    CPInferência de embedding da consulta
    CPMotor de recuperação híbrida
    DBÍndice invertido com embeddings
    CPInferência em lote dos documentos
    CPRanking e filtragem
  3. O motor reescreve o operador de vizinhos mais próximos em um OR dos termos dos clusters mais próximos e o combina com os termos Booleanos da expressão.

    Diagrama da arquitetura: Recuperação híbrida por embeddings na busca
    CLCliente
    CPInferência de embedding da consulta
    CPMotor de recuperação híbridareescreve o (nn)
    DBÍndice invertido com embeddingstermos e payloads
    CPInferência em lote dos documentos
    CPRanking e filtragem
  4. Fora do caminho da consulta, a inferência em lote publica no índice os embeddings dos documentos, já quantizados.

    Diagrama da arquitetura: Recuperação híbrida por embeddings na busca
    CLCliente
    CPInferência de embedding da consulta
    CPMotor de recuperação híbrida
    DBÍndice invertido com embeddingsembedding quantizado
    CPInferência em lote dos documentospublica embeddings
    CPRanking e filtragem
  5. Os candidatos recuperados seguem para os estágios de ranking e filtragem.

    Diagrama da arquitetura: Recuperação híbrida por embeddings na busca
    CLCliente
    CPInferência de embedding da consulta
    CPMotor de recuperação híbrida
    DBÍndice invertido com embeddings
    CPInferência em lote dos documentos
    CPRanking e filtragemranking

Como o suporte a vizinhos mais próximos foi construído sobre primitivas existentes, e não como um sistema separado, o motor herdou atualizações em tempo real, planejamento e execução eficientes de consultas e consultas multi-hop. Entre os modos de busca, o de raio deu um melhor equilíbrio entre desempenho do sistema e qualidade do que o top-K, e é o usado na produção descrita no paper.

ModoHipótese apontada pelos autores
RaioPermite uma busca NN restrita pelas outras partes da expressão de busca
Top-KOperação mais relaxada, que precisa varrer o índice inteiro para obter os K melhores

04 · AJUSTE DO ANN

Quantização e parâmetros de busca aproximada

A quantização dos embeddings tem dois componentes: a quantização grossa, que agrupa os vetores em clusters, tipicamente por K-means, e a quantização de produto, mais fina, que permite calcular distâncias de forma eficiente. Entre os parâmetros a ajustar estão o número de clusters grossos, que afeta desempenho e recall, o número de bytes do PQ e o nprobe, que define quantos clusters serão varridos e também afeta desempenho e recall.

Decisão de ajusteO que os autores observaram
Métrica para comparar algoritmos de quantização grossaOs clusters são desbalanceados, e o número de documentos varridos aproxima melhor o desempenho
Transformação antes da quantizaçãoOPQ foi em geral mais eficaz que PCA
Bytes do quantizador de produtoO ganho de precisão é limitado depois de d/4
Quando reajustar os parâmetrosSempre que a tarefa de treino do modelo muda de forma não trivial

Os autores também recomendam implantar várias configurações de ANN online para entender o impacto real em desempenho da recuperação por embeddings no sistema, o que ajuda a decidir o orçamento de capacidade e a reduzir o escopo da busca offline de parâmetros.

05 · HARD MINING

Negativos e positivos difíceis

No modelo de busca de pessoas, os K primeiros resultados por embedding tinham, em geral, o mesmo nome, e o modelo nem sempre colocava o alvo acima dos demais, mesmo com atributos sociais. Os autores achavam muito provável que os negativos de treino fossem fáceis demais, por serem amostras aleatórias, em geral com nomes diferentes. Para o modelo diferenciar melhor resultados parecidos, propuseram usar como negativos difíceis amostras mais próximas dos positivos no espaço de embeddings.

No HNM online, os negativos difíceis são selecionados dinamicamente em cada lote de treino: os documentos de maior similaridade viram os negativos mais difíceis. Habilitá-lo melhorou o recall em +8.38% para pessoas, +7% para grupos e +5.33% para eventos. O ótimo foi de no máximo dois negativos difíceis por positivo, e usar mais do que isso passa a piorar o modelo. A limitação é que a chance de haver um negativo difícil entre amostras aleatórias pode ser baixa.

  1. Os logs de busca alimentam a mineração de exemplos, que no ponto de partida usa cliques como positivos e documentos aleatórios como negativos.

    Diagrama da arquitetura: Treino com mineração de negativos difíceis
    DBLogs de busca
    CPMineração de exemplosmonta os pares
    CPTreino do modelo de dois lados
    CPBusca aproximada para negativos difíceis
    DBModelos treinados
  2. O modelo de dois lados é treinado com a perda triplet, que separa o par positivo do negativo por uma margem de distância.

    Diagrama da arquitetura: Treino com mineração de negativos difíceis
    DBLogs de busca
    CPMineração de exemplos
    CPTreino do modelo de dois ladosperda triplet
    CPBusca aproximada para negativos difíceis
    DBModelos treinados
  3. No HNM offline, o modelo gera os melhores resultados de cada consulta, e a busca aproximada reduz bastante o tempo de computação dessa geração.

    Diagrama da arquitetura: Treino com mineração de negativos difíceis
    DBLogs de busca
    CPMineração de exemplos
    CPTreino do modelo de dois lados
    CPBusca aproximada para negativos difíceistop resultados
    DBModelos treinados
  4. Os negativos difíceis são amostrados de uma faixa intermediária do ranking, e não dos exemplos mais difíceis.

    Diagrama da arquitetura: Treino com mineração de negativos difíceis
    DBLogs de busca
    CPMineração de exemplos
    CPTreino do modelo de dois lados
    CPBusca aproximada para negativos difíceisfaixa intermediária
    DBModelos treinados
  5. O modelo é retreinado misturando negativos fáceis e difíceis, aumentando a proporção de fáceis em relação aos difíceis.

    Diagrama da arquitetura: Treino com mineração de negativos difíceis
    DBLogs de busca
    CPMineração de exemplos
    CPTreino do modelo de dois ladosretreino misto
    CPBusca aproximada para negativos difíceis
    DBModelos treinados
  6. Depois do treino, o modelo é separado em um codificador de consulta e outro de documento, servidos separadamente.

    Diagrama da arquitetura: Treino com mineração de negativos difíceis
    DBLogs de busca
    CPMineração de exemplos
    CPTreino do modelo de dois lados
    CPBusca aproximada para negativos difíceis
    DBModelos treinadosdois modelos

O HNM offline gera os K melhores resultados de cada consulta, seleciona negativos difíceis por uma estratégia e retreina o modelo com os novos triplets. Um resultado que parece contraintuitivo: modelos treinados só com negativos difíceis não superaram os treinados com negativos aleatórios. Usar os exemplos mais difíceis também não foi a melhor estratégia, e amostrar entre as posições 101-500 do ranking deu o melhor recall do modelo.

Misturar negativos aleatórios e difíceis ajudou: aumentar a proporção de fáceis continuou melhorando o recall, saturando em 100:1. A transferência de aprendizado do modelo difícil para o fácil trouxe ganho adicional. Para gerar os melhores resultados sem uma busca exaustiva, a busca aproximada reduz bastante o tempo de computação, e rodá-la em um shard aleatório bastou para gerar negativos eficazes.

AspectoHNM onlineHNM offline
Como os negativos são obtidosSelecionados dinamicamente em cada lote de treinoGerados a partir dos melhores resultados de cada consulta, com uma estratégia de seleção
Limitação ou achadoA chance de haver negativo difícil entre amostras aleatórias pode ser baixaSó negativos difíceis não superaram negativos aleatórios

Do lado dos positivos, os autores buscaram resultados novos, que a produção ainda não recuperava com sucesso, minerando alvos potenciais em sessões de busca que falharam. Um modelo treinado só com esses positivos difíceis alcançou recall semelhante ao dos dados de cliques com apenas 4% do volume de dados.

06 · DEPOIS DA RECUPERAÇÃO

Seleção, ranking, ensemble e resultado

Para melhorar eficiência e qualidade, os autores fizeram seleção de consultas e de índice. O EBR não é acionado para certas consultas em que seria fraco e sem valor extra. No índice, escolheram, por exemplo, apenas usuários ativos no mês, eventos recentes e páginas e grupos populares.

Como os estágios de ranking existentes foram desenhados para os cenários de recuperação anteriores, os autores levaram a similaridade de embedding para o ranking como feature, e a similaridade de cosseno foi a que teve melhor desempenho entre as opções testadas. Como o EBR pode ter menor precisão que a correspondência por termos, também montaram um laço de feedback com avaliação humana para retreinar o modelo de relevância e filtrar os resultados irrelevantes.

A análise do HNM levou à ideia do ensemble: são necessários exemplos difíceis para melhorar a precisão, mas os fáceis também importam para representar o espaço de recuperação. Daí a abordagem multiestágio, em que o primeiro modelo foca em recall e o segundo se especializa em diferenciar resultados mais parecidos. Entre as opções testadas para o segundo estágio, o modelo treinado com negativos sem clique teve o melhor recall de KNN, mas sofreu muito mais perda de precisão ao quantizar.

AspectoConcatenação ponderadaCascata
Como combina os modelosUsa uma soma ponderada das similaridades de cossenoO segundo estágio roda sobre a saída do primeiro, em série
Combinação que funcionouDepois da quantização, a melhor estratégia foi combinar um modelo relativamente mais fácil com um de HNM offlineUm modelo de HNM offline no segundo estágio trouxe 3.4% de melhora no recall sobre a base

Outra composição em cascata usou o embedding de texto para pré-selecionar candidatos que casam com o texto e depois o modelo unificado para reordenar e devolver os melhores candidatos. Os autores relatam ganhos significativos de métricas em testes A/B online nas verticais em que avaliaram o EBR.

Perguntas frequentes

O que é Embedding-based retrieval na busca do Facebook?

Arquitetura real em produção. Pontos centrais: two-tower, hard negatives e ANN híbrido com match de termos.

O que o design de Embedding-based retrieval na busca do Facebook cobre?

Ele está organizado nestas seções: Por que a busca social pede embeddings, Embedding unificado de dois lados, Recuperação híbrida sobre o índice invertido, Quantização e parâmetros de busca aproximada, Negativos e positivos difíceis e Seleção, ranking, ensemble e resultado.

Quanto tempo leva Embedding-based retrieval na busca do Facebook e qual é o nível?

Leva cerca de 17 minutos para ler e tem nível Sênior.

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.