Creación de sistemas de recomendación personalizados con Milvus y PaddlePaddle
Introducción de contexto
Con el desarrollo continuo de la tecnología de redes y la escala cada vez mayor del comercio electrónico, el número y la variedad de productos crecen rápidamente y los usuarios necesitan dedicar mucho tiempo a encontrar los productos que quieren comprar. Esto es sobrecarga de información. Para resolver este problema, surgió el sistema de recomendación.
El sistema de recomendación es un subconjunto del Sistema de Filtrado de Información, que puede utilizarse en una variedad de áreas como películas, música, comercio electrónico y recomendaciones de flujo Feed. El sistema de recomendación descubre las necesidades e intereses personalizados del usuario mediante el análisis y la minería de los comportamientos del usuario, y recomienda información o productos que podrían ser de interés para el usuario. A diferencia de los motores de búsqueda, los sistemas de recomendación no requieren que los usuarios describan con precisión sus necesidades, sino que modelan su comportamiento histórico para proporcionar de forma proactiva información que se ajuste a los intereses y necesidades del usuario.
En este artículo usamos PaddlePaddle, una plataforma de aprendizaje profundo de Baidu, para construir un modelo y combinar Milvus, un motor de búsqueda de similitud vectorial, para construir un sistema de recomendación personalizado que pueda proporcionar a los usuarios información interesante de forma rápida y precisa.
Preparación de datos
Tomamos MovieLens Million Dataset (ml-1m) [1] como ejemplo. El conjunto de datos ml-1m contiene 1,000,000 reseñas de 4,000 películas realizadas por 6,000 usuarios, recopiladas por el laboratorio GroupLens Research. Los datos originales incluyen datos de características de la película, características del usuario y calificación del usuario sobre la película; puedes consultar ml-1m-README [2] .
El conjunto de datos ml-1m incluye 3 archivos .dat: movies.dat、users.dat y ratings.dat.movies.dat incluye las características de la película, consulta el ejemplo a continuación:
MovieID::Title::Genres
1::ToyStory(1995)::Animation|Children's|Comedy
Esto significa que el id de la película es 1, y el título es 《Toy Story》, que se divide en tres categorías. Estas tres categorías son animación, infantil y comedia.
users.dat incluye las características del usuario, consulta el ejemplo a continuación:
UserID::Gender::Age::Occupation::Zip-code
1::F::1::10::48067
Esto significa que el ID de usuario es 1, mujer, y menor de 18 años. El ID de ocupación es 10.
ratings.dat incluye la característica de la calificación de la película, consulta el ejemplo a continuación:
UserID::MovieID::Rating::Timestamp 1::1193::5::978300760
Es decir, el usuario 1 evalúa la película 1193 con 5 puntos.
Modelo de recomendación Fusion
En el sistema de recomendación personalizada de películas usamos el Modelo de recomendación Fusion [3] que PaddlePaddle ha implementado. Este modelo se creó a partir de su práctica industrial.
Primero, toma las características del usuario y las características de la película como entrada a la red neuronal, donde:
- Las características del usuario incorporan cuatro datos de atributos: ID de usuario, género, ocupación y edad.
- Las características de la película incorporan tres datos de atributos: ID de película, ID de tipo de película y nombre de la película.
Para la característica del usuario, mapea el ID de usuario a una representación vectorial con un tamaño de dimensión de 256, introdúcela en la capa completamente conectada y realiza un procesamiento similar para los otros tres atributos. Luego, las representaciones de características de los cuatro atributos se conectan completamente y se agregan por separado.
Para las características de la película, el ID de la película se procesa de manera similar al ID de usuario. El ID de tipo de película se introduce directamente en la capa completamente conectada en forma de vector, y el nombre de la película se representa mediante un vector de longitud fija usando una red neuronal convolucional de texto. Luego, las representaciones de características de los tres atributos se conectan completamente y se agregan por separado.
Después de obtener la representación vectorial del usuario y de la película, calcula la similitud coseno entre ellas como la puntuación del sistema de recomendación personalizado. Finalmente, el cuadrado de la diferencia entre la puntuación de similitud y la puntuación real del usuario se utiliza como función de pérdida del modelo de regresión.
Modelo de recomendación fusion de PaddlePaddle.
Descripción general del sistema
Combinado con el modelo de recomendación por fusión de PaddlePaddle, el vector de características de película generado por el modelo se almacena en el motor de búsqueda de similitud vectorial Milvus, y la característica del usuario se utiliza como el vector objetivo que se va a buscar. La búsqueda de similitud se realiza en Milvus para obtener el resultado de la consulta como las películas recomendadas para el usuario.
Modelo de recomendación por fusión combinado con Milvus.
El método de producto interno (IP) se proporciona en Milvus para calcular la distancia vectorial. Después de normalizar los datos, la similitud por producto interno es coherente con el resultado de similitud coseno en el modelo de recomendación por fusión.
Aplicación del sistema de recomendación personal
Hay tres pasos para construir un sistema de recomendación personalizada con Milvus; para obtener detalles sobre cómo operar, consulte Mivus Bootcamp [4].
Paso 1:Entrenamiento del modelo
# run train.py
$ python train.py
Ejecutar este comando generará un modelo recommender_system.inference.model en el directorio, que puede convertir datos de películas y datos de usuarios en vectores de características, y generar datos de aplicación para que Milvus los almacene y recupere.
Paso 2:Preprocesamiento de datos
# Data preprocessing, -f followed by the parameter raw movie data file name
$ python get_movies_data.py -f movies_origin.txt
Ejecutar este comando generará datos de prueba movies_data.txt en el directorio para lograr el preprocesamiento de los datos de películas.
Paso 3:Implementación de un sistema de recomendación personal con Milvus
# Implementing personal recommender system based on user conditions
$ python infer_milvus.py -a <age>-g <gender>-j <job>[-i]
Ejecutar este comando implementará recomendaciones personalizadas para usuarios especificados.
El proceso principal es:
- A través de load_inference_model, los datos de películas son procesados por el modelo para generar un vector de características de película.
- Cargar el vector de características de película en Milvus mediante milvus.insert.
- Según la edad / género / ocupación del usuario especificados por los parámetros, se convierte en un vector de características de usuario, se utiliza milvus.search_vectors para la recuperación por similitud, y se devuelve el resultado con la mayor similitud entre el usuario y la película.
Predicción de las cinco películas principales en las que el usuario está interesado:
TopIdsTitleScore
03030Yojimbo2.9444923996925354
13871Shane2.8583481907844543
23467Hud2.849525213241577
31809Hana-bi2.826111316680908
43184Montana2.8119677305221558
Resumen
Al introducir información del usuario e información de películas en el modelo de recomendación por fusión, podemos obtener puntuaciones de coincidencia y luego ordenar las puntuaciones de todas las películas en función del usuario para recomendar películas que puedan ser de interés para el usuario. Este artículo combina Milvus y PaddlePaddle para construir un sistema de recomendación personalizada. Milvus, un motor de búsqueda vectorial, se utiliza para almacenar todos los datos de características de películas, y luego se realiza la recuperación por similitud sobre las características del usuario en Milvus. El resultado de la búsqueda es la clasificación de películas recomendada por el sistema al usuario.
El motor de búsqueda de similitud vectorial Milvus [5] es compatible con varias plataformas de aprendizaje profundo, y busca miles de millones de vectores con una respuesta de solo milisegundos. ¡Puede explorar más posibilidades de aplicaciones de IA con Milvus con facilidad!
Referencia
- 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
- Modelo de recomendación por fusión de 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/
Sigue leyendo

How to Install and Run OpenClaw (Previously Clawdbot/Moltbot) on Mac
Turn your Mac into an AI gateway for WhatsApp, Telegram, Discord, iMessage, and more — in under 5 minutes.

How to Improve Retrieval Quality for Japanese Text with Sudachi, Milvus/Zilliz, and AWS Bedrock
Learn how Sudachi normalization and Milvus/Zilliz hybrid search improve Japanese RAG accuracy with BM25 + vector fusion, AWS Bedrock embeddings, and practical code examples.

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.



