这是一个基于 RAG(Retrieval-Augmented Generation)技术的电影推荐与问答系统。用户可以通过自然语言查询电影信息、获取推荐或解答相关问题。系统结合了 FastAPI 后端、Streamlit 前端、LangChain 和 OpenAI 的 GPT 模型,实现了高效的自然语言处理和电影推荐功能。
-
电影信息查询:
- 支持通过自然语言查询电影信息,例如:
- “《盗梦空间》的导演是谁?”
- “《泰坦尼克号》的上映时间是什么时候?”
- 支持通过自然语言查询电影信息,例如:
-
电影推荐:
- 根据用户输入的关键词或电影特征,推荐相关电影,例如:
- “推荐几部类似《星际穿越》的电影。”
- “有哪些高分科幻电影?”
- 根据用户输入的关键词或电影特征,推荐相关电影,例如:
-
电影问答:
- 回答与电影相关的具体问题,例如:
- “《阿甘正传》获得了哪些奖项?”
- “《肖申克的救赎》的评分是多少?”
- 回答与电影相关的具体问题,例如:
- 框架:FastAPI
- 语言模型:OpenAI GPT
- 向量存储:FAISS
- 文本嵌入:OpenAI Embeddings
- 数据处理:Pandas
- 数据库:SQLite
- 框架:Streamlit
- UI 组件:Streamlit 原生组件
- RAG 系统:LangChain
- 环境管理:Python +
dotenv
- 容器化:Docker
movie-recommendation-system/
│
├── backend/
│ ├── main.py # FastAPI 后端服务
│ ├── database.py # 数据库操作
│ ├── embeddings.py # 文本嵌入与向量存储
│ ├── rag.py # RAG 系统实现
│ └── requirements.txt # 后端依赖
│
├── frontend/
│ ├── app.py # Streamlit 前端界面
│ └── requirements.txt # 前端依赖
│
├── data/
│ └── movies.csv # 电影数据文件
│
├── .env # 环境变量文件(存储 OpenAI API 密钥等)
├── Dockerfile # Docker 容器化配置
└── README.md # 项目说明文档
git clone https://github.com/liqiu6789/MovieMate.git
cd MovieMate
在项目根目录下创建 .env 文件,并添加 deepseek API 密钥:
DEEPSEEK_API_KEY=your_deepseek_api_key
后端依赖
cd backend
pip install -r requirements.txt
前端依赖
cd ../frontend
pip install -r requirements.txt
将电影数据文件(如 movies.csv)放置在 data/ 目录下。
cd ../backend
uvicorn main:app --reload
- 后端服务默认运行在 http://localhost:8000。
- 访问 http://localhost:8000/docs 查看 API 文档。
cd ../frontend
streamlit run app.py
- 前端界面默认运行在 http://localhost:8501。
- 在界面中输入问题,系统会返回电影信息或推荐列表。
docker build -t movie-recommendation-system .
docker run -d -p 8000:8000 movie-recommendation-system
-
URL: /query
-
Method: POST
-
Request Body:
{
"query": "推荐几部类似《星际穿越》的电影。"
}
Response:
{
"response": "以下是推荐的电影:1. 《盗梦空间》 2. 《火星救援》 3. 《地心引力》"
}
-
“《盗梦空间》的导演是谁?”
-
“《泰坦尼克号》的上映时间是什么时候?”
-
“推荐几部类似《星际穿越》的电影。”
-
“有哪些高分科幻电影?”
-
“《阿甘正传》获得了哪些奖项?”
-
“《肖申克的救赎》的评分是多少?”
-
邮箱: liqiu6789@qq.com
-
GitHub: liqiu123456123