Ir para o conteúdo principal

Tornando Cada Busca Recompensadora: Como a Ibotta Transformou a Descoberta de Ofertas com Databricks

Making Every Search Rewarding: How Ibotta Transformed Offer Discovery With Databricks

Published: June 18, 2025

Clientes15 min de leitura

Summary

  • A Ibotta reformulou sua experiência de pesquisa usando a Pesquisa Vetorial Databricks, passando de um protótipo de hackathon para um sistema de produção.
  • A nova solução melhorou os desbloqueios de oferta em quase 15%, aumentou o engajamento de bônus e reduziu as buscas com zero resultado em mais de 70%.
  • Um framework de avaliação personalizado e modelos de incorporação ajustados permitiram uma iteração rápida, maior relevância e uma experiência mais gratificante para milhões de usuários.

Na Ibotta, nossa missão é Tornar Cada Compra Recompensadora. Ajudar nossos usuários (que chamamos de Economizadores) a encontrar e ativar ofertas relevantes por meio de nosso aplicativo direto ao consumidor (D2C), extensão de navegador e site é uma parte crítica dessa missão. Nossa plataforma D2C ajuda milhões de compradores a ganhar cashback de suas compras diárias - seja desbloqueando ofertas de supermercado, ganhando recompensas bônus ou planejando sua próxima viagem. Através da Rede de Desempenho Ibotta (IPN), também alimentamos programas de cashback de marca branca para alguns dos maiores nomes do varejo, incluindo Walmart e Dollar General, ajudando mais de 2.600 marcas a alcançar mais de 200 milhões de consumidores com ofertas digitais em ecossistemas parceiros.

Nos bastidores, nossas equipes de Dados e Aprendizado de Máquina alimentam experiências críticas como detecção de fraude, motores de recomendação de ofertas e relevância de pesquisa para tornar a jornada do usuário personalizada e segura. À medida que continuamos a escalar, precisamos de sistemas inteligentes orientados por dados que suportem cada interação em todos os pontos de contato.

Tanto no D2C quanto no IPN, a busca desempenha um papel fundamental no engajamento e precisa acompanhar o ritmo de nossa escala de negócios, a evolução do conteúdo da oferta e as mudanças nas expectativas dos usuários.

Neste post, vamos explicar como refinamos significativamente nossa experiência de busca no D2C: de um projeto ambicioso de hackathon para um recurso de produção robusto que agora beneficia milhões de usuários.

Acreditávamos que nossa busca poderia acompanhar melhor nossos Economizadores

O comportamento de pesquisa do usuário evoluiu de palavras-chave simples para incorporar linguagem natural, erros de digitação e frases conversacionais. Os sistemas de pesquisa modernos devem preencher a lacuna entre o que os usuários digitam e o que realmente querem dizer, interpretando contexto e relações para entregar resultados relevantes mesmo quando os termos da consulta não correspondem exatamente ao conteúdo.

Na Ibotta, nosso sistema de busca original, às vezes, lutava para acompanhar as expectativas em constante evolução de nossos Economizadores e reconhecemos uma oportunidade para refiná-lo.

As principais áreas de oportunidade que vimos incluíam:

  • Melhorando a relevância semântica: Focando em entender a intenção do usuário em vez de correspondências exatas de palavras-chave para conectá-los com as ofertas certas.
  • Melhorando a compreensão: Interpretando a total nuance e contexto das consultas do usuário para fornecer resultados mais abrangentes e verdadeiramente relevantes.
  • Aumentando a flexibilidade: Integrando mais rapidamente novos tipos de ofertas e adaptando-se às mudanças nos padrões de pesquisa do Saver para manter nossa experiência de descoberta gratificante.
  • Aumentando a descoberta: Queríamos ferramentas mais robustas para garantir que tipos específicos de ofertas ou promoções-chave fossem consistentemente visíveis em uma ampla gama de consultas de pesquisa relevantes.
  • Acelerando iteração e otimização: Permitindo melhorias mais rápidas e impactantes na experiência de busca através de ajustes em tempo real e ajuste de desempenho.

Acreditávamos que o sistema poderia acompanhar melhor o conteúdo da oferta em mudança, comportamentos de busca e expectativas do Economizador em evolução. Vimos oportunidades para aumentar o valor tanto para nossos Economizadores quanto para nossos parceiros de marca.

Do hackathon à produção: reimaginando a pesquisa com Databricks

