por Joel Bowen, Jacob Portes y Benjamin Chin
En Ibotta, nuestra misión es hacer que cada compra sea gratificante. Ayudar a nuestros usuarios (a quienes llamamos Savers) a encontrar y activar ofertas relevantes a través de nuestra aplicación directa al consumidor (D2C), extensión de navegador y sitio web es una parte fundamental de esta misión. Nuestra plataforma D2C ayuda a millones de compradores a obtener reembolsos (cashback) en sus compras diarias, ya sea desbloqueando ofertas de supermercado, obteniendo recompensas adicionales o planificando su próximo viaje. A través de la Ibotta Performance Network (IPN), también impulsamos programas de reembolso de marca blanca para algunos de los nombres más importantes del sector minorista, incluidos Walmart y Dollar General, ayudando a más de 2600 marcas a llegar a más de 200 millones de consumidores con ofertas digitales en todos los ecosistemas de socios.
Detrás de escena, nuestros equipos de Datos y Machine Learning impulsan experiencias fundamentales como la detección de fraudes, los motores de recomendación de ofertas y la relevancia de las búsquedas para que el recorrido de los Savers sea personalizado y seguro. A medida que seguimos creciendo, necesitamos sistemas inteligentes y basados en datos que respalden cada interacción en cada punto de contacto.
En D2C y la IPN, la búsqueda juega un papel fundamental en la interacción y debe mantener el ritmo de nuestra escala comercial, el contenido de ofertas en constante evolución y las cambiantes expectativas de los Savers.
En esta publicación, explicaremos cómo mejoramos significativamente nuestra experiencia de búsqueda D2C: desde un ambicioso proyecto de hackatón hasta una sólida función de producción que ahora beneficia a millones de Savers.
El comportamiento de búsqueda de los usuarios ha evolucionado de palabras clave simples a la incorporación de lenguaje natural, errores ortográficos y frases conversacionales. Los sistemas de búsqueda modernos deben cerrar la brecha entre lo que los usuarios escriben y lo que realmente quieren decir, interpretando el contexto y las relaciones para ofrecer resultados relevantes incluso cuando los términos de la consulta no coinciden exactamente con el contenido.
En Ibotta, nuestro sistema de búsqueda interno original a veces tenía dificultades para mantener el ritmo de las cambiantes expectativas de nuestros Savers, y reconocimos una oportunidad para mejorarlo.
Las áreas clave de oportunidad que identificamos incluyeron:
Creíamos que el sistema podía seguir mejor el ritmo del contenido cambiante de las ofertas, los comportamientos de búsqueda y las cambiantes expectativas de los Savers. Vimos oportunidades para aumentar el valor tanto para nuestros Savers como para nuestros socios de marca.
Abordar las limitaciones de nuestro sistema de búsqueda heredado requirió un esfuerzo enfocado. Esta iniciativa cobró un gran impulso durante un hackatón interno en el que un equipo multifuncional, que incluía miembros de Datos, Ingeniería, Análisis de Marketing y Machine Learning, se unió con la idea de crear un sistema de búsqueda alternativo y moderno utilizando Databricks AI Search, sobre el cual algunos miembros habían aprendido en el Databricks Data + AI Summit.
En solo tres días, nuestro equipo desarrolló una prueba de concepto funcional que ofreció resultados de búsqueda semánticamente relevantes. Así es como lo hicimos:
El proyecto del hackatón ganó el primer lugar, lo que generó un fuerte respaldo interno y el impulso para la transición del prototipo a un sistema de producción. En el transcurso de unos meses, y en estrecha colaboración con ingenieros e investigadores de Databricks, transformamos nuestro prototipo en un sistema de búsqueda de producción completo y robusto.
Llevar la prueba de concepto del hackatón a un sistema listo para producción requirió una iteración y pruebas cuidadosas. Esta fase fue fundamental no solo para la integración técnica y la optimización del rendimiento, sino también para evaluar si las mejoras previstas en el sistema se traducirían en cambios positivos en el comportamiento y la interacción de los Savers. Dado el papel esencial de la búsqueda y su profunda integración en los sistemas internos, optamos por el siguiente enfoque: modificamos un servicio interno clave que llamaba a nuestro sistema de búsqueda original, reemplazando esas llamadas con solicitudes dirigidas al punto de conexión de Databricks AI Search, al tiempo que incorporamos alternativas de respaldo (fallbacks) sólidas y graduales al sistema heredado.
La mayor parte de nuestro trabajo inicial se centró en comprender:
En el primer mes, realizamos una prueba con un pequeño porcentaje de nuestros Savers que no logró los resultados de interacción que esperábamos. La interacción disminuyó, especialmente entre nuestros Savers más activos, lo que se reflejó en una caída en los clics, los desbloqueos (cuando los Savers muestran interés en una oferta) y las activaciones.
Sin embargo, la solución de AI Search ofreció beneficios significativos, entre ellos:
Satisfechos con el rendimiento técnico subyacente del sistema, vimos su mayor flexibilidad como la ventaja clave necesaria para mejorar de forma iterativa la calidad de los resultados de búsqueda y superar los decepcionantes resultados de interacción.
Tras los resultados de nuestras pruebas iniciales, confiar únicamente en las pruebas A/B para las iteraciones de búsqueda era claramente ineficiente y poco práctico. La cantidad de variables que influyen en la calidad de la búsqueda era inmensa, incluidos los modelos de embeddings, las combinaciones de texto, la configuración de búsqueda híbrida, los umbrales de vecinos más cercanos aproximados (ANN), las opciones de reranking y muchas más.
Para navegar por esta complejidad y acelerar nuestro progreso, decidimos establecer un marco de evaluación sólido. Este marco debía adaptarse de manera única a nuestras necesidades comerciales específicas y ser capaz de predecir la interacción de los usuarios en el mundo real a partir de métricas de rendimiento fuera de línea (offline).
Nuestro marco se diseñó en torno a un entorno de evaluación sintético que realizaba un seguimiento de más de 50 métricas con conexión (online) y fuera de línea (offline). Fuera de línea, monitoreamos métricas estándar de recuperación de información como el rango recíproco medio (MRR) y precisión@k para medir la relevancia. Fundamentalmente, esto se combinó con señales de interacción en línea del mundo real, como los desbloqueos de ofertas y las tasas de clics. Una decisión clave fue implementar un LLM como juez (LLM-as-a-judge). Esto nos permitió etiquetar datos y asignar puntuaciones de calidad tanto a los pares de consulta-resultado en línea como a los resultados fuera de línea. Este enfoque demostró ser fundamental para una iteración rápida basada en métricas confiables y para recopilar los datos etiquetados necesarios para el futuro ajuste fino (fine-tuning) del modelo.
En el camino, nos apoyamos en múltiples partes de Databricks Data Intelligence Platform, que incluyen:
Este marco robusto aumentó drásticamente nuestra velocidad de iteración y confianza. Realizamos más de 30 iteraciones distintas, probando sistemáticamente cambios importantes en las variables de nuestra solución de AI Search, que incluyen:
El marco de evaluación transformó nuestro proceso de desarrollo, lo que nos permitió tomar decisiones basadas en datos rápidamente y validar posibles mejoras con gran confianza antes de exponerlas a los usuarios.
Tras la prueba inicial general que mostró resultados de interacción decepcionantes, cambiamos nuestro enfoque hacia la exploración del rendimiento de modelos específicos identificados como prometedores durante nuestra evaluación offline. Seleccionamos dos modelos de embedding de terceros para pruebas de producción, a los que accedimos de forma segura a través de AI Gateway. Realizamos pruebas iterativas a corto plazo en producción (que duraron unos pocos días) con estos modelos.
Satisfechos con los resultados iniciales, procedimos a realizar una prueba de producción más larga y exhaustiva, comparando nuestro modelo de terceros líder y su configuración optimizada con el sistema heredado. Esta prueba arrojó resultados mixtos. Aunque observamos mejoras generales en las métricas de interacción y eliminamos con éxito los impactos negativos observados anteriormente, estas ganancias fueron modestas, principalmente aumentos de un solo dígito porcentual. Estos beneficios incrementales no fueron lo suficientemente convincentes como para justificar plenamente un reemplazo completo de nuestra experiencia de búsqueda existente.
Sin embargo, lo más preocupante fue la información obtenida de nuestro análisis detallado: mientras que el rendimiento mejoró significativamente para ciertas consultas de búsqueda, otras mostraron peores resultados en comparación con nuestra solución heredada. Esta inconsistencia planteó un dilema arquitectónico importante. Nos enfrentamos a la poco atractiva opción de implementar un sistema complejo de división de tráfico para enrutar las consultas en función del rendimiento previsto (un enfoque que requeriría mantener dos experiencias de búsqueda distintas e introduciría una nueva y compleja capa de gestión de enrutamiento basada en reglas) o aceptar las limitaciones.
Este fue un momento crítico. Aunque habíamos visto suficientes promesas como para continuar, necesitábamos mejoras más significativas para justificar el reemplazo completo de nuestro sistema de búsqueda de desarrollo propio. Esto nos llevó a comenzar el ajuste fino.
Aunque los modelos de embedding de terceros explorados anteriormente mostraron promesa técnica y mejoras modestas en la interacción, también presentaron limitaciones críticas que eran inaceptables para una solución a largo plazo en Ibotta. Estas incluían:
El camino claro a seguir era ajustar un modelo específicamente adaptado a los datos de Ibotta y a las necesidades de nuestros Savers. Esto fue posible gracias a los millones de interacciones de búsqueda etiquetadas que habíamos acumulado de usuarios reales a través de nuestro proceso de LLM como juez dentro de nuestro marco de evaluación personalizado. Estos datos de producción de alta calidad se convirtieron en nuestro oro para el entrenamiento.
Luego nos embarcamos en un proceso metódico de ajuste fino, aprovechando ampliamente nuestro marco de evaluación offline.
Los elementos clave fueron:
Después de numerosas iteraciones y evaluaciones dentro del marco, nuestro modelo ajustado de mejor rendimiento superó nuestra mejor línea base de terceros en un 20% en la evaluación sintética. Estos convincentes resultados offline proporcionaron la confianza necesaria para acelerar nuestra próxima prueba de producción.
El rigor técnico y el proceso iterativo dieron sus frutos. Diseñamos una solución de búsqueda específicamente optimizada para el catálogo de ofertas único de Ibotta y los patrones de comportamiento de los usuarios, ofreciendo resultados que superaron nuestras expectativas y brindando la flexibilidad necesaria para evolucionar junto con nuestro negocio. Basándonos en estos sólidos resultados, aceleramos la migración a Databricks AI Search como base para nuestro sistema de búsqueda en producción.
En nuestra prueba de producción final, utilizando nuestro propio modelo de embedding ajustado, observamos las siguientes mejoras:
Más allá de las ganancias de cara al usuario, el nuevo sistema cumplió con el rendimiento. Observamos una latencia un 60% menor en nuestro sistema de búsqueda, atribuible al rendimiento de las consultas de AI Search y a la menor sobrecarga del modelo ajustado.
Aprovechando la flexibilidad de esta nueva base, también creamos mejoras potentes como Query Transformation (enriquecimiento de consultas vagas) y Multi-Search (desglose de términos genéricos). La combinación de un modelo central altamente relevante, un mejor rendimiento del sistema y mejoras inteligentes en las consultas ha dado como resultado una experiencia de búsqueda que es más inteligente, más rápida y, en última instancia, más gratificante.
Un desafío de los modelos de embedding es su comprensión limitada de palabras clave de nicho, como las marcas emergentes. Para solucionar esto, creamos una capa de transformación de consultas que enriquece dinámicamente los términos de búsqueda sobre la marcha en función de reglas predefinidas.
Por ejemplo, si un usuario busca una marca emergente de yogur que el modelo de embedding podría no reconocer, podemos transformar la consulta para añadir "Greek yogurt" junto al nombre de la marca antes de enviarla a AI Search. Esto proporciona al modelo de embedding el contexto de producto necesario, al tiempo que conserva el texto original para la búsqueda híbrida.
Esta capacidad también funciona de la mano con nuestro proceso de ajuste fino. Las transformaciones exitosas se pueden utilizar para generar datos de entrenamiento; por ejemplo, incluir el nombre original de la marca como consulta y los productos de yogur relevantes como resultados positivos en una futura ejecución de entrenamiento ayuda al modelo a aprender estas asociaciones específicas.
Para búsquedas amplias y genéricas como "bebé", AI Search podría devolver inicialmente un número limitado de candidatos, potencialmente filtrados aún más por la segmentación y la gestión del presupuesto. Para abordar esto y aumentar la diversidad de los resultados, creamos una capacidad de Multi-Search que despliega un único término de búsqueda en múltiples búsquedas relacionadas.
En lugar de buscar solo "bebé", nuestro sistema ejecuta automáticamente búsquedas en paralelo para términos como "comida para bebés", "ropa para bebés", "medicamentos para bebés", "pañales para bebés", etc. Debido a la baja latencia de AI Search, podemos ejecutar varias búsquedas en paralelo sin aumentar el tiempo de respuesta general para el usuario. Esto proporciona un conjunto mucho más amplio y diverso de resultados relevantes para búsquedas de categorías de gran alcance.
Tras el éxito de la prueba final de producción y el despliegue completo de Databricks AI Search para nuestra base de usuarios (lo que generó resultados de interacción positivos, una mayor flexibilidad y potentes herramientas de búsqueda como Query Transformation y Multi-Search), este recorrido del proyecto dejó varias lecciones valiosas:
Con nuestro modelo de embedding ajustado ya activo en todos los canales directos al consumidor (D2C), nuestro siguiente plan es explorar la escala de esta solución a la red Ibotta Performance Network (IPN). Esto llevaría un descubrimiento de ofertas mejorado a millones de compradores más en toda nuestra red de editores. A medida que continuamos recopilando datos etiquetados y refinando nuestros modelos a través de Databricks, creemos que estamos bien posicionados para evolucionar la experiencia de búsqueda junto con las necesidades de nuestros socios y las expectativas de sus clientes.
Este viaje desde un proyecto de hackatón hasta un sistema de producción demostró que reimaginar rápidamente una experiencia de producto principal es alcanzable con las herramientas y el soporte adecuados. Databricks fue fundamental para ayudarnos a avanzar rápido, realizar el ajuste fino de manera efectiva y, en última instancia, hacer que cada búsqueda sea más gratificante para nuestros Savers.
(Esta entrada del blog ha sido traducida utilizando herramientas basadas en inteligencia artificial) Publicación original
Suscríbete a nuestro blog y recibe las últimas publicaciones directamente en tu bandeja de entrada.