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.
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:
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.
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:
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.
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:
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.
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:
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:
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.
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.
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:
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:
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.
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:
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
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.
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.
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:
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