Abordar as limitações do nosso sistema de pesquisa legado exigiu um esforço focado. Esta iniciativa ganhou impulso significativo durante um hackathon interno onde uma equipe multifuncional, incluindo membros de Dados, Engenharia, Análise de Marketing e Aprendizado de Máquina, se uniu com a ideia de construir um sistema de pesquisa alternativo moderno usando Databricks Vector Search, que alguns membros haviam aprendido no Databricks Data + AI Summit.

Em apenas três dias, nossa equipe desenvolveu uma prova de conceito funcional que entregou resultados de busca semanticamente relevantes. Veja como fizemos isso:

  1. Coletamos conteúdo de oferta de várias fontes em nosso catálogo Databricks
  2. Criamos um endpoint e índice de Pesquisa Vetorial com o Python SDK
  3. Usado endpoints de incorporação pay-per-token com quatro modelos diferentes (BGE grande, GTE grande, GTE pequeno, um modelo de código aberto multilíngue e um modelo específico para o idioma espanhol)
  4. Conectamos tudo ao nosso site para uma demonstração ao vivo

O projeto do hackathon ganhou o primeiro lugar, gerou forte adesão interna e impulso para transformar o protótipo em um sistema de produção. Ao longo de alguns meses, e com a estreita colaboração da equipe da Databricks, transformamos nosso protótipo em um robusto sistema de busca de produção completo.

Da prova de conceito à produção

Mover a prova de conceito do hackathon para um sistema pronto para produção exigiu iteração e teste cuidadosos. Esta fase foi crítica não apenas para a integração técnica e ajuste de desempenho, mas também para avaliar se as melhorias previstas em nosso sistema se traduziriam em mudanças positivas no comportamento e engajamento do usuário. Dado o papel essencial da busca e sua profunda integração em sistemas internos, optamos pela seguinte abordagem: modificamos um serviço interno chave que chamava nosso sistema de busca original, substituindo essas chamadas por solicitações direcionadas ao endpoint de Busca Vetorial do Databricks, enquanto construíamos robustas e elegantes soluções alternativas para o sistema legado.

A maior parte do nosso trabalho inicial focou em entender:

No primeiro mês, realizamos um teste com uma pequena porcentagem de nossos Poupadores que não alcançou os resultados de engajamento que esperávamos. O engajamento diminuiu, principalmente entre nossos usuários mais ativos, indicado por uma queda nos cliques, desbloqueios (quando os usuários expressam interesse em uma oferta) e ativações.

No entanto, a solução de Pesquisa Vetorial ofereceu benefícios significativos, incluindo:

  • Tempos de resposta mais rápidos
  • Um modelo mental mais simples
  • Maior flexibilidade na forma como indexamos os dados
  • Novas habilidades para ajustar os limites e alterar o texto de incorporação

Satisfeitos com o desempenho técnico subjacente do sistema, vimos sua maior flexibilidade como a principal vantagem necessária para melhorar iterativamente a qualidade dos resultados da pesquisa e superar os resultados de engajamento decepcionantes.

Construção de um framework de avaliação semântica

Após nossos resultados iniciais de teste, ficou claro que confiar apenas em testes A/B para iterações de pesquisa era claramente ineficiente e impraticável. O número de variáveis que influenciam a qualidade da busca era imenso - incluindo modelos de incorporação, combinações de texto, configurações de busca híbrida, limiares de Vizinhos Mais Próximos Aproximados (ANN), opções de reclassificação e muito mais.

Para navegar nessa complexidade e acelerar nosso progresso, decidimos estabelecer um robusto framework de avaliação. Este framework precisava ser exclusivamente adaptado às nossas necessidades de negócios específicas e capaz de prever o engajamento do usuário no mundo real a partir de métricas de desempenho offline.

Nosso framework foi projetado em torno de um ambiente de avaliação sintética que rastreou mais de 50 métricas online e offline. Offline, monitoramos métricas padrão de recuperação de informações como Mean Reciprocal Rank (MRR) e precisão@k para medir a relevância. Crucialmente, isso foi combinado com sinais de engajamento no mundo real, como desbloqueios de ofertas e taxas de cliques. Uma decisão chave foi implementar um LLM como juiz. Isso nos permitiu rotular dados e atribuir pontuações de qualidade tanto para pares de consulta-resultado online quanto para saídas offline. Esta abordagem provou ser crítica para a rápida iteração com base em métricas confiáveis e coleta dos dados rotulados necessários para o ajuste fino do modelo futuro.

