CookHero(烹饪英雄)是一个基于大语言模型(LLM)和检索增强生成(RAG)技术的智能烹饪助手系统。它不仅是一个菜谱库,更是您的私人厨房顾问,能够:
- 🔍 智能问答:解答烹饪技巧、食材搭配、营养知识等问题
- 🍽️ 个性化推荐:根据用户口味、健康目标、饮食限制提供菜品推荐
- 📝 食谱管理:上传并管理个人食谱,构建专属知识库
- 🧠 深度理解:通过多轮对话理解用户意图,提供精准建议
- 🌐 实时搜索:结合 Web 搜索获取最新烹饪资讯和趋势
CookHero 面向厨房新手、健身爱好者、健康饮食倡导者、过敏体质用户等多种人群,致力于让烹饪变得简单、科学、有趣。
- 自然语言理解用户需求(如"我想做一道低脂高蛋白的晚餐")
- 支持多轮对话,记录上下文历史
- 自动识别用户意图(查询、推荐、闲聊等)
- 向量检索:语义相似度匹配(基于 Milvus)
- BM25 检索:关键词精确匹配
- 元数据过滤:根据烹饪时间、难度、营养成分等筛选
- 多级缓存:Redis + Milvus 双层缓存,提升响应速度
- 用户可上传私人食谱,系统自动分析并索引
- 全局食谱库(来自 HowToCook)与个人食谱融合查询
- 支持 Markdown 格式食谱的智能解析
- 支持用户画像,基于用户偏好进行推荐
- 支持设置模型回答风格
- 使用专门的 Reranker 模型对检索结果进行二次排序
- 提高结果相关性和准确度
- 集成 Tavily 搜索引擎,在知识库不足时自动联网查询
- 结合实时信息和本地知识,给出综合答案
- 用户注册/登录(JWT 身份认证)
- 会话管理(多会话隔离,历史记录保存)
- 图片识别:支持上传食材/菜品图片进行智能识别
- 意图理解:结合图片和文字理解用户完整意图
- 多种场景:菜品识别、食材识别、烹饪指导、食谱查询
- 灵活接入:支持 OpenAI 兼容的视觉模型 API
- 质量监控:基于 RAGAS 框架的自动化评估
- 核心指标:忠实度(Faithfulness)、答案相关性(Answer Relevancy)
- 异步评估:后台异步执行,不影响响应速度
- 趋势分析:支持评估趋势查看和质量告警
- 数据持久化:评估结果存储于 PostgreSQL
- 意图识别:判断用户查询类型(菜谱查询、烹饪技巧、闲聊等)
- 查询改写:优化用户输入,提取关键信息
- 缓存查询:检查 Redis 和 Milvus 缓存
- 混合检索:
- 向量检索(语义相似度)
- BM25 关键词检索
- 元数据过滤(烹饪时间、难度等)
- 结果融合:使用加权融合或 RRF (Reciprocal Rank Fusion)
- 重排序:Reranker 模型对结果精排
- 上下文压缩:提取最相关片段
- LLM 生成:结合检索内容生成最终答案
- Web 增强(可选):信息不足时触发 Tavily 搜索
详见 项目结构文档
- Python:>= 3.12
- Node.js:>= 18
- Docker 和 Docker Compose(推荐)
-
克隆项目
git clone https://github.com/yourusername/CookHero.git cd CookHero -
配置环境变量
cp .env.example .env # 编辑 .env 文件,填入必要的 API Key -
启动基础设施
cd deployments docker-compose up -d这将启动:
- PostgreSQL (端口 5432)
- Redis (端口 6379)
- Milvus (端口 19530)
- MinIO (端口 9001)
- Etcd (内部使用)
-
安装 Python 依赖并启动后端
cd .. python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate pip install -r requirements.txt # 初始化数据库 python -m scripts.howtocook_loader # 启动后端服务 uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
-
启动前端
cd frontend npm install npm run dev -
访问应用
- 前端:http://localhost:5173
- 后端 API:http://localhost:8000
- API 文档:http://localhost:8000/docs
创建 .env 文件(参考 .env.example):
包含:
- LLM 提供商配置(快速/标准两层模型)
- 向量存储配置
- 检索参数(top_k, score_threshold)
- Reranker 配置
- 缓存策略
- 数据库连接信息
详细说明见 config.yml 中的注释。
- 添加新 API 端点:在
app/api/v1/endpoints/下创建新文件 - 添加新服务:在
app/services/下实现业务逻辑 - 修改对话流程:在
app/conversation/下调整对话管理逻辑 - 修改 RAG 管道:在
app/rag/pipeline/下调整检索流程
cd frontend
npm run dev # 开发服务器
npm run build # 生产构建
npm run lint # 代码检查- 多模态支持:食材图片识别、菜品识别 ✅
- RAG 评估系统:基于 RAGAS 的质量监控 ✅
- 菜品图片生成:AI 生成菜品效果图
- 语音交互:语音输入查询、语音播报步骤
- 营养分析:自动计算卡路里、营养成分
- 社区功能:用户分享、评分、评论
- 智能食材管理:冰箱清单、食材过期提醒
- AR 烹饪指导:增强现实辅助烹饪
欢迎贡献代码、提出问题或建议!
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 提交 Pull Request
本项目基于 APACHE LICENSE 2.0 许可证开源。详情请参阅 LICENSE 文件。
如果这个项目对您有帮助,请给一个 ⭐️ Star 支持一下!


