VIPSHOP crea un sistema de recomendación personalizado 10 veces más rápido usando Milvus

Velocidad de consulta 10 veces más rápida
que la solución anterior de Elasticsearch
Tiempo de respuesta <30 ms
para buscar en millones de vectores
Experiencia de usuario optimizada
con recomendaciones más precisas basadas en los comportamientos de compra de los usuarios
Milvus-powered vector search has been running steadily in our recommendation systems, providing high performance and allowing us more flexibility in selecting models and algorithms.
VIPSHOP Search Service Team
Acerca de VIPSHOP
VIPSHOP es un reconocido minorista en línea que cotiza en la Bolsa de Nueva York y tiene su sede en China, especializado en ofrecer productos de marcas populares a consumidores con importantes descuentos. Su diversa gama de productos incluye moda, ropa, accesorios, productos de belleza, artículos para el hogar y electrónica. Con una asombrosa base de clientes de más de 52 millones y gestionando casi 270 millones de pedidos anualmente, VIPSHOP se ha ganado su lugar como la entrada número 115 en la prestigiosa lista China 500 de Fortune.
Desafíos: Alta latencia y costos de mantenimiento crecientes al usar Elasticsearch
Con el rápido crecimiento de su negocio, VIPSHOP se enfrentó a un dilema común: a medida que se ampliaba su cartera de productos, también aumentaba la complejidad de ayudar a los usuarios a descubrir lo que estaban buscando. Para abordar este problema, VIPSHOP creó un sistema de recomendaciones personalizadas basado en palabras clave de consulta de los usuarios y en los comportamientos de compra de los usuarios.
Anteriormente, el equipo de VIPSHOP utilizaba las capacidades de Cosine Similarity(7.x) de Elasticsearch para impulsar el sistema de recomendaciones. Sin embargo, este enfoque era ineficiente por dos razones:
Alta latencia en la búsqueda vectorial: Un promedio de alrededor de 300 ms para recuperar resultados Top-K de millones de vectores, lo que resultaba en segundos para el tiempo de respuesta general del sistema.
Altos costos de mantenimiento de los índices de Elasticsearch: Los vectores derivados de productos, comportamientos de compra de los consumidores y todos los demás datos compartían el mismo conjunto de índices, lo que hacía que la construcción, operación y mantenimiento de los índices fueran mucho más complicados.
VIPSHOP intentó mejorar el rendimiento de Elasticsearch desarrollando un plugin de hashing sensible a la localidad. Sin embargo, solo mejoró el rendimiento de procesamiento y no logró reducir el tiempo de búsqueda vectorial por debajo de 100 ms. Por lo tanto, el equipo seguía necesitando urgentemente una nueva pila de búsqueda vectorial para mejorar el rendimiento de su sistema.
La solución de Milvus
Tras una investigación exhaustiva, el equipo de VIPSHOP optó por Milvus, una base de datos vectorial de código abierto capaz de gestionar miles de millones de embeddings vectoriales y ofrecer respuestas ultrarrápidas. Milvus también ofrece numerosas funciones, como despliegue distribuido, SDK multilingües y separación de lectura/escritura, lo que lo convierte en una opción superior a Elasticsearch y a muchas otras soluciones de búsqueda vectorial como FAISS.
La arquitectura del sistema de recomendaciones de VIPSHOP usando Milvus
El diagrama anterior muestra la arquitectura del sistema de recomendaciones de VIPSHOP con Milvus. Consta de dos partes principales:
Proceso de escritura: el equipo de VIPSHOP utilizó un modelo de aprendizaje profundo para transformar las características de cada producto en embeddings vectoriales y luego las importó a Milvus a través de MySQL y una herramienta ETL.
Proceso de lectura: el equipo utilizó el modelo de aprendizaje profundo para transformar las consultas y comportamientos de compra de los consumidores en vectores y luego recuperó resultados similares en Milvus. Milvus realizó una búsqueda de similitud y devolvió a los consumidores los resultados Top-K más relevantes.
Detalles de implementación de Milvus: actualización y recuperación de datos
La actualización y recuperación de datos son los procesos más esenciales para el sistema de recomendaciones impulsado por Milvus.
El procedimiento de actualización de datos garantiza la sincronización de los datos, abarcando tareas como la escritura de datos vectoriales, la detección de volúmenes de datos vectoriales, la construcción de índices, la precarga de índices y la gestión de alias. Comienza con comprobaciones de datos de productos, asegurando que la cantidad en MySQL se alinee con los datos existentes. Luego sigue todo el proceso de construcción de datos, incluida la inicialización de alias en Redis, la creación de nuevas colecciones, la escritura de vectores por lotes y la precarga del índice en Milvus. Después de verificar los datos de la nueva colección, el sistema cambia sin problemas los alias entre múltiples colecciones de datos.
El proceso de recuperación, crucial para recomendar productos, implica adquirir vectores relacionados con las consultas y los comportamientos de compra de los consumidores, calcular su distancia y fusionar los resultados. Al utilizar Milvus, el sistema recupera datos de forma concurrente y asíncrona en diferentes particiones de Milvus, calcula las similitudes vectoriales y clasifica los principales resultados en función de la distancia de similitud. Luego, después de múltiples llamadas a los datos de particiones de Milvus, presenta los resultados finales de recomendación a los usuarios. El flujo de trabajo general es el siguiente:
La siguiente tabla muestra el rendimiento de tres servicios principales de Milvus. Como se muestra en la tabla, la latencia promedio para recuperar resultados Top-K es de alrededor de 10ms.
| Servicio | Rol | Parámetros de entrada | Parámetros de salida | Latencia de respuesta |
|---|---|---|---|---|
| Adquisición de vectores de usuario | Obtener vector de usuario | información de usuario + consulta | vector de usuario | 10 ms |
| Milvus Search | Calcular la similitud vectorial y devolver resultados Top-K | vector de usuario | vector de elemento | 10 ms |
| Lógica de programación | Recuperación y fusión de resultados concurrentes | Vectores de elementos recuperados multicanal y la puntuación de similitud | Elementos Top-K | 10 ms |
Resultados: mejor rendimiento del sistema y experiencia de usuario óptima
La adopción de Milvus en el sistema de recomendación de VIPSHOP mejoró significativamente el rendimiento general del sistema, incluyendo:
Velocidad de consulta 10 veces más rápida
Con Milvus, el tiempo de consulta y respuesta del sistema se ha reducido a menos de 30ms, 10 veces más rápido que la solución anterior de Elasticsearch.
Escalabilidad del sistema mejorada
La implementación distribuida de Milvus y el soporte para escalado horizontal permiten que el sistema de recomendación gestione sin esfuerzo volúmenes de datos y consultas de usuarios en rápido aumento sin comprometer el rendimiento.
Experiencia de usuario mejorada
Milvus optimiza el proceso de recomendación para proporcionar sugerencias de productos personalizadas basadas en las preferencias del usuario y la intención de búsqueda, mejorando la satisfacción y el compromiso del usuario.
Costos de mantenimiento reducidos
Milvus gestiona eficientemente los datos vectoriales y optimiza los mecanismos de consulta, reduciendo los costos generales de mantenimiento del sistema de recomendación.
Lecciones aprendidas y prácticas recomendadas
En su recorrido con Milvus, el equipo de VIPSHOP aprendió algunas lecciones y obtuvo varias perspectivas cruciales para un rendimiento óptimo del sistema y una buena experiencia de usuario:
En situaciones donde las operaciones de lectura tienen prioridad, adoptar una estrategia de implementación con separación de lectura y escritura puede mejorar el rendimiento general del sistema.
El cliente Java de Milvus carece de un mecanismo de reconexión integrado debido a su residencia en memoria en el servicio de recuperación. El equipo de VIPSHOP creó su propio grupo de conexiones para garantizar una conectividad constante entre el cliente Java y el servidor mediante una prueba de latido.
Ocasionalmente se producen consultas lentas en Milvus debido a un calentamiento insuficiente de las nuevas colecciones. Para abordar este problema, el equipo de VIPSHOP simuló consultas en la nueva colección.
Para lograr el equilibrio adecuado entre el rendimiento de recuperación y la precisión, el equipo de VIPSHOP recomienda realizar rigurosos experimentos de pruebas de presión adaptados a su escenario de negocio específico y establecer un valor umbral razonable para optimizar estos parámetros.
En escenarios que involucran datos estáticos, es más eficiente importar primero todos los datos a la colección y crear los índices después.


