项目背景※
客户要求做一个基于图神经网络和协同过滤的商品推荐系统,但是时间很赶,我只能做一个demo让他明天糊弄糊弄。数据其实没有找好,真正的模型也没开始训练,只是搭了一个简单的前后端界面。数据用的是商品推荐系统里的shopping.sql,尽管图片丢失,但是无图也是可以用的,后续考虑再加上图片。项目成品如下:

选用的技术栈是flask,而且做了api接口开发,方便客户用自己的界面进行调用。
值得一提的是,此次的数据我放在了claw cloud里——claw cloud为每一个用户提供 每月五美元 的额度,不仅可以使用devbox、数据库等,还可以部署几十款app,包括但不限于WP建站、Dify、Anki同步等实用且好玩的templates,而你所需要的只是绑定一个注册超过180天的GitHub账号!!!欢迎大家点击我的Referral Link进行注册~~

项目部署※
项目写好之后,我首先考虑的是交出源码,但是担心客户使用不便,且我也不想把数据库的权限交给客户,所以我打算部署在我的云服务器上。以下是部署详细记录:
安装conda(CentOS)※
# 下载安装包
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
--2025-04-27 19:54:08-- https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh
# 赋予执行权限
chmod +x Miniconda3-latest-Linux-x86_64.sh
# 安装
./Miniconda3-latest-Linux-x86_64.sh
# 填写yes同意服务条款后,初始化conda
~/miniconda3/bin/conda init
# 验证是否成功安装
conda --version
开放端口※
开放端口很重要,我在控制台开放端口之后,发现在浏览器死活打不开界面,后来执行了以下两个命令才得以打开
sudo firewall-cmd --add-port=5000/tcp --permanent
sudo firewall-cmd --reload
启动项目※
目录结构说明
recommend-system/
├── app/
│ ├── init.py # Flask应用初始化
│ ├── api/
│ │ ├── init.py # API蓝图初始化
│ │ └── routes.py # 路由与业务逻辑
│ ├── models/
│ │ ├── init.py # 模型包初始化
│ │ ├── gnn.py # GNN模型定义
│ │ └── cf.py # 协同过滤模型定义
│ ├── utils/
│ │ ├── init.py # 工具包初始化
│ │ ├── data_loader.py # 数据加载与预处理
│ │ ├── graph_builder.py # 图结构构建工具
│ │ └── evaluator.py # 模型评估工具
│ ├── templates/
│ │ └── index.html # 前端可视化界面模板
│ └── static/ # 静态文件
├── config.py # 配置文件
├── run.py # 启动入口
├── requirements.txt # 依赖包列表
├── README.md # 项目说明文档
├── reports/ # 评估报告与图表
└── shopping.sql # 数据SQL脚本
# 创建虚拟环境
conda create -n recommend-system python=3.11
# 启动虚拟环境
conda activate recommend-system
# 安装pip
conda install pip
# 安装依赖
pip install -r requirements.txt
# 启动命令
python run.py
感兴趣的朋友可以去“推荐系统”看看(限时开放,因为暴露ip总是不太好的hh)
总结※
本文只是抛砖引玉,等明天客户的反馈再进行修改,并且后续会写一两篇详细介绍一下此次项目的推荐算法。我认为这个项目还是很值得做到尽善尽美的,改成更适合生产力的技术栈之后,可以放到GitHub上与大家分享。