Come Tokopedia ha ottenuto un'esperienza di ricerca 10 volte più intelligente utilizzando Milvus

10 volte più intelligente
esperienza di ricerca
Migliorata
esperienza dell'utente
Potenziato
scalabilità e affidabilità
Our search system has been much more intelligent, stable, and reliable using Milvus.
Rahul Yadav
Informazioni su Tokopedia
Tokopedia è la più grande piattaforma di e-commerce dell'Indonesia, con ben 90 milioni di utenti attivi mensili e un'impressionante rete di 8,6 milioni di commercianti. Con un raggio d'azione che si estende al 98% delle regioni amministrative indonesiane, Tokopedia è diventata la destinazione di riferimento del Paese per gli acquisti online.
Tokopedia riconosce che il valore del suo ampio catalogo di prodotti risiede nel garantire che gli acquirenti possano scoprire senza sforzo i prodotti su misura per le loro preferenze. Nel suo costante impegno a migliorare la pertinenza dei risultati di ricerca, ha introdotto su Tokopedia la [ricerca per similarità] (https://zilliz.com/learn/vector-similarity-search).
Quando l'utente naviga nella pagina dei risultati della ricerca sul proprio dispositivo mobile, noterà un discreto pulsante "...". Facendo clic su questo pulsante, l'utente può accedere a un menu che offre l'interessante opportunità di esplorare i prodotti che corrispondono strettamente a quello che l'utente sta visualizzando.
Sfide della ricerca per parole chiave
In passato, Tokopedia Search utilizzava Elasticsearch come motore principale per la ricerca e la classificazione dei prodotti. Ogni richiesta di ricerca avviava una query a Elasticsearch, che classificava i prodotti in base alle parole chiave ricercate dall'utente. Elasticsearch memorizza le parole chiave come sequenze di valori numerici, che rappresentano codici ASCII o UTF per le singole lettere. Costruisce un indice inverso per identificare rapidamente i documenti contenenti le parole della query dell'utente e determina successivamente le migliori corrispondenze utilizzando una serie di algoritmi di punteggio.
Tuttavia, questi algoritmi di punteggio di solito non considerano la semantica delle parole chiave ricercate. Si concentrano invece su fattori come la frequenza con cui le parole appaiono nei documenti, la loro vicinanza e altre informazioni statistiche. Sebbene gli esseri umani siano in grado di comprendere il significato della rappresentazione ASCII delle parole, i computer hanno bisogno di un algoritmo affidabile per confrontare la semantica delle parole codificate in ASCII.
Rappresentazione vettoriale
Una delle soluzioni al problema trovate dal team di Tokopedia è stata quella di creare un nuovo modo di rappresentare le parole chiave, che mostrasse le lettere di una parola e fornisse informazioni sul suo significato. Ad esempio, si possono codificare le parole comunemente usate con la parola chiave di ricerca per fornire un probabile contesto. Da qui, possono ipotizzare che contesti simili indichino concetti simili e confrontarli utilizzando tecniche matematiche. È persino possibile codificare intere frasi in base al loro significato.
Selezione di Milvus come motore di ricerca per la similarità vettoriale
Ora che Tokopedia possiede i vettori delle caratteristiche, la sfida rimanente consiste nel recuperare in modo efficiente i vettori dall'ampio set di dati che corrispondono strettamente al vettore di destinazione. Nell'esplorare i motori di ricerca vettoriale, abbiamo condotto valutazioni proof-of-concept (POC) su diversi stack di ricerca vettoriale disponibili su GitHub, tra cui FAISS, Vearch e Milvus.
Sulla base dei risultati dei nostri test di carico, la nostra preferenza va a Milvus. Rispetto a Milvus, FAISS opera più come una libreria sottostante e di conseguenza è meno facile da usare. Approfondendo Milvus, lo abbiamo adottato per i seguenti motivi:
- Milvus si è dimostrato straordinariamente facile da usare. Hanno scoperto che è sufficiente estrarre la sua immagine Docker e regolare i parametri per adattarli ai casi d'uso specifici.
- Milvus offre una gamma più ampia di indici supportati. Oltre a FAISS, HSNW, DISK_ANN e ScaNN, è possibile scegliere tra 11 indici.
- Milvus fornisce una documentazione completa per aiutare gli utenti nella loro implementazione.
In poche parole, Milvus è facile da usare, con una documentazione chiara e un supporto affidabile della comunità per qualsiasi problema possa sorgere.
Milvus in produzione
Dopo aver implementato Milvus come motore di ricerca vettoriale, lo hanno utilizzato per il loro servizio di annunci per abbinare parole chiave a basso tasso di riempimento con parole chiave ad alto tasso di riempimento. Hanno configurato ed eseguito un nodo standalone in un ambiente di sviluppo (DEV), che ha funzionato senza problemi e ha fornito un tasso di click-through (CTR) e di conversione (CVR) 10 volte superiore.
Tuttavia, è emerso un problema potenziale. Il crash di un nodo indipendente avrebbe reso inaccessibile l'intero servizio. Di conseguenza, il team di Tokopedia è passato a un'implementazione HA di Milvus.
Milvus offre due strumenti: Mishards, un middleware per lo sharding dei cluster, e Milvus-Helm per una configurazione semplificata. In Tokopedia si utilizzano i playbook di Ansible per la configurazione dell'infrastruttura, il che li spinge a creare un playbook per orchestrare l'infrastruttura. Il diagramma seguente mostra il funzionamento di Mishards.
Mishards facilita il flusso continuo di richieste da monte a valle, dividendo le richieste a monte in sotto-moduli, raccogliendo i risultati dai sotto-servizi e restituendo successivamente questi risultati alla fonte a monte.
L'architettura della soluzione cluster basata su Mishards è illustrata di seguito.
Il sistema di servizi di ricerca semantica Tokopedia comprende un nodo scrivibile, due nodi di sola lettura e un'istanza del middleware Mishards, tutti distribuiti in GCP utilizzando Milvus Ansible. Il sistema si è dimostrato notevolmente più intelligente, stabile e affidabile.
Come l'indicizzazione vettoriale accelera la ricerca per similarità?
L'interrogazione efficiente di grandi insiemi di dati vettoriali nei motori di ricerca per similarità richiede un'indicizzazione adeguata. Questo processo organizza i dati e accelera il processo di ricerca, rendendolo essenziale per gestire insiemi di dati con milioni, miliardi o addirittura trilioni di vettori. Una volta indicizzato un enorme set di dati vettoriali, è possibile indirizzare le query verso i cluster o i sottoinsiemi di dati che hanno maggiori probabilità di contenere vettori simili alla query di input. Tuttavia, questo approccio potrebbe sacrificare l'accuratezza per ottenere query più veloci su grandi dati vettoriali.
Per capire meglio, si pensi all'indicizzazione come all'ordinamento alfabetico delle parole in un dizionario. Quando si cerca una parola chiave, si può passare rapidamente a una sezione contenente solo parole con la stessa lettera iniziale, accelerando notevolmente la ricerca della definizione della parola in ingresso.
Sintesi
La ricerca di Tokopedia di una funzionalità di ricerca superiore li ha portati a Milvus, un'innovazione nel campo della ricerca semantica. Con Milvus, hanno sbloccato la potenza della rappresentazione vettoriale e costruito un sistema di ricerca 10 volte più intelligente che ha migliorato notevolmente l'esperienza dell'utente. Il loro servizio di ricerca è anche altamente disponibile, garantendo operazioni senza interruzioni. Questo viaggio con Milvus ha trasformato la ricerca di Tokopedia, promettendo un futuro di risultati di ricerca personalizzati e significativi. Con Milvus, Tokopedia sta rivoluzionando l'e-commerce in Indonesia e non solo.
*Questo post è stato scritto da Rahul Yadav, ingegnere informatico di Tokopedia. È stato modificato e ripubblicato qui con l'autorizzazione. *
- Informazioni su Tokopedia
- Sfide della ricerca per parole chiave
- Rappresentazione vettoriale
- Selezione di Milvus come motore di ricerca per la similarità vettoriale
- Milvus in produzione
- Come l'indicizzazione vettoriale accelera la ricerca per similarità?
- Sintesi
Contenuto
Caso d'Uso
Settore
Commercio elettronico