Optimización de la IA conversacional en FARFETCH

15x
tiempo de indexación más rápido
5x
tiempo de consulta más rápido
Mayor conversión
mediante recomendaciones de productos más pertinentes
Múltiples tipos de métricas
para apoyar diversos casos de uso
Milvus consistently outperformed Weaviate, emphasizing the indexing time for scenario S9, closely resembling the FARFETCH product catalog's dimensions.
PEDRO MOREIRA COSTA
Acerca de FARFETCH
FARFETCH, líder en la venta de moda online, está ampliando los límites de la compra digital con su última innovación, iFetch. Este sistema de IA conversacional está diseñado para trasladar al ámbito digital el servicio personalizado de gama alta que suele encontrarse en las tiendas físicas de lujo. FARFETCH Chat R&D está desarrollando un sistema de recomendación conversacional especializado como parte de esta iniciativa. Este chatbot, integrado en iFetch, permite a los usuarios interactuar con el catálogo de productos de FARFETCH mediante lenguaje natural e imágenes. Por ejemplo, un usuario puede subir una foto de una chaqueta que le guste y el chatbot le responderá con una selección de chaquetas similares. Combinando a la perfección tecnologías avanzadas de inteligencia artificial con un enfoque en la experiencia del usuario, FARFETCH pretende redefinir lo que los clientes pueden esperar de las compras en línea.
FARFETCH Chat muestra un escaparate similar](https://assets.zilliz.com/FARFETCH_Chat_show_similar_showcase_4d268c1bc0.jpg)
Sin embargo, se encontraron con un reto importante: con sus limitados metadatos, los catálogos de productos tradicionales tenían dificultades para captar las intrincadas relaciones y los atributos matizados de su amplia gama de productos. Para hacer frente a este problema, emplearon algoritmos de aprendizaje automático para desarrollar incrustaciones de productos -puntos de datos de alta dimensión que sirven como un lenguaje robusto para su sistema de IA-. Esto permite al chatbot comprender y recomendar productos con una precisión sin precedentes. Sin embargo, almacenar y recuperar estas incrustaciones en tiempo real planteaba otro obstáculo, ya que requería una solución de almacenamiento especializada capaz de gestionar eficazmente datos de alta dimensión.
La importancia de las bases de datos vectoriales
Las bases de datos vectoriales, también conocidas como motores de similitud vectorial (VSE, por sus siglas en inglés), son bases de datos especializadas diseñadas para manejar datos complejos de alta dimensión denominados incrustaciones vectoriales. Estas bases de datos emplean algoritmos de Vecinos más Cercanos Aproximados (RNA), indispensables para una recuperación de datos rápida y precisa. Esta característica es especialmente vital para iFetch, que exige interacciones en tiempo real con los clientes para ofrecerles recomendaciones instantáneas de productos y responder a sus consultas. La elección de una base de datos vectorial no es un mero detalle técnico; es una decisión estratégica que repercute directamente en el rendimiento, la solidez y la eficacia de iFetch. Llevaron a cabo un exhaustivo estudio comparativo para asegurarse de que seleccionaban la VSE más adecuada. Para ello se evaluaron varias bases de datos, como Vespa, Milvus, Qdrant, Weaviate, Vald y Pinecone, en función de diversos criterios, como la velocidad de indexación, la velocidad de consulta y la escalabilidad. La evaluación comparativa también incluyó pruebas de estrés para evaluar el rendimiento de cada VSE bajo cargas máximas y escenarios de conmutación por error y recuperación para evaluar la resistencia.
Representación holística de la arquitectura del sistema iFetch con Vector Similarity Searc](https://assets.zilliz.com/Holistic_representation_of_the_i_Fetch_system_architecture_with_Vector_Similarity_Search_10948cc2e7.png)
Criterios de referencia y selección
El proceso de evaluación comparativa llevado a cabo por el equipo de Farfetch fue exhaustivo y metódico, y abarcó una amplia gama de factores cruciales para el éxito a largo plazo de iFetch. Entre ellos, la diversidad de tipos de índices, tipos de métricas, capacidades de servicio de modelos y adopción por parte de la comunidad. También tuvieron en cuenta la calidad de la documentación y la disponibilidad de soporte, ya que estos factores repercutirían en la facilidad de implantación y el mantenimiento continuo.
| Feature | Qdrant | Milvus | Weaviate | Vespa | Vald | Pinecone | ||||
|---|---|---|---|---|---|---|---|---|---|---|
| Modelo de Consistencia | N/A | Consistencia Fuerte | Consistencia Eventual | Consistencia Eventual | N/A | Consistencia Eventual | Consistencia Eventual | |||
| Soporte para GraphQL | N/A | N/A | Sí | N/A | N/A | N/A | N/A | |||
| Compartimentación: No (se desconoce la fecha). | ||||||||||
| Paginación | N/A | No (Se espera en la versión 2.2 en 2022.3) | Sí | Sí | N/A | N/A | ||||
| Tipos métricos | Producto interior Semejanza coseno Euclídea (L2) | L2 Producto interior Hamming Jaccard Tanimoto Superestructura Subestructura | Coseno | Euclídea Angular Producto interno Geo grados Hamming | L1 L2 Angular Hamming Coseno Angular normalizado Coseno normalizado Jaccard | Euclídeo Coseno Producto interno | ||||
| Tamaño máximo del vector N/A N/A N/A 32768 N/A N/A max.MaxInt64 N/A N/A | ||||||||||
| Tamaño máximo del índice: no disponible; no disponible; no disponible; ilimitado; no disponible; no disponible; no disponible. | ||||||||||
| Tipos de índice | HNSW | ANNOY HNSW IVF_PQ IVF_SQ8 IVF_FLAT FLAT IVF_SQ8_H RNSG | NHSW | HNSW BM25 | N/A | Proprietary | Modelo de servicio | N/A |
text2vec-contextionary
Weaviate's own language vectorizer; Weighted Mean of Word Embeddings (WMOWE) vectorizer module which works with popular models such as fastText and GloVe. El más reciente text2vec - contextionary está entrenado usando fastText sobre datos de Wiki y CommonCrawl.
text2vec- transformers
Los modelos Transfomer difieren del Contextionary ya que le permiten conectar un módulo NLP preentrenado específico para su caso de uso. Esto significa que modelos como BERT, DilstBERT, RoBERTa, DilstilROBERTa, etc. pueden ser utilizados con Weaviate.
Tras un riguroso análisis, se seleccionaron dos VSE -Milvus y Weaviate- para una evaluación comparativa en profundidad. Estas plataformas se ajustaban perfectamente a sus estrictos requisitos de robustez, eficiencia y escalabilidad. Las hojas de ruta de las plataformas también influyeron en la selección final, ya que necesitaban una solución que siguiera evolucionando y adaptándose a sus crecientes necesidades.
Configuración experimental
Utilizaron una configuración estandarizada de hardware y software para garantizar una evaluación justa y exhaustiva.
- Hardware: CPU Intel Xeon E5-2690 v4, 112 GB RAM, 1024 GB HDD
- Software: Linux 16.04-LTS, Anaconda 4.8.3 con Python 3.8.12
- Conjunto de datos: El equipo de Farfetch utilizó un conjunto de datos públicos de startups-list.com, compuesto por 40.474 registros. El conjunto de datos incluía incrustaciones precalculadas para las descripciones de las empresas.
Escenarios y algoritmo de indexación
Diseñaron múltiples escenarios de prueba para evaluar el rendimiento de estos VSE en diferentes condiciones. Estos escenarios variaban el número de registros y el número de codificaciones por entidad. Para la indexación utilizaron el algoritmo Hierarchical Navigable Small World (HNSW), conocido por su eficacia en espacios de datos de alta dimensión.
La lista final de escenarios figura a continuación.
| Escenario Número de entidades Número de codificaciones por entidad | ---------------- | ------------------ | ------------------------------ | | Escenario 1 (S1) 1.000 1 | Escenario nº 2 (S2) 10.000 1 | Escenario #3 (S3) 40.474 1 | Escenario #4 (S4) 1.000 2 | Escenario #5 (S5) 10.000 2 | Escenario #6 (S6) 40.474 2 | Escenario #7 (S7) 1.000 5 | Escenario #8 (S8) 10.000 5 | Escenario #9 (S9) 40.474 5
Análisis de rendimiento
Indexación
Weaviate: Permite la declaración explícita de parámetros de índice durante la creación del esquema de clases. Sin embargo, restringe la denominación de las clases, por ejemplo, no permite números ni caracteres especiales.
Milvus: Ofrece una gama más amplia de algoritmos de indexación y tipos de métrica. También permite definir el tamaño de los archivos de índices, lo que puede optimizar las operaciones por lotes.
Resultado: Milvus obtuvo la ventaja en cuanto a tiempos medios de indexación en todos los escenarios. Fue notablemente más rápido en el escenario más intensivo en recursos, S9.
Tiempo medio de indexación de Milvus 1.1.1 para los escenarios S1 a S9](https://assets.zilliz.com/Milvus_Average_Indexing_Time_f319bf820f.png) Tiempo medio de indexación de Weaviate en los escenarios S1 a S9](https://assets.zilliz.com/Weaviate_Average_Indexing_Time_7e5d22ae83.png)
Consulta
Weaviate: Su cliente Python soporta búsqueda vectorial pero sólo para un único vector a la vez.
Milvus: Ofrece un método de búsqueda más flexible que puede manejar una lista de vectores, facilitando la consulta multivectorial.
Resultado: Milvus mostró tiempos medios de consulta más cortos en todos los escenarios, aunque requirió una fase de "calentamiento" para alcanzar un rendimiento óptimo.
Tiempo medio de consulta de Milvus 1.1.1 para los escenarios S1 a S9](https://assets.zilliz.com/Milvus_Average_Querying_Time_3917a37469.png)
Tiempo medio de consulta de Weaviate en los escenarios S1 a S9](https://assets.zilliz.com/Weaviate_Average_Querying_Time_a51475e7d5.png)
El equipo de Farfetch considera que Milvus y Weaviate son prometedores, pero siguen evolucionando. Características como el escalado horizontal, la fragmentación y la compatibilidad con GPU están en la hoja de ruta. Para FARFETCH, que pretende gestionar un catálogo de productos de entre 300.000 y 5 millones de productos, el VSE ideal debería ofrecer:
- Resultados precisos y de alta calidad
- Capacidad de indexación eficiente
- Ejecución rápida de consultas
- Funciones de escalabilidad como equilibrio de carga y replicación de datos
Sus experimentos revelaron que Milvus superaba sistemáticamente a Weaviate en tiempos de indexación y consulta. Sin embargo, cabe señalar que ambas plataformas presentan ciertas limitaciones, como la falta de compatibilidad con múltiples codificaciones. Su trabajo futuro consistirá en seguir de cerca el desarrollo de estas plataformas y reevaluarlas a medida que introduzcan nuevas funciones.
Este estudio de caso es una versión resumida de un blog de análisis comparativo de bases de datos vectoriales publicado originalmente por PEDRO MOREIRA COSTA, de Farfetch. Para obtener un análisis más detallado, consulte las entradas del blog original: POWERING AI WITH VECTOR DATABASES: A BENCHMARK - PART I y POWERING AI WITH VECTOR DATABASES: A BENCHMARK - PART II.