Pular para o conteúdo

Design clássico · Pleno

Anúncios similares em plataformas de aluguel de temporada

Projeto de entrevista clássico. Pontos centrais: item2vec por sessão, amostragem negativa, ANN e personalização em tempo real.

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

Resposta curta

Projeto de entrevista clássico. Pontos centrais: item2vec por sessão, amostragem negativa, ANN e personalização em tempo real. Segundo a fonte, o ranking da busca e o carrossel de anúncios similares respondem juntos por 99% das conversões em reserva.

01 · CONTEXTO

O problema: anúncios parecidos e busca personalizada

Segundo a fonte, o ranking da busca e o carrossel de anúncios similares respondem juntos por 99% das conversões em reserva.

A ideia central é tratar a sequência de ações de uma pessoa como contexto, do mesmo jeito que se treinam embeddings de palavras a partir de frases. O resultado são vetores de anúncios aprendidos de sessões de busca, que permitem medir a similaridade entre anúncios.

O caso une sistemas de aprendizado de máquina e busca, e se divide em: treinar vetores a partir de sessões, ajustar o treino ao marketplace, servir anúncios similares e personalizar a busca em tempo real.

02 · SESSÕES E TREINO

De cliques a vetores

Os dados de treino são sessões de clique. Cada sessão é uma sequência ininterrupta de ids de anúncios clicados pela mesma pessoa, e uma nova sessão começa sempre que há uma pausa de mais de 30 minutos entre dois cliques consecutivos.

O treino usa amostragem negativa: o vetor do anúncio central é aproximado dos vetores dos anúncios clicados antes e depois dele, dentro de uma janela, e afastado de anúncios sorteados ao acaso.

Cada anúncio vira um vetor de 32 números reais, que codificam localização, preço, tipo, arquitetura e estilo. A fonte justifica o tamanho como um equilíbrio entre desempenho offline e a memória necessária para guardar os vetores na RAM das máquinas de busca, para cálculos de similaridade em tempo real.

A escala relatada é de vetores para 4.5 milhões de anúncios ativos, treinados com mais de 800 milhões de sessões de cliques.

03 · AJUSTES E AVALIAÇÃO

Adaptando o treino ao marketplace

Primeiro ajuste: em sessões que terminam com a reserva do anúncio, o anúncio reservado entra como contexto global, de modo que, a cada passo, o treino prevê não só os vizinhos clicados mas também o anúncio que acabou sendo reservado.

Segundo ajuste: quem busca costuma ficar em um único mercado. Assim, os contextos positivos são majoritariamente do mesmo mercado, enquanto os negativos, sorteados ao acaso, são majoritariamente de outros mercados. Esse desequilíbrio levava a similaridades subótimas dentro do mercado, e a correção foi acrescentar negativos sorteados do mercado do anúncio central.

VarianteComo foi treinada
RegularSem modificações no algoritmo original de embeddings.
Reserva como contexto globalCom as reservas como contexto global.
Reserva global e negativos do mercadoCom as reservas como contexto global e negativos explícitos do mesmo mercado.

Anúncios novos não têm vetor porque não estavam nos dados de treino. A fonte cria o vetor com a média dos 3 vizinhos geográficos mais próximos que já têm embedding, do mesmo tipo e da mesma faixa de preço do anúncio novo.

