🎬 AI电影推荐器
智能电影推荐系统 奥拉玛, LanceDB,以及 快速API用几句话描述你的感受,并使用语义搜索和LLM推理获得个性化的电影推荐。
🌟 特性
- 语义搜索:使用矢量嵌入来查找与您的描述匹配的电影
- LLM供电:Ollama的Llama3模型提供智能建议
- 快速矢量数据库:LanceDB用于闪电般快速的相似性搜索
- 漂亮的UI:具有自定义渐变主题的现代React前端
- 简单API:使用两个端点清理FastAPI后端
🏗️ 建筑
User Input → FastAPI → LanceDB (Vector Search) → Ollama (LLM) → Movie Recommendation- 用户用关键字描述他们的电影氛围
- 后端通过以下方式嵌入查询
nomic-embed-text - LanceDB通过矢量搜索找到前5部类似电影
- Llama3分析候选人并选择最佳匹配
- 返回:电影名称、年份和导演
📋 先决条件
在开始之前,请确保您已经:
- Python 3.8+
- Node.js 18+ 和npm
- 奥拉玛 已安装并正在运行
🚀 安装指南
第一步:安装Olama
macOS
brew install ollamaLinux
curl -fsSL https://ollama.com/install.sh | sh视窗
下载自 ollama.com
第二步:提取所需模型
# Pull the embedding model (for vector search)
ollama pull nomic-embed-text
# Pull the LLM model (for recommendations)
ollama pull llama3步骤3:启动Ollama服务器
ollama serve在单独的终端中保持此运行。它将继续运行 http://localhost:11434
步骤4:设置后端
# Create virtual environment
python -m venv .venv
# Activate virtual environment
# On macOS/Linux:
source .venv/bin/activate
# On Windows:
# .venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Initialize the database (first time only)
python init_database.py
# Start the FastAPI server
uvicorn main:app --reload后端将运行 http://localhost:8000
步骤5:设置前端
cd frontend
# Install dependencies
npm install
# Start development server
npm run dev前端将继续运行 http://localhost:3000
🎯 用法
- 打开 http://localhost:3000 在浏览器中
- 键入描述性单词(例如,“黑暗”、“神秘”、“惊悚片”)
- 按 太空 在每个单词后面添加标签
- 点击 “查找电影”
- 获得您的个性化推荐,包括标题、年份和导演!
📁 项目结构
.
├── main.py # FastAPI backend
├── llm_controls.py # LLM and vector search logic
├── init_database.py # Database initialization script
├── movies.csv # Movie dataset
├── requirements.txt # Python dependencies
├── movie_vectors.lancedb/ # LanceDB vector database
└── frontend/ # React frontend
├── src/
│ ├── App.jsx # Main React component
│ ├── main.jsx # React entry point
│ └── index.css # Tailwind + custom styles
├── package.json
├── tailwind.config.js
└── vite.config.js🔌 API终点
发布 /recommend
根据您的描述获得电影推荐。
请求:
{
"prompt": "dark mysterious thriller",
"model": "llama3"
}答复:
{
"recommendation": "The Prestige (2006) - Christopher Nolan"
}发布 /generate
原始LLM生成端点。
请求:
{
"prompt": "Tell me about sci-fi movies",
"model": "llama3"
}获取 /
API信息和可用端点。
🛠️ 技术栈
后端
- 快速API:现代Python web框架
- 奥拉玛:本地LLM推理
- LanceDB:用于嵌入的矢量数据库
- 熊猫:数据操作
前端
- 反应18:UI库
- 维特:构建工具
- 顺风CSS:造型
- Inter&JetBrains单声道:排版
🎨 定制
添加更多电影
编辑 movies.csv 并运行:
python init_database.py更改LLM模型
在 llm_controls.py,替换 llama3 对于任何Olama型号:
ollama.chat(model="mistral", ...)修改提示
编辑 system_prompt 在 llm_controls.py 更改推荐样式。
🐛 故障排除
Ollama连接错误
- 确保Olama正在运行:
ollama serve - 检查模型是否被拉出:
ollama list
未找到数据库
- 运行初始化:
python init_database.py
前端无法连接到后端
- 验证后端是否在端口8000上运行
- 检查中的代理设置
frontend/vite.config.js
端口已在使用中
# Backend (change port)
uvicorn main:app --reload --port 8001
# Frontend (change in vite.config.js)📝 许可证
麻省理工学院
🤝 贡献
请随时打开问题或提交pull请求!
______________________________________________________________________
内置于❤️ 使用Ollama、LanceDB和React
