Construindo sistemas de recomendação personalizados com Milvus e PaddlePaddle
Introdução ao Contexto
Com o desenvolvimento contínuo da tecnologia de redes e a escala cada vez maior do e-commerce, o número e a variedade de produtos crescem rapidamente e os usuários precisam gastar muito tempo para encontrar os produtos que desejam comprar. Isso é sobrecarga de informação. Para resolver esse problema, surgiu o sistema de recomendação.
O sistema de recomendação é um subconjunto do Sistema de Filtragem de Informações, que pode ser usado em uma variedade de áreas, como filmes, música, e-commerce e recomendações de fluxo Feed. O sistema de recomendação descobre as necessidades e interesses personalizados do usuário analisando e minerando comportamentos do usuário, e recomenda informações ou produtos que podem ser de interesse para o usuário. Ao contrário dos mecanismos de busca, os sistemas de recomendação não exigem que os usuários descrevam suas necessidades com precisão, mas modelam seu comportamento histórico para fornecer proativamente informações que atendam aos interesses e necessidades do usuário.
Neste artigo, usamos PaddlePaddle, uma plataforma de deep learning da Baidu, para construir um modelo e combiná-lo com Milvus, um mecanismo de busca por similaridade vetorial, para construir um sistema de recomendação personalizado que pode fornecer rapidamente e com precisão informações interessantes aos usuários.
Preparação dos Dados
Tomamos o MovieLens Million Dataset (ml-1m) [1] como exemplo. O conjunto de dados ml-1m contém 1.000.000 avaliações de 4.000 filmes por 6.000 usuários, coletadas pelo laboratório GroupLens Research. Os dados originais incluem dados de características do filme, características do usuário e avaliação do usuário sobre o filme; você pode consultar ml-1m-README [2] .
O conjunto de dados ml-1m inclui 3 artigos .dat: movies.dat、users.dat e ratings.dat.movies.dat inclui características do filme, veja o exemplo abaixo:
MovieID::Title::Genres
1::ToyStory(1995)::Animation|Children's|Comedy
Isso significa que o ID do filme é 1, e o título é 《Toy Story》, que é dividido em três categorias. Essas três categorias são animação, infantil e comédia.
users.dat inclui características do usuário, veja o exemplo abaixo:
UserID::Gender::Age::Occupation::Zip-code
1::F::1::10::48067
Isso significa que o ID do usuário é 1, feminino, e com menos de 18 anos. O ID da ocupação é 10.
ratings.dat inclui a característica da avaliação do filme, veja o exemplo abaixo:
UserID::MovieID::Rating::Timestamp 1::1193::5::978300760
Ou seja, o usuário 1 avalia o filme 1193 com 5 pontos.
Modelo de Recomendação por Fusão
No sistema de recomendação personalizada de filmes, usamos o Modelo de Recomendação por Fusão [3] que o PaddlePaddle implementou. Este modelo foi criado a partir de sua prática industrial.
Primeiro, pegue as características do usuário e as características do filme como entrada para a rede neural, onde:
- As características do usuário incorporam quatro informações de atributos: ID do usuário, gênero, ocupação e idade.
- As características do filme incorporam três informações de atributos: ID do filme, ID do tipo de filme e nome do filme.
Para a característica do usuário, mapeie o ID do usuário para uma representação vetorial com um tamanho de dimensão de 256, insira-a na camada totalmente conectada e faça um processamento semelhante para os outros três atributos. Em seguida, as representações de características dos quatro atributos são totalmente conectadas e adicionadas separadamente.
Para as características do filme, o ID do filme é processado de maneira semelhante ao ID do usuário. O ID do tipo de filme é inserido diretamente na camada totalmente conectada na forma de um vetor, e o nome do filme é representado por um vetor de comprimento fixo usando uma rede neural convolucional de texto. As representações de características dos três atributos são então totalmente conectadas e adicionadas separadamente.
Depois de obter a representação vetorial do usuário e do filme, calcule a similaridade de cosseno entre eles como a pontuação do sistema de recomendação personalizado. Finalmente, o quadrado da diferença entre a pontuação de similaridade e a pontuação real do usuário é usado como a função de perda do modelo de regressão.
Modelo de recomendação por fusão do PaddlePaddle.
Visão Geral do Sistema
Combinado com o modelo de recomendação por fusão do PaddlePaddle, o vetor de características do filme gerado pelo modelo é armazenado no mecanismo de busca por similaridade vetorial Milvus, e a característica do usuário é usada como o vetor-alvo a ser pesquisado. A busca por similaridade é realizada no Milvus para obter o resultado da consulta como os filmes recomendados para o usuário.
Modelo de recomendação por fusão combinado com Milvus.
O método de produto interno (IP) é fornecido no Milvus para calcular a distância vetorial. Após normalizar os dados, a similaridade por produto interno é consistente com o resultado da similaridade do cosseno no modelo de recomendação por fusão.
Aplicação do Sistema de Recomendação Pessoal
Há três etapas na construção de um sistema de recomendação personalizado com Milvus; para detalhes sobre como operar, consulte o Mivus Bootcamp [4].
Etapa 1:Treinamento do Modelo
# run train.py
$ python train.py
Executar este comando gerará um modelo recommender_system.inference.model no diretório, que pode converter dados de filmes e dados de usuários em vetores de características e gerar dados de aplicação para o Milvus armazenar e recuperar.
Etapa 2:Pré-processamento de Dados
# Data preprocessing, -f followed by the parameter raw movie data file name
$ python get_movies_data.py -f movies_origin.txt
Executar este comando gerará dados de teste movies_data.txt no diretório para realizar o pré-processamento dos dados de filmes.
Etapa 3:Implementando o Sistema de Recomendação Pessoal com Milvus
# Implementing personal recommender system based on user conditions
$ python infer_milvus.py -a <age>-g <gender>-j <job>[-i]
Executar este comando implementará recomendações personalizadas para usuários especificados.
O processo principal é:
- Por meio do load_inference_model, os dados dos filmes são processados pelo modelo para gerar um vetor de características do filme.
- Carregar o vetor de características do filme no Milvus via milvus.insert.
- De acordo com a idade / gênero / ocupação do usuário especificados pelos parâmetros, ele é convertido em um vetor de características do usuário, milvus.search_vectors é usado para recuperação por similaridade, e o resultado com a maior similaridade entre o usuário e o filme é retornado.
Previsão dos cinco principais filmes nos quais o usuário tem interesse:
TopIdsTitleScore
03030Yojimbo2.9444923996925354
13871Shane2.8583481907844543
23467Hud2.849525213241577
31809Hana-bi2.826111316680908
43184Montana2.8119677305221558
Resumo
Ao inserir informações do usuário e informações dos filmes no modelo de recomendação por fusão, podemos obter pontuações de correspondência e, em seguida, ordenar as pontuações de todos os filmes com base no usuário para recomendar filmes que possam ser de interesse do usuário. Este artigo combina Milvus e PaddlePaddle para criar um sistema de recomendação personalizado. Milvus, um mecanismo de busca vetorial, é usado para armazenar todos os dados de características dos filmes, e então a recuperação por similaridade é realizada sobre as características do usuário no Milvus. O resultado da busca é o ranking de filmes recomendado pelo sistema ao usuário.
O mecanismo de busca por similaridade vetorial Milvus [5] é compatível com várias plataformas de aprendizado profundo, pesquisando bilhões de vetores com resposta de apenas milissegundos. Você pode explorar mais possibilidades de aplicações de IA com Milvus com facilidade!
Referência
- 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 Recomendação por Fusão da 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/
Continue lendo

VDBBench Adds Cost-Aware Benchmarking for Vector Databases
Compare Zilliz Cloud, Pinecone, and turbopuffer with VDBBench cost-aware vector database benchmarks across latency, freshness, multitenancy, and cold starts.

Zilliz Cloud BYOC Now Available Across AWS, GCP, and Azure
Zilliz Cloud BYOC is now generally available on all three major clouds. Deploy fully managed vector search in your own AWS, GCP, or Azure account — your data never leaves your VPC.

Vector Databases vs. Hierarchical Databases
Use a vector database for AI-powered similarity search; use a hierarchical database for organizing data in parent-child relationships with efficient top-down access patterns.