Ao longo do caminho, nos aprofundamos em várias partes da Plataforma de Inteligência de Dados do Databricks, incluindo:

  • Pesquisa Vetorial Mosaic AI: Usada para alimentar resultados de pesquisa de alta precisão e semanticamente ricos para testes de avaliação.
  • Padrões MLflow e LLM-como-juiz: Fornecemos os padrões para avaliar as saídas do modelo e implementar nosso processo de rotulagem de dados.
  • Pontos de extremidade de serviço de modelo: Implantação eficiente de modelos diretamente do nosso catálogo.
  • AI Gateway: Para garantir e governar nosso acesso a modelos de terceiros via API.
  • Catálogo Unity: Garantiu a organização, gestão e governança de todos os conjuntos de dados utilizados no framework de avaliação.

Este robusto framework aumentou dramaticamente nossa velocidade e confiança na iteração. Realizamos mais de 30 iterações distintas, testando sistematicamente grandes mudanças de variáveis em nossa solução de Busca Vetorial, incluindo:

  • Diferentes modelos de incorporação (fundamentais, pesos abertos e terceiros via API)
  • Várias combinações de texto para alimentar os modelos
  • Diferentes modos de consulta (ANN vs Hybrid)
  • Testando diferentes colunas para pesquisa de texto híbrido
  • Ajustando os limites para similaridade de vetor
  • Experimentando com índices separados para diferentes tipos de oferta

O framework de avaliação transformou nosso processo de desenvolvimento, permitindo-nos tomar decisões baseadas em dados rapidamente e validar melhorias potenciais com alta confiança antes de expô-las aos usuários.

A busca pelo melhor modelo de prateleira

Após o primeiro teste amplo que mostrou resultados de engajamento decepcionantes, mudamos nosso foco para explorar o desempenho de modelos específicos identificados como promissores durante nossa avaliação offline. Selecionamos dois modelos de incorporação de terceiros para testes de produção, acessados de forma segura através do AI Gateway. Realizamos testes iterativos de curto prazo em produção (durando alguns dias) com esses modelos.

Satisfeitos com os resultados iniciais, prosseguimos para executar um teste de produção mais longo e abrangente, comparando nosso modelo de terceiros líder e sua configuração otimizada contra o sistema legado. Este teste produziu resultados mistos. Embora tenhamos observado melhorias gerais nas métricas de engajamento e eliminado com sucesso os impactos negativos vistos anteriormente, esses ganhos foram modestos - na maioria das vezes, aumentos percentuais de um dígito. Esses benefícios incrementais não foram suficientes para justificar completamente a substituição de nossa experiência de pesquisa existente.

Mais preocupante, no entanto, foi o insight obtido a partir de nossa análise granular: enquanto o desempenho melhorou significativamente para certas consultas de busca, outras tiveram resultados piores em comparação com nossa solução legada. Essa inconsistência apresentou um dilema arquitetônico significativo. Enfrentamos a escolha desagradável de implementar um sistema complexo de divisão de tráfego para rotear consultas com base no desempenho previsto - uma abordagem que exigiria a manutenção de duas experiências de busca distintas e introduziria uma nova camada complexa de gerenciamento de roteamento baseado em regras - ou aceitar as limitações.

Este foi um ponto crítico. Embora tivéssemos visto promessa suficiente para continuar, precisávamos de melhorias mais significativas para justificar a substituição total de nosso sistema de pesquisa caseiro. Isso nos levou a começar o ajuste fino.

Ajuste fino: personalizando o comportamento do modelo

Embora os modelos de incorporação de terceiros explorados anteriormente mostrassem promessa técnica e melhorias modestas no engajamento, eles também apresentavam limitações críticas que eram inaceitáveis para uma solução de longo prazo na Ibotta. Isso inclui:

  1. Incapacidade de treinar modelos de incorporação em nosso catálogo de ofertas proprietário
  2. Dificuldade em evoluir modelos juntamente com mudanças de negócios e conteúdo
  3. Incerteza em relação à disponibilidade de API a longo prazo de provedores externos
  4. A necessidade de estabelecer e gerenciar novas relações comerciais externas
  5. As chamadas de rede para esses provedores não eram tão performáticas quanto os modelos hospedados por nós mesmos

