VIPSHOP baut mit Milvus ein 10-mal schnelleres personalisiertes Empfehlungssystem

10-mal schnellere Abfragegeschwindigkeit
als die vorherige Elasticsearch-Lösung
<30ms Reaktionszeit
für die Suche in Millionen von Vektoren
Optimierte Benutzererfahrung
mit genaueren Empfehlungen auf Grundlage des Kaufverhaltens der Nutzer
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
Über VIPSHOP
VIPSHOP ist ein renommierter, an der NYSE notierter Online-Händler mit Hauptsitz in China, der darauf spezialisiert ist, Verbrauchern beliebte Markenprodukte mit erheblichen Rabatten anzubieten. Das vielfältige Produktsortiment umfasst Mode, Bekleidung, Accessoires, Schönheitsprodukte, Haushaltswaren und Elektronik. Mit einer beeindruckenden Kundenbasis von über 52 Millionen und nahezu 270 Millionen Bestellungen jährlich hat sich VIPSHOP seinen Platz als 115. Eintrag in der prestigeträchtigen China-500-Liste von Fortune verdient.
Herausforderungen: Hohe Latenz und steigende Wartungskosten bei der Verwendung von Elasticsearch
Mit dem rasanten Wachstum seines Geschäfts stand VIPSHOP vor einem häufigen Dilemma: Mit der Erweiterung des Produktportfolios nahm auch die Komplexität zu, den Nutzern dabei zu helfen, das zu finden, wonach sie suchten. Um dieses Problem anzugehen, erstellte VIPSHOP ein personalisiertes Empfehlungssystem, das auf Suchbegriffen der Nutzer und dem Kaufverhalten der Nutzer basiert.
Zuvor nutzte das VIPSHOP-Team die Cosine Similarity(7.x)-Funktionen von Elasticsearch, um das Empfehlungssystem zu betreiben. Dieser Ansatz war jedoch aus zwei Gründen ineffizient:
Hohe Latenz bei der Vektorsuche: Durchschnittlich etwa 300 ms für das Abrufen von Top-K-Ergebnissen aus Millionen von Vektoren, was zu mehreren Sekunden für die gesamte Antwortzeit des Systems führte.
Hohe Kosten für die Wartung von Elasticsearch-Indizes: Vektoren, die aus Produkten, dem Kaufverhalten der Verbraucher und allen anderen Daten abgeleitet wurden, teilten sich denselben Satz von Indizes, wodurch Indexerstellung, Betrieb und Wartung deutlich komplizierter wurden.
VIPSHOP versuchte, die Leistung von Elasticsearch durch die Entwicklung eines Locality-Sensitive-Hashing-Plugins zu verbessern. Es verbesserte jedoch nur den Durchsatz und konnte die Vektorsuchzeit nicht auf unter 100 ms reduzieren. Daher benötigte das Team weiterhin dringend einen neuen Vektorsuch-Stack, um die Systemleistung zu verbessern.
Die Milvus-Lösung
Nach umfangreicher Recherche entschied sich das VIPSHOP-Team für Milvus, eine Open-Source-Vektordatenbank, die Milliarden von Vektor-Embeddings verarbeiten und blitzschnelle Antworten liefern kann. Milvus bietet außerdem umfangreiche Funktionen wie verteilte Bereitstellung, SDKs für mehrere Sprachen und Lese-/Schreibtrennung, was es zu einer überlegenen Wahl gegenüber Elasticsearch und vielen anderen Vektorsuchlösungen wie FAISS macht.
Die Architektur des VIPSHOP-Empfehlungssystems mit Milvus
Das obige Diagramm zeigt die Architektur des Empfehlungssystems von VIPSHOP mit Milvus. Es besteht aus zwei Kernteilen:
Schreibprozess: Das VIPSHOP-Team verwendete ein Deep-Learning-Modell, um die Merkmale jedes Produkts in Vektor-Embeddings umzuwandeln und importierte sie anschließend über MySQL und ein ETL-Tool in Milvus.
Leseprozess: Das Team verwendete das Deep-Learning-Modell, um Suchanfragen und Kaufverhalten der Verbraucher in Vektoren umzuwandeln und anschließend ähnliche Ergebnisse in Milvus abzurufen. Milvus führte eine Ähnlichkeitssuche durch und gab die Top-K relevantesten Ergebnisse an die Verbraucher zurück.
Details zur Milvus-Implementierung: Datenaktualisierung und Recall
Datenaktualisierung und Recall sind die wichtigsten Prozesse für das Milvus-gestützte Empfehlungssystem.
Das Verfahren zur Datenaktualisierung gewährleistet die Datensynchronisierung und umfasst Aufgaben wie das Schreiben von Vektordaten, das Erkennen von Vektordatenvolumina, die Indexerstellung, das Vorladen von Indizes und das Alias-Management. Es beginnt mit Prüfungen der Warendaten, wobei sichergestellt wird, dass die Menge in MySQL mit den vorhandenen Daten übereinstimmt. Anschließend folgt der gesamte Datenerstellungsprozess, einschließlich der Alias-Initialisierung in Redis, der Erstellung neuer Collections, des Schreibens von Vektoren in Batches und des Vorladens des Index in Milvus. Nach der Überprüfung der Daten der neuen Collection wechselt das System nahtlos Aliase zwischen mehreren Datensammlungen.
Der Recall-Prozess, der für die Empfehlung von Produkten entscheidend ist, umfasst das Erfassen von Vektoren im Zusammenhang mit den Anfragen und Kaufverhalten der Verbraucher, das Berechnen ihrer Distanz und das Zusammenführen der Ergebnisse. Mithilfe von Milvus ruft das System Daten in verschiedenen Milvus-Partitionen gleichzeitig und asynchron ab, berechnet Vektorähnlichkeiten und ordnet die Top-Ergebnisse basierend auf der Ähnlichkeitsdistanz. Anschließend präsentiert es den Nutzern nach mehreren Aufrufen von Milvus-Partitionsdaten die endgültigen Empfehlungsergebnisse. Der gesamte Workflow sieht wie folgt aus:
Die folgende Tabelle zeigt die Leistung von drei primären Milvus-Services. Wie in der Tabelle dargestellt, liegt die durchschnittliche Latenz beim Abrufen von Top-K-Ergebnissen bei etwa 10 ms.
| Service | Rolle | Eingabeparameter | Ausgabeparameter | Antwortlatenz |
|---|---|---|---|---|
| User vectors acquisition | Nutzervektor erhalten | Nutzerinformationen + Anfrage | Nutzervektor | 10 ms |
| Milvus Search | Vektorähnlichkeit berechnen und Top-K-Ergebnisse zurückgeben | Nutzervektor | Artikelvektor | 10 ms |
| Scheduling Logic | Gleichzeitiges Abrufen und Zusammenführen von Ergebnissen | Über mehrere Kanäle abgerufene Artikelvektoren und der Ähnlichkeitswert | Top-K-Artikel | 10 ms |
Ergebnisse: Bessere Systemleistung und optimale Nutzererfahrung
Die Einführung von Milvus im Empfehlungssystem von VIPSHOP hat die allgemeine Systemleistung erheblich verbessert, darunter:
10-mal schnellere Abfragegeschwindigkeit
Mit Milvus wurde die Abfrage- und Antwortzeit des Systems auf unter 30 ms reduziert, 10-mal schneller als die vorherige Elasticsearch-Lösung.
Verbesserte Systemskalierbarkeit
Die verteilte Bereitstellung von Milvus und die Unterstützung für horizontale Skalierung ermöglichen es dem Empfehlungssystem, schnell wachsende Datenmengen und Nutzeranfragen mühelos zu verarbeiten, ohne die Leistung zu beeinträchtigen.
Verbesserte Nutzererfahrung
Milvus optimiert den Empfehlungsprozess, um maßgeschneiderte Produktvorschläge basierend auf Nutzerpräferenzen und Suchabsicht bereitzustellen, wodurch Nutzerzufriedenheit und Engagement verbessert werden.
Reduzierte Wartungskosten
Milvus verarbeitet Vektordaten effizient und optimiert Abfragemechanismen, wodurch die gesamten Wartungskosten für das Empfehlungssystem reduziert werden.
Gewonnene Erkenntnisse und empfohlene Praktiken
Auf ihrem Weg mit Milvus hat das VIPSHOP-Team einige Lektionen gelernt und mehrere entscheidende Erkenntnisse für eine optimale Systemleistung und Nutzererfahrung gewonnen:
In Situationen, in denen Leseoperationen Vorrang haben, kann die Einführung einer Bereitstellungsstrategie mit Lese-Schreib-Trennung die allgemeine Systemleistung verbessern.
Dem Milvus Java client fehlt aufgrund seiner In-Memory-Residenz im Recall-Service ein integrierter Wiederverbindungsmechanismus. Das VIPSHOP-Team hat einen eigenen Verbindungspool aufgebaut, um durch einen Heartbeat-Test eine konsistente Konnektivität zwischen dem Java client und dem Server sicherzustellen.
Langsame Abfragen treten in Milvus gelegentlich aufgrund einer unzureichenden Aufwärmung neuer Collections auf. Um dieses Problem zu beheben, simulierte das VIPSHOP-Team Abfragen auf der neuen Collection.
Um das richtige Gleichgewicht zwischen Abrufleistung und Genauigkeit zu finden, empfiehlt das VIPSHOP-Team, strenge Belastungstests durchzuführen, die auf Ihr spezifisches Geschäftsszenario zugeschnitten sind, und einen angemessenen Schwellenwert festzulegen, um diese Parameter zu optimieren.
In Szenarien mit statischen Daten ist es effizienter, zunächst alle Daten in die Collection zu importieren und später Indizes zu erstellen.
- Über VIPSHOP
- Herausforderungen: Hohe Latenz und steigende Wartungskosten bei der Verwendung von Elasticsearch
- Die Milvus-Lösung
- Ergebnisse: Bessere Systemleistung und optimale Nutzererfahrung
- Gewonnene Erkenntnisse und empfohlene Praktiken
Inhalte
Anwendungsfall
Branche
Elektronischer Geschäftsverkehr


