菜谱智能问答2025
项目概述
菜谱智能问答项目基于Django框架,融合Neo4j图数据库和大语言模型技术,旨在构建一个智能化、语义丰富的菜谱知识图谱问答系统。项目通过构建菜谱相关知识图谱,支持用户以自然语言查询和交互,提升用户获取菜谱信息的效率和体验。
该项目解决了传统菜谱信息检索难以理解用户自然语言需求、数据孤立且关系不明确的问题,利用图数据库的关系表达优势和大语言模型的语义理解能力,实现智能问答和知识图谱的高效结合。
目标用户群体包括家庭厨师、美食爱好者、烹饪教学人员以及任何希望通过智能问答快速获取菜谱信息的用户。
技术架构
整体架构设计
项目采用典型的Web应用三层架构:
- 表现层(前端):基于Django模板系统实现动态页面渲染,结合Bootstrap和多种JS插件,提供响应式交互界面。
- 业务逻辑层(后端):Django视图处理用户请求,协调图数据库访问、用户管理和问答生成等核心功能。
- 数据层:采用Neo4j图数据库存储和管理菜谱知识图谱,结合关系模型和节点数据,支持复杂查询和关系推断。
同时,项目引入大语言模型(LLM)API作为智能问答引擎,增强自然语言理解和答案生成能力。
主要技术栈
- 后端框架:Python Django
- 数据库:
- 关系型数据库(Django默认,用于用户信息等)
- 图数据库:Neo4j(通过py2neo库交互)
- 自然语言处理:jieba分词
- 智能问答:OpenAI大语言模型API
- 前端技术:
- Django模板语言(DTL)
- Bootstrap框架
- JavaScript插件(FullCalendar、日期时间选择器等)
- 其他:
- 用户认证扩展基于Django自带认证系统
- 静态文件管理与资源优化
模块间关系和交互
- accounts模块负责用户身份认证和信息管理,为系统提供安全的访问控制和用户个性化支持。
- myneo4j模块作为系统核心,管理菜谱知识图谱数据,处理图谱查询和智能问答请求,依赖accounts模块用户数据,调用外部LLM服务生成答案。
- templates目录提供前端展示页面,与后端视图紧密配合,实现用户界面展示、交互和数据呈现。
- static目录支撑前端样式和脚本,为页面功能和视觉效果提供基础资源。
整体架构中,用户通过前端页面提交请求,经由Django视图处理后访问myneo4j模块的图谱数据和问答服务,系统结合Neo4j数据库和大语言模型,最终将结果动态渲染回前端,实现完整的智能问答流程。
功能模块
1. myneo4j模块(知识图谱与智能问答核心)
- 图谱管理:定义图谱节点(MyNode)和问答数据(MyWenda)模型,支持复杂节点和关系的创建、维护。
- 数据库操作:封装Neo4j访问工具(pyneo_utils.py),实现高效查询和关系获取。
- 智能问答:结合jieba分词和OpenAI大语言模型API,实现对用户自然语言提问的语义解析和答案生成。
- 业务视图:处理图谱查询请求、问答交互,动态生成页面数据,支持前端数据展示。
- 路由设计:RESTful接口,支持图谱查询、问答输入、数据初始化等多种请求。
- 扩展性:模块设计清晰,便于后续功能扩展和维护。
2. accounts模块(用户管理与认证)
- 用户模型扩展:基于Django AbstractUser,增加自定义字段如密码加密存储支持。
- 认证流程:实现用户注册、登录、登出功能,表单层严格验证输入合法性。
- 信息维护:用户可编辑个人信息,支持头像上传和资料更新。
- 后台管理:管理员通过Django admin界面管理用户,支持密码加密和界面定制。
- 安全机制:访问权限控制(login_required装饰器),保障用户数据安全。
3. templates目录(前端页面模板)
- 基础布局:base.html定义全局结构和导航,保证页面风格一致。
- 首页功能入口:index.html展示系统整体功能入口和交互界面。
- 用户认证页:login.html和register.html提供用户登录和注册表单。
- 用户信息页:my_info.html支持用户资料查看和编辑。
- 图谱展示页:show.html集成FullCalendar和时间选择器,动态展示知识图谱数据。
- 智能问答页:wenda.html和wenda2.html支持问答输入和结果展示,后者可能支持更丰富的聊天交互体验。
- 技术特点:采用Django模板语言,结合Bootstrap实现响应式设计,集成多种JS插件提升用户体验。
模块协作关系
- accounts模块保障用户身份验证与权限管理,支持myneo4j模块的问答数据关联。
- myneo4j模块提供知识图谱数据和智能问答服务,供前端页面调用和展示。
- templates目录作为前端视图层,承载所有页面渲染,与后端视图和模块数据紧密互动。
- static资源目录支持前端样式和脚本,为各页面功能提供基础支持。
项目结构
xy25_neo4j_cookbook/
├── accounts/ # 用户管理模块
│ ├── models.py # 用户模型定义
│ ├── forms.py # 登录、注册表单
│ ├── views.py # 用户认证与信息视图
│ ├── urls.py # 用户相关路由
│ └── admin.py # 后台用户管理
├── myneo4j/ # 知识图谱与智能问答核心模块
│ ├── models.py # 图谱节点和问答模型
│ ├── pyneo_utils.py # Neo4j数据库操作工具
│ ├── views.py # 图谱查询与问答视图
│ ├── urls.py # 图谱与问答路由
│ └── admin.py # 预留后台管理扩展
├── templates/ # 前端页面模板
│ ├── base.html # 基础布局
│ ├── index.html # 首页
│ ├── login.html # 登录页
│ ├── register.html # 注册页
│ ├── my_info.html # 用户信息页
│ ├── show.html # 图谱展示页
│ ├── wenda.html # 智能问答页
│ └── wenda2.html # 智能问答扩展页
├── static/ # 静态资源(CSS、JS、图片等)
├── datas/ # 数据文件(词典、菜谱CSV等)
├── xy_neo4j/ # Django项目配置目录
│ ├── settings.py # 项目配置文件
│ ├── urls.py # 全局路由配置
│ └── wsgi.py # WSGI入口
├── manage.py # Django管理脚本
├── requirements.txt # 依赖库列表
└── README.md # 项目说明文档
关键目录和文件作用
- accounts/models.py:定义用户扩展模型UserProfile,支持自定义字段。
- myneo4j/models.py:定义知识图谱节点和问答数据模型,支撑图谱存储。
- myneo4j/pyneo_utils.py:封装Neo4j操作,简化复杂图数据库交互。
- templates/base.html:全局页面结构模板,保证一致的界面样式。
- templates/show.html:核心图谱数据展示页面,集成交互插件。
- xy_neo4j/settings.py:项目配置中心,包含数据库、静态文件、应用注册等。
- manage.py:Django项目管理工具,支持启动和管理项目。
部署和运行
环境要求
- Python 3.8及以上版本
- Django 3.x或更高版本
- Neo4j图数据库(建议Neo4j 4.x及以上)
- py2neo Python库
- jieba分词库
- OpenAI API访问权限及密钥
- 依赖库列于requirements.txt
安装和配置步骤
- 环境准备
- 安装Python及pip
- 创建并激活虚拟环境(推荐)
- 安装依赖:
pip install -r requirements.txt
- 数据库配置
- 安装并启动Neo4j服务
- 配置Neo4j连接参数(URI、账号、密码)于
myneo4j/pyneo_utils.py
或Django settings中
- OpenAI API配置
- 申请OpenAI API密钥
- 在项目配置文件或环境变量中设置API密钥,确保myneo4j模块调用接口正常
- Django配置
- 配置
xy_neo4j/settings.py
数据库连接及静态文件路径 - 执行迁移命令:
python manage.py migrate
- 创建超级用户:
python manage.py createsuperuser
- 数据导入(可选)
- 使用项目中提供的
datas/recipe.csv
等数据,初始化图谱数据
启动方式
- 运行Django开发服务器:
python manage.py runserver
- 访问默认地址
http://127.0.0.1:8000/
,进入首页,开始使用菜谱智能问答功能。
以上即为菜谱智能问答项目的整体介绍。项目通过清晰的模块划分和先进的技术整合,提供了一个功能完备、交互友好的智能菜谱问答平台,具备较强的扩展性和实用价值。
如有问题请联系作者:https://qalangtao.com 。
900
![图片[1]-菜谱智能问答2025](https://qalangtao.com/wp-content/uploads/2025/07/微信图片_20250706180618-1024x480.png)
![图片[2]-菜谱智能问答2025](https://qalangtao.com/wp-content/uploads/2025/07/微信图片_20250706180641-1024x476.png)
![图片[3]-菜谱智能问答2025](https://qalangtao.com/wp-content/uploads/2025/07/微信图片_20250706180646-1024x476.png)
![图片[4]-菜谱智能问答2025](https://qalangtao.com/wp-content/uploads/2025/07/微信图片_20250706180650-1024x475.png)
![图片[5]-菜谱智能问答2025](https://qalangtao.com/wp-content/uploads/2025/07/微信图片_20250706180655-1024x474.png)
![图片[6]-菜谱智能问答2025](https://qalangtao.com/wp-content/uploads/2025/07/微信图片_20250706180700-1024x477.png)
![图片[7]-菜谱智能问答2025](https://qalangtao.com/wp-content/uploads/2025/07/微信图片_20250706180704-1024x477.png)
![图片[8]-菜谱智能问答2025](https://qalangtao.com/wp-content/uploads/2025/07/微信图片_20250706180708-1024x473.png)
![图片[9]-菜谱智能问答2025](https://qalangtao.com/wp-content/uploads/2025/07/微信图片_20250706180712-1024x580.png)
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END