O caminho claro a seguir era ajustar um modelo especificamente adaptado aos dados da Ibotta e às necessidades de nossos usuários. Isso foi possível graças aos milhões de interações de pesquisa rotuladas que acumulamos de usuários reais por meio de nosso processo LLM-as-a-judge dentro de nosso framework de avaliação personalizado. Esses dados de produção de alta qualidade se tornaram nosso ouro de treinamento.

Em seguida, embarcamos em um processo de ajuste metódico, aproveitando amplamente nosso framework de avaliação offline.

Os elementos-chave foram:

  • Infraestrutura: Usamos AI Runtime com A10s em um ambiente sem servidor, e Databricks ML Runtime para varredura sofisticada de hiperparâmetros.
  • Seleção de modelo: Selecionamos um modelo da família BGE em vez de GTE, que demonstrou um desempenho mais forte em nossas avaliações offline e provou ser mais eficiente para treinar.
  • Engenharia de conjunto de dados: Construímos vários conjuntos de dados de treinamento, incluindo a geração de dados de treinamento sintéticos, finalmente optando por:
    • Um resultado positivo (uma boa correspondência verificada a partir de pesquisas reais)
    • ~10 exemplos negativos por positivo, combinando:
      • 3-4 "negativos difíceis" (rotulados pelo LLM, incompatibilidades verificadas pelo humano)
      • "Negativos em lote" (amostragem de resultados de termos de busca não relacionados)
  • Otimização de hiperparâmetros: Varremos sistematicamente coisas como taxa de aprendizado, tamanho do lote, duração e estratégias de amostragem negativa para encontrar configurações ótimas.

Após inúmeras iterações e avaliações dentro do framework, nosso modelo ajustado de melhor desempenho superou nossa melhor linha de base de terceiros em 20% na avaliação sintética. Esses resultados offline convincentes forneceram a confiança necessária para acelerar nosso próximo teste de produção.

Busca que gera resultados - e receita

O rigor técnico e o processo iterativo valeram a pena. Projetamos uma solução de busca especificamente otimizada para o catálogo de ofertas único da Ibotta e padrões de comportamento do usuário, entregando resultados que superaram nossas expectativas e ofereceram a flexibilidade necessária para evoluir juntamente com nosso negócio. Com base nesses resultados sólidos, aceleramos a migração para o Databricks Vector Search como a base para nosso sistema de busca em produção.

Em nosso teste de produção final, usando nosso próprio modelo de incorporação ajustado, observamos as seguintes melhorias:

  • 14,8% mais desbloqueios de ofertas na busca.
    Isso mede os usuários selecionando ofertas a partir dos resultados da pesquisa, indicando melhor qualidade e relevância dos resultados. Mais desbloqueios são um indicador líder de resgates e receita a jusante.
  • Aumento de 6% nos usuários engajados.
    Isso mostra uma maior parcela de usuários encontrando valor e tomando ações significativas dentro da experiência de pesquisa, contribuindo para a melhoria da conversão, retenção e valor ao longo da vida.
  • Aumento de 15% no engajamento em bônus.
    Isso reflete a melhoria na apresentação de conteúdo patrocinado de alto valor, traduzindo-se diretamente em melhor desempenho e ROI para nossos parceiros de marca e varejo.
  • Redução de 72,6% nas buscas com zero resultados.
    A redução significativa significa menos experiências frustrantes e uma grande melhoria na cobertura de pesquisa semântica.
  • 60,9% menos usuários encontrando pesquisas que não retornam resultados.
    Isso destaca o impacto amplo, mostrando que uma grande parte de nossa base de usuários agora está consistentemente encontrando resultados, melhorando a experiência em geral.

Além dos ganhos voltados para o usuário, o novo sistema entregou em desempenho. Vimos uma latência 60% menor em nosso sistema de busca, atribuível ao desempenho da consulta Vector Search e à menor sobrecarga do modelo ajustado.

Aproveitando a flexibilidade dessa nova base, também construímos melhorias poderosas como Transformação de Consulta (enriquecendo consultas vagas) e Multi-Busca (expandindo termos genéricos). A combinação de um modelo central altamente relevante, melhor desempenho do sistema e melhorias inteligentes na consulta resultou em uma experiência de pesquisa mais inteligente, rápida e, em última análise, mais gratificante

Transformação de Consulta

Um desafio com os modelos de incorporação é o entendimento limitado de palavras-chave de nicho, como marcas emergentes. Para resolver isso, construímos uma camada de transformação de consulta que enriquece dinamicamente os termos de busca em voo com base em regras predefinidas.

