Creare sistemi di raccomandazione personalizzati con Milvus e PaddlePaddle
Introduzione di base
Con il continuo sviluppo della tecnologia di rete e la scala sempre più ampia dell'e-commerce, il numero e la varietà dei beni crescono rapidamente e gli utenti devono dedicare molto tempo a trovare i prodotti che desiderano acquistare. Questo è il sovraccarico informativo. Per risolvere questo problema, è nato il sistema di raccomandazione.
Il sistema di raccomandazione è un sottoinsieme del Sistema di Filtraggio delle Informazioni, che può essere utilizzato in una serie di ambiti come film, musica, e-commerce e raccomandazioni di Feed stream. Il sistema di raccomandazione scopre le esigenze e gli interessi personalizzati dell'utente analizzando ed estraendo i comportamenti degli utenti, e raccomanda informazioni o prodotti che potrebbero interessare all'utente. A differenza dei motori di ricerca, i sistemi di raccomandazione non richiedono agli utenti di descrivere accuratamente le proprie esigenze, ma modellano il loro comportamento storico per fornire proattivamente informazioni che soddisfino gli interessi e le esigenze degli utenti.
In questo articolo utilizziamo PaddlePaddle, una piattaforma di deep learning di Baidu, per costruire un modello e combinarlo con Milvus, un motore di ricerca per similarità vettoriale, per costruire un sistema di raccomandazione personalizzato in grado di fornire rapidamente e accuratamente agli utenti informazioni interessanti.
Preparazione dei dati
Prendiamo come esempio il MovieLens Million Dataset (ml-1m) [1]. Il dataset ml-1m contiene 1.000.000 di recensioni di 4.000 film da parte di 6.000 utenti, raccolte dal laboratorio GroupLens Research. I dati originali includono dati sulle caratteristiche del film, caratteristiche dell'utente e valutazione dell'utente del film; puoi fare riferimento a ml-1m-README [2] .
Il dataset ml-1m include 3 articoli .dat: movies.dat、users.dat e ratings.dat.movies.dat include le caratteristiche del film, vedi l'esempio qui sotto:
MovieID::Title::Genres
1::ToyStory(1995)::Animation|Children's|Comedy
Questo significa che l'id del film è 1, e il titolo è 《Toy Story》, che è suddiviso in tre categorie. Queste tre categorie sono animazione, bambini e commedia.
users.dat include le caratteristiche dell'utente, vedi l'esempio qui sotto:
UserID::Gender::Age::Occupation::Zip-code
1::F::1::10::48067
Questo significa che l'ID utente è 1, donna, e ha meno di 18 anni. L'ID dell'occupazione è 10.
ratings.dat include la caratteristica della valutazione del film, vedi l'esempio qui sotto:
UserID::MovieID::Rating::Timestamp 1::1193::5::978300760
Cioè, l'utente 1 valuta il film 1193 con 5 punti.
Modello di raccomandazione Fusion
Nel sistema di raccomandazione personalizzata dei film abbiamo utilizzato il Fusion Recommendation Model [3] che PaddlePaddle ha implementato. Questo modello è creato a partire dalla sua pratica industriale.
Innanzitutto, prendi le caratteristiche dell'utente e le caratteristiche del film come input per la rete neurale, dove:
- Le caratteristiche dell'utente incorporano quattro informazioni di attributo: ID utente, genere, occupazione ed età.
- Le caratteristiche del film incorporano tre informazioni di attributo: ID film, ID del tipo di film e nome del film.
Per la caratteristica dell'utente, mappa l'ID utente a una rappresentazione vettoriale con una dimensione di 256, inseriscila nel livello completamente connesso ed esegui un'elaborazione simile per gli altri tre attributi. Quindi le rappresentazioni delle caratteristiche dei quattro attributi vengono completamente connesse e aggiunte separatamente.
Per le caratteristiche del film, l'ID del film viene elaborato in modo simile all'ID utente. L'ID del tipo di film viene inserito direttamente nel livello completamente connesso sotto forma di vettore, e il nome del film è rappresentato da un vettore di lunghezza fissa utilizzando una rete neurale convoluzionale testuale. Le rappresentazioni delle caratteristiche dei tre attributi vengono quindi completamente connesse e aggiunte separatamente.
Dopo aver ottenuto la rappresentazione vettoriale dell'utente e del film, calcola la similarità del coseno tra di esse come punteggio del sistema di raccomandazione personalizzato. Infine, il quadrato della differenza tra il punteggio di similarità e il punteggio reale dell'utente viene utilizzato come funzione di perdita del modello di regressione.
Modello di raccomandazione fusion di PaddlePaddle.
Panoramica del sistema
Combinato con il modello di raccomandazione a fusione di PaddlePaddle, il vettore delle caratteristiche del film generato dal modello viene archiviato nel motore di ricerca per similarità vettoriale Milvus, e la caratteristica dell’utente viene utilizzata come vettore target da cercare. La ricerca di similarità viene eseguita in Milvus per ottenere il risultato della query come film consigliati per l’utente.
Modello di raccomandazione a fusione combinato con Milvus.
Il metodo del prodotto interno (IP) è fornito in Milvus per calcolare la distanza vettoriale. Dopo la normalizzazione dei dati, la similarità del prodotto interno è coerente con il risultato della similarità del coseno nel modello di raccomandazione a fusione.
Applicazione del sistema di raccomandazione personale
Ci sono tre passaggi nella creazione di un sistema di raccomandazione personalizzato con Milvus; per i dettagli su come operare, fare riferimento a Mivus Bootcamp [4].
Passaggio 1:Addestramento del modello
# run train.py
$ python train.py
L’esecuzione di questo comando genererà un modello recommender_system.inference.model nella directory, che può convertire i dati dei film e i dati degli utenti in vettori di caratteristiche e generare dati applicativi che Milvus potrà archiviare e recuperare.
Passaggio 2:Pre-elaborazione dei dati
# Data preprocessing, -f followed by the parameter raw movie data file name
$ python get_movies_data.py -f movies_origin.txt
L’esecuzione di questo comando genererà i dati di test movies_data.txt nella directory per eseguire la pre-elaborazione dei dati dei film.
Passaggio 3:Implementazione del sistema di raccomandazione personale con Milvus
# Implementing personal recommender system based on user conditions
$ python infer_milvus.py -a <age>-g <gender>-j <job>[-i]
L’esecuzione di questo comando implementerà raccomandazioni personalizzate per gli utenti specificati.
Il processo principale è:
- Tramite load_inference_model, i dati dei film vengono elaborati dal modello per generare un vettore delle caratteristiche del film.
- Caricare il vettore delle caratteristiche del film in Milvus tramite milvus.insert.
- In base all’età / genere / occupazione dell’utente specificati dai parametri, viene convertito in un vettore delle caratteristiche dell’utente; milvus.search_vectors viene utilizzato per il recupero per similarità e viene restituito il risultato con la similarità più alta tra l’utente e il film.
Previsione dei primi cinque film a cui l’utente è interessato:
TopIdsTitleScore
03030Yojimbo2.9444923996925354
13871Shane2.8583481907844543
23467Hud2.849525213241577
31809Hana-bi2.826111316680908
43184Montana2.8119677305221558
Riepilogo
Inserendo le informazioni dell’utente e le informazioni sui film nel modello di raccomandazione a fusione, possiamo ottenere punteggi di corrispondenza e quindi ordinare i punteggi di tutti i film in base all’utente per raccomandare film che potrebbero interessargli. Questo articolo combina Milvus e PaddlePaddle per creare un sistema di raccomandazione personalizzato. Milvus, un motore di ricerca vettoriale, viene utilizzato per archiviare tutti i dati delle caratteristiche dei film, quindi il recupero per similarità viene eseguito sulle caratteristiche dell’utente in Milvus. Il risultato della ricerca è la classifica dei film consigliata dal sistema all’utente.
Il motore di ricerca per similarità vettoriale Milvus [5] è compatibile con varie piattaforme di deep learning, cercando miliardi di vettori con una risposta di soli millisecondi. Puoi esplorare facilmente ulteriori possibilità delle applicazioni AI con Milvus!
Riferimenti
- MovieLens Million Dataset (ml-1m): http://files.grouplens.org/datasets/movielens/ml-1m.zip
- ml-1m-README: http://files.grouplens.org/datasets/movielens/ml-1m-README.txt
- Modello di raccomandazione a fusione di PaddlePaddle: https://www.paddlepaddle.org.cn/documentation/docs/zh/beginners_guide/basics/recommender_system/index.html#id7
- Bootcamp: https://github.com/milvus-io/bootcamp/tree/master/solutions/recommendation_system
- Milvus: https://milvus.io/en/
Continua a leggere

Zilliz Cloud On-Demand Compute: Pay Only for What You Use
The customer case behind Zilliz Cloud On-Demand: how a $10K vector search bill came down to under $500, and the engineering changes that made it possible.

Zilliz Cloud Now Available in AWS Asia Pacific (Seoul)
Zilliz Cloud is now available in AWS Seoul — low-latency vector search, in-country data residency, and one-step migration for Korean AI teams. 31 regions across 5 clouds.

Introducing Zilliz MCP Server: Natural Language Access to Your Vector Database
Developers can easily manage and query vector databases with natural language via Zilliz MCP Server in AI-native environments.



