2. PinSage 模型处理利用 PinSage 模型获取 pins 的 embeddings,本文主要是获取电影数据的特征向量 。首先根据构建的二分图 g 和自定义的电影特征向量维度(默认 256 维)生成 PinSage 模型,再利用 PyTorch 训练该模型,然后通过训练好的模型生成 4000 条电影数据的特征向量 h_item 。
# Define the modelmodel = PinSAGEModel(g, item_ntype, textset, args.hidden_dims, args.num_layers).to(device)opt = torch.optim.Adam(model.parameters(), lr=args.lr)# Get the item embeddingsfor blocks in dataloader_test: for i in range(len(blocks)): blocks[i] = blocks[i].to(device) h_item_batches.Append(model.get_repr(blocks))h_item = torch.cat(h_item_batches, 0)
3. 数据加载将 PinSage 模型生成的电影特征向量 h_item 导入 Milvus 并返回对应的 ID;将电影的 ID 和对应的电影数据信息导入 MySQL 结构化数据库 。
# Load data to Milvus and MySQLstatus, ids = milvus.insert(milvus_table, h_item)load_movies_to_mysql(milvus_table, ids_info)
4. 查询根据用户偏好的电影 ID 在 Milvus 中获取对应的特征向量( embeddings ),然后利用返回的特征向量在 Milvus 中进行相似度检索,根据返回的相似结果 ID 在 MySQL 数据库中查找对应的电影信息 。
# Get embeddings that users like_, user_like_vectors = milvus.get_entity_by_id(milvus_table, ids)# Get the information with similar movies_, ids = milvus.search(param = {milvus_table, user_like_vectors, top_k})sql = "select * from " + movies_table + " where milvus_id=" + ids + ";"results = cursor.execute(sql).fetchall()
5. 系统推荐最终,根据查询的结果为用户提供相似电影的推荐 。综上就是推荐系统的主要流程,具体搭建步骤参考 Milvus-Bootcamp:https://github.com/milvus-io/bootcamp/tree/0.10.0/solutions/graph_based_recommend
| 系统展示该项目也提供了 FastAPI 接口和前端展示,通过模拟用户登录电影视频 APP 并勾选自己喜欢的电影,从而推荐用户可能感兴趣的电影 。
文章插图
| 总结基于图的卷积神经网络 PinSage 通过 pins-broards 二分图结构生成 pins 的高质量 embeddings 用于推荐任务 。而本文利用 MovieLens 数据集构建 users-movies 二分图,再利用 DGL 开源包结合 PinSage 模型生成电影的特征向量,再将此特征向量加载至 Milvus 特征向量相似度搜索引擎,之后根据用户偏好在 Milvus 中检索,得出相似的特征向量以实现向用户推荐电影的功能 。
本文使用的 Milvus 特征向量相似度搜索引擎可以对接各种深度学习平台,并运用于众多 AI 领域 。Milvus 充分利用现代处理器的并行计算能力,可以在单台通用服务器上完成对十亿级数据的毫秒级搜索,助力用户高效完成非结构化数据检索 。
参考资料
- https://patentimages.storage.googleapis.com/0e/96/31/98058cb476cd77/CN105913296A.pdf
- Graph Convolutional Neural Networks for Web-Scale Recommender Systems, arxiv: 1806.01973
- https://medium.com/pinterest-engineering/pinsage-a-new-graph-convolutional-neural-network-for-web-scale-recommender-systems-88795a107f48
- https://docs.dgl.ai/en/latest/
- http://files.grouplens.org/datasets/movielens/ml-1m.zip
推荐阅读
- laravel入门:环境搭建
- 帆布帐篷的搭建方法是什么
- 利用这个 USB ID 仓库识别更多 Linux 上的设备
- 用云服务器搭建VPN,构建自己的企业专线
- 接口测试很难吗?学会JMeter+Ant接口自动化搭建及实践
- Ubuntu18.04搭建jumpserver
- Java环境搭建,环境变量配置
- CentOS7下搭建Jellyfin个人流媒体服务器
- 教你利用 PHP 实现微服务
- nginx系列:常用利用shell统计日志