Por exemplo, se um usuário busca por uma marca emergente de iogurte que o modelo de incorporação pode não reconhecer, podemos transformar a consulta para adicionar "iogurte grego" ao lado do nome da marca antes de enviá-la para a Vector Search. Isso fornece ao modelo de incorporação o contexto do produto necessário, enquanto preserva o texto original para a busca híbrida.

Essa capacidade também funciona em conjunto com nosso processo de ajuste fino. Transformações bem-sucedidas podem ser usadas para gerar dados de treinamento; por exemplo, incluir o nome original da marca como uma consulta e os produtos de iogurte relevantes como resultados positivos em uma futura execução de treinamento ajuda o modelo a aprender essas associações específicas.

Multi-Pesquisa

Para buscas amplas e genéricas como "bebê", a Busca Vetorial pode inicialmente retornar um número limitado de candidatos, potencialmente filtrados ainda mais por direcionamento e gerenciamento de orçamento. Para resolver isso e aumentar a diversidade de resultados, construímos uma capacidade de multi-busca que expande um único termo de busca em várias buscas relacionadas.

Em vez de apenas procurar por "bebê", nosso sistema automaticamente executa pesquisas paralelas para termos como "comida de bebê", "roupa de bebê", "remédio para bebê", "fraldas para bebê", e assim por diante. Devido à baixa latência da Busca por Vetor, podemos executar várias buscas em paralelo sem aumentar o tempo de resposta geral para o usuário. Isso fornece um conjunto de resultados relevantes muito mais amplo e diversificado para buscas de categoria ampla.

Lições Aprendidas

Após o teste de produção final bem-sucedido e a implementação completa do Vector Search do Databricks para nossa base de usuários - entregando resultados positivos de engajamento, maior flexibilidade e ferramentas de busca poderosas como Transformação de Consulta e Multi-Busca - esta jornada de projeto rendeu várias lições valiosas:

  1. Comece com uma prova de conceito: A abordagem inicial do hackathon nos permitiu validar rapidamente o conceito central com um investimento inicial mínimo.
  2. Meça o que importa para você: Nosso framework de avaliação personalizado de 50 métricas foi crucial; ele nos deu confiança de que as melhorias observadas offline se traduziriam em impacto nos negócios, permitindo-nos evitar testes ao vivo repetidos até que as soluções fossem realmente promissoras.
  3. Não vá direto para o ajuste fino: Aprendemos o valor de avaliar completamente os modelos prontos e esgotar essas opções antes de investir no maior esforço necessário para o ajuste fino.
  4. Colete dados cedo: Começar a rotular os dados do nosso segundo experimento garantiu que um conjunto de dados rico e proprietário estivesse pronto quando o ajuste fino se tornasse necessário.
  5. Colaboração acelera o progresso: Parceria próxima com engenheiros e pesquisadores da Databricks, compartilhando insights sobre Busca Vetorial, modelos de incorporação, padrões LLM-como-juiz e abordagens de ajuste fino, acelerou significativamente nosso progresso.
  6. Reconheça o impacto cumulativo: Cada otimização individual, mesmo que aparentemente menor, contribuiu significativamente para a transformação geral de nossa experiência de busca.

O que vem a seguir

Com nosso modelo de incorporação ajustado agora ao vivo em todos os canais diretos ao consumidor (D2C), planejamos explorar a escala dessa solução para a Ibotta Performance Network (IPN). Isso traria uma descoberta de oferta melhorada para milhões de compradores a mais em nossa rede de editores. À medida que continuamos a coletar dados rotulados e refinamos nossos modelos por meio do Databricks, acreditamos que estamos bem posicionados para evoluir a experiência de busca junto com as necessidades de nossos parceiros e as expectativas de seus clientes.

Esta jornada de um projeto de hackathon para um sistema de produção provou que reimaginar uma experiência de produto central rapidamente é alcançável com as ferramentas e suporte certos. A Databricks foi fundamental para nos ajudar a mover rápido, ajustar efetivamente e, finalmente, tornar cada busca mais recompensadora para nossos Economizadores.

 

(This blog post has been translated using AI-powered tools) Original Post

Nunca perca uma postagem da Databricks

Inscreva-se nas categorias de seu interesse e receba as últimas postagens na sua caixa de entrada

O que vem a seguir?