Na avaliação offline, calculam-se similaridades de cosseno entre os vetores do anúncio clicado e dos anúncios candidatos, ranqueiam-se os candidatos e observa-se a posição do anúncio reservado. A variante com reserva como contexto global e negativos do mercado teve posição média menor e superou as outras duas.

  1. O diagrama começa pelo registro de cliques e reservas.

    Diagrama da arquitetura: Treino dos embeddings de anúncios
    DBRegistro de cliques e reservas
    CPMontagem de sessões
    CPTreino dos embeddings
    DBArmazém de vetores de anúncios
    CPVetor de anúncio novo
    CPAvaliação offline
  2. As sessões são montadas a partir dos cliques; uma nova sessão começa quando há uma pausa de mais de 30 minutos entre dois cliques consecutivos.

    Diagrama da arquitetura: Treino dos embeddings de anúncios
    DBRegistro de cliques e reservas
    CPMontagem de sessõesagrupa por pausa
    CPTreino dos embeddings
    DBArmazém de vetores de anúncios
    CPVetor de anúncio novo
    CPAvaliação offline
  3. O treino aproxima o vetor do anúncio central dos anúncios clicados ao redor e o afasta de anúncios sorteados ao acaso.

    Diagrama da arquitetura: Treino dos embeddings de anúncios
    DBRegistro de cliques e reservas
    CPMontagem de sessões
    CPTreino dos embeddingsnegativos aleatórios
    DBArmazém de vetores de anúncios
    CPVetor de anúncio novo
    CPAvaliação offline
  4. Nas sessões que terminam em reserva, o anúncio reservado entra como contexto global, e o treino ganha negativos sorteados do mesmo mercado do anúncio central.

    Diagrama da arquitetura: Treino dos embeddings de anúncios
    DBRegistro de cliques e reservas
    CPMontagem de sessões
    CPTreino dos embeddingsreserva e negativos do mercado
    DBArmazém de vetores de anúncios
    CPVetor de anúncio novo
    CPAvaliação offline
  5. Um anúncio novo recebe o vetor médio de vizinhos geográficos próximos que já têm vetor, do mesmo tipo e da mesma faixa de preço.

    Diagrama da arquitetura: Treino dos embeddings de anúncios
    DBRegistro de cliques e reservas
    CPMontagem de sessões
    CPTreino dos embeddings
    DBArmazém de vetores de anúncios
    CPVetor de anúncio novomédia dos vizinhos
    CPAvaliação offline
  6. A avaliação offline ranqueia os candidatos por similaridade de cosseno com o anúncio clicado e observa a posição do anúncio reservado.

    Diagrama da arquitetura: Treino dos embeddings de anúncios
    DBRegistro de cliques e reservas
    CPMontagem de sessões
    CPTreino dos embeddings
    DBArmazém de vetores de anúncios
    CPVetor de anúncio novo
    CPAvaliação offlineposição do reservado

04 · SIMILARES NA PÁGINA

Servindo o carrossel de anúncios similares

Cada página de anúncio tem um carrossel de similares que recomenda anúncios parecidos e disponíveis para as mesmas datas. Na época do teste com embeddings, o algoritmo existente chamava o modelo principal de ranking da busca para o mesmo local e filtrava por faixa de preço e tipo.

Com os vetores, os similares de um anúncio vêm da similaridade de cosseno entre o vetor dele e os vetores de todos os anúncios do mesmo mercado disponíveis para as mesmas datas, quando check-in e check-out estão definidos. Os 12 de maior similaridade aparecem no carrossel.

No teste A/B, a solução baseada em vizinhos mais próximos no espaço de embeddings aumentou o CTR do carrossel em 21% e levou 4.9% mais hóspedes a descobrir, no carrossel, o anúncio que acabaram reservando.

  1. O diagrama começa pela página do anúncio.

    Diagrama da arquitetura: Carrossel de anúncios similares
    CLPágina do anúncio
    CPServiço de similares
    CPBusca de vizinhos por cosseno
    CHVetores em memória
    DBMercado e disponibilidade
    CPRanking principal (abordagem anterior)
  2. Cada página de anúncio tem um carrossel que recomenda anúncios parecidos e disponíveis para as mesmas datas.

    Diagrama da arquitetura: Carrossel de anúncios similares
    CLPágina do anúncio
    CPServiço de similarespede os similares
    CPBusca de vizinhos por cosseno
    CHVetores em memória
    DBMercado e disponibilidade
    CPRanking principal (abordagem anterior)
  3. Os similares vêm da similaridade de cosseno entre o vetor do anúncio e os vetores de todos os anúncios do mesmo mercado disponíveis nas mesmas datas.

    Diagrama da arquitetura: Carrossel de anúncios similares
    CLPágina do anúncio
    CPServiço de similares
    CPBusca de vizinhos por cossenocosseno
    CHVetores em memória
    DBMercado e disponibilidademesmo mercado e datas
    CPRanking principal (abordagem anterior)
  4. Os vetores ficam na memória das máquinas de busca, para cálculos de similaridade em tempo real.

    Diagrama da arquitetura: Carrossel de anúncios similares
    CLPágina do anúncio
    CPServiço de similares
    CPBusca de vizinhos por cosseno
    CHVetores em memóriavetores em RAM
    DBMercado e disponibilidade
    CPRanking principal (abordagem anterior)
  5. Os 12 anúncios de maior similaridade aparecem no carrossel; no teste A/B, o CTR do carrossel subiu 21%.

    Diagrama da arquitetura: Carrossel de anúncios similares
    CLPágina do anúncio
    CPServiço de similares
    CPBusca de vizinhos por cossenomaiores similaridades
    CHVetores em memória
    DBMercado e disponibilidade
    CPRanking principal (abordagem anterior)
  6. O algoritmo existente na época do teste chamava o ranking principal da busca para o mesmo local e filtrava por faixa de preço e tipo.

    Diagrama da arquitetura: Carrossel de anúncios similares
    CLPágina do anúncio
    CPServiço de similares
    CPBusca de vizinhos por cosseno
    CHVetores em memória
    DBMercado e disponibilidade
    CPRanking principal (abordagem anterior)algoritmo comparado

05 · PERSONALIZAÇÃO EM TEMPO REAL

Usando os vetores dentro do ranking da busca

Para cada usuário, a fonte mantém em tempo real, com Kafka, dois conjuntos de eventos recentes. Um guarda os anúncios clicados nas últimas 2 semanas. O outro guarda os ignorados, definidos como anúncios bem ranqueados que a pessoa pulou em favor de um clique em posição mais baixa.

A cada busca calculam-se 2 medidas de similaridade para cada candidato. EmbClickSim usa centroides por mercado dos anúncios clicados e escolhe a similaridade máxima; EmbSkipSim mede a similaridade com os anúncios ignorados.

As duas medidas entram como sinais adicionais no modelo de ranking de busca. Nos gráficos de dependência parcial, maior EmbClickSim leva a maior pontuação do modelo e maior EmbSkipSim leva a menor pontuação.

Nesta arquitetura, vale pensar em filas de mensagens para os eventos do usuário e em cache para o histórico recente.

  1. O diagrama começa pelo cliente de busca.

    Diagrama da arquitetura: Personalização em tempo real na busca
    CLCliente de busca
    QFluxo de eventos do usuário
    CHHistórico recente do usuário
    CPServiço de busca
    CPCálculo de similaridades
    CHVetores de anúncios
    CPModelo de ranking de busca
  2. Para cada usuário, a fonte mantém em tempo real, com Kafka, dois conjuntos de eventos recentes.

    Diagrama da arquitetura: Personalização em tempo real na busca
    CLCliente de busca
    QFluxo de eventos do usuárioKafka
    CHHistórico recente do usuáriodois conjuntos
    CPServiço de busca
    CPCálculo de similaridades
    CHVetores de anúncios
    CPModelo de ranking de busca
  3. Um conjunto guarda os anúncios clicados nas últimas 2 semanas; o outro guarda os ignorados, isto é, bem ranqueados mas pulados por um clique em posição mais baixa.

    Diagrama da arquitetura: Personalização em tempo real na busca
    CLCliente de busca
    QFluxo de eventos do usuário
    CHHistórico recente do usuárioclicados e ignorados
    CPServiço de busca
    CPCálculo de similaridades
    CHVetores de anúncios
    CPModelo de ranking de busca
  4. A cada busca calculam-se 2 medidas de similaridade para cada candidato: com os clicados, usando centroides por mercado e a similaridade máxima, e com os ignorados.

    Diagrama da arquitetura: Personalização em tempo real na busca
    CLCliente de busca
    QFluxo de eventos do usuário
    CHHistórico recente do usuário
    CPServiço de busca
    CPCálculo de similaridadesEmbClickSim e EmbSkipSim
    CHVetores de anúncios
    CPModelo de ranking de busca
  5. As duas similaridades entram como sinais adicionais no modelo de ranking de busca.

    Diagrama da arquitetura: Personalização em tempo real na busca
    CLCliente de busca
    QFluxo de eventos do usuário
    CHHistórico recente do usuário
    CPServiço de busca
    CPCálculo de similaridades
    CHVetores de anúncios
    CPModelo de ranking de buscasinais novos
  6. Os gráficos de dependência parcial mostraram que maior EmbClickSim eleva a pontuação e maior EmbSkipSim a reduz.

    Diagrama da arquitetura: Personalização em tempo real na busca
    CLCliente de busca
    QFluxo de eventos do usuário
    CHHistórico recente do usuário
    CPServiço de busca
    CPCálculo de similaridades
    CHVetores de anúncios
    CPModelo de ranking de buscacomportamento esperado

Depois de um experimento online bem-sucedido, o recurso foi lançado em produção no verão de 2017, segundo a fonte.

Perguntas frequentes

O que é Anúncios similares em plataformas de aluguel de temporada?

Projeto de entrevista clássico. Pontos centrais: item2vec por sessão, amostragem negativa, ANN e personalização em tempo real.

O que o design de Anúncios similares em plataformas de aluguel de temporada cobre?

Ele está organizado nestas seções: O problema: anúncios parecidos e busca personalizada, De cliques a vetores, Adaptando o treino ao marketplace, Servindo o carrossel de anúncios similares e Usando os vetores dentro do ranking da busca.

Quanto tempo leva Anúncios similares em plataformas de aluguel de temporada 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.