基于知识图谱(Neo4j)和大语言模型(LLM)的图检索增强(GraphRAG)的乳制品生产管理智能问答系统

基于知识图谱(Neo4j)和大语言模型(LLM)的图检索增强(GraphRAG)的乳制品生产管理智能问答系统

一、项目演示视频

b站演示视频与部署教程视频(点击这里)
https://www.bilibili.com/video/BV1SYcMzdEmM/?share_source=copy_web&vd_source=31c839f46a9a845dd6dd641cbd5c2ac1

在这里插入图片描述

二、技术栈

  1. 前端: Vue3.5 + TypeScript5.7 + Element Plus2.9 + ECharts5.6 + Pinia + Vue Router + Vite6.1 + Axios + Marked
  2. 后端: Flask + SQLite + Neo4j + 通义千问API + Flask-CORS + PyJWT + python-docx + pdfplumber + openpyxl + neo4j-driver

三、功能模块

【用户端功能】

  1. 用户管理:注册、登录、个人信息管理、密码修改、头像上传
  2. 文档浏览:文档列表查看、文档详情查看、文档搜索
  3. 智能问答:基于知识图谱的智能问答,支持多轮对话、图片上传识别
  4. 会话管理:创建会话、查看历史会话、删除会话、自动生成标题
  5. 问答历史:查看问答记录、知识图谱可视化展示、产品信息和生产记录检索展示、关键词提取展示、支持导出Word文档
  6. 个人中心:个人资料修改、密码修改、头像更换

【管理端功能】

  1. 数据统计:用户数、文档数、会话数、问答记录数、产品数、生产记录数统计、数据趋势可视化(饼图、折线图)
  2. 用户管理:用户信息查看、状态管理、密码重置、用户删除
  3. 文档管理:文档上传(TXT/DOCX/PDF/XLSX)、文档CRUD操作、文档内容查看、AI摘要生成、文档目录管理、MD5去重
  4. 知识图谱管理:
    • 数据同步:从文档中提取实体和关系,同步到Neo4j
    • 全量重建:重新构建整个知识图谱
    • 增量构建:仅处理未构建图谱的文档
    • 任务状态查询:查看图谱构建任务的进度和状态
    • 节点搜索:搜索特定实体及其邻居节点
  5. 知识图谱可视化:
    • 交互式图谱展示:使用ECharts力导向图展示节点和关系
    • 节点类型过滤:按实体类型筛选节点(16种实体类型)
    • 关系类型过滤:按关系类型筛选边(20种关系类型)
    • 节点搜索:搜索节点并展示1-3跳邻居关系
    • 布局切换:支持力导向布局和圆形布局
    • 节点大小:根据连接数动态调整节点大小
    • 统计信息:实时显示节点数、关系数、类型分布统计
  6. 产品信息管理:
    • 产品档案CRUD:创建、查询、更新、删除产品基本信息
    • 完整数据录入:产品编号、名称、类型、原材料、生产工艺、质量标准、图片等
    • 图片上传:支持产品图片上传和管理
    • 搜索和筛选:按产品名称或编号搜索
    • 级联删除:删除产品时自动删除关联的所有生产记录
    • 统计分析:产品数量、产品类型分布统计
  7. 生产记录管理:
    • 生产记录CRUD:创建、查询、更新、删除生产批次记录
    • 多图上传:支持每个生产记录上传多张图片(工艺图片和相关图片)
    • 关联产品:每个生产记录关联到对应的产品信息
    • 详细信息:生产日期、生产线、生产数量、质检员、关键指标、成本、产量等
    • 按产品筛选:查看特定产品的所有生产记录
    • 关键词搜索:按批次号、生产线等关键词搜索
    • 多维度统计:按生产线、质量状态、产品统计分析

【核心技术功能】

  1. GraphRAG检索增强生成:三路并行检索(知识图谱Top-7 + 产品信息Top-5 + 生产记录Top-5)
  2. 关键词提取:使用LLM从用户问题中提取关键词(支持历史对话上下文)
  3. 实体搜索与关系扩展:在知识图谱中搜索实体并扩展邻居关系
  4. 三元组提取:使用LLM从文档中提取<头实体, 关系, 尾实体>三元组(多线程并发加速文档提取)
  5. 文档溯源:每个知识三元组关联源文档ID,支持知识追溯
  6. 多模态问答:支持上传产品图片进行识别和问答(qwen-vl-plus模型)
  7. 异步任务处理:知识图谱构建任务异步执行,支持实时进度查询
  8. 文档MD5去重:基于文件MD5哈希检测重复文档,避免重复上传

【知识图谱节点类型(16种)】

  1. RawMaterial(原材料):原材料实体,如"生鲜牛乳"、“乳清”
  2. CattleBreed(奶牛品种):奶牛品种,如"荷斯坦牛"、“娟姗牛”
  3. Product(产品):乳制品产品,如"巴氏杀菌奶"、“酸奶”、“奶酪”
  4. IntermediateProduct(中间产物):中间产物
  5. ProcessStep(工艺步骤):生产工艺步骤,如"巴氏杀菌"、“发酵”、“均质”
  6. Equipment(设备):生产设备,如"板式换热器"、“发酵罐”
  7. Location(地点):地理位置
  8. Indicator(指标):质量检测指标,如"脂肪含量"、“蛋白质含量”
  9. DetectionMethod(检测方法):检测方法
  10. PersonnelRole(人员角色):人员角色
  11. Standard(标准):质量标准
  12. EnvironmentalCondition(环境条件):环境条件,如"温度"、“湿度”
  13. ProductionLine(生产线):生产线
  14. Additive(添加剂):食品添加剂,如"益生菌"、“稳定剂”
  15. Microorganism(微生物):微生物,如"嗜热链球菌"、“保加利亚乳杆菌”
  16. NutritionalComponent(营养成分):营养成分,如"钙"、“维生素D”
  17. PackagingMaterial(包装材料):包装材料,如"PET瓶"、“利乐包”
  18. RiskEvent(风险事件):风险事件

【知识图谱关系类型(20种)】

  1. INPUT_TO:输入到(原材料输入到工艺步骤)
  2. OUTPUT_FROM:输出从(产品从工艺步骤产出)
  3. USES_EQUIPMENT:使用设备(工艺步骤使用设备)
  4. GENERATES:生成(工艺步骤生成产品)
  5. FOLLOWS_STANDARD:遵循标准(产品遵循质量标准)
  6. MONITORS_INDICATOR:监控指标(工艺监控质量指标)
  7. CONTAINS:包含(产品包含营养成分)
  8. LOCATED_AT:位于(设备位于地点)
  9. EXECUTED_BY:由人员执行(工艺由人员执行)
  10. USES_MATERIAL:使用材料(工艺使用原材料)
  11. PRODUCES_INTERMEDIATE:产生中间产物(工艺产生中间产物)
  12. DETECTS_BY:检测方法(通过检测方法检测)
  13. REQUIRES_CONDITION:需要条件(工艺需要环境条件)
  14. ADDS_ADDITIVE:添加添加剂(添加剂添加到产品)
  15. INOCULATES_MICROORGANISM:接种微生物(微生物接种到产品)
  16. PROVIDES_NUTRIENT:提供营养(营养成分提供营养)
  17. USES_PACKAGING:使用包装(产品使用包装材料)
  18. MAY_CAUSE_RISK:可能导致风险(操作可能导致风险事件)
  19. DOCUMENTED_IN:记录于文档(实体记录于文档,用于文档溯源)
  20. RELATED_TO:相关(通用相关关系)

【数据库表结构(7张表)】

  1. user:用户表,存储用户基本信息和权限
  2. document_folder:文档目录表,存储文档分类目录
  3. document:文档表,存储上传的乳制品生产相关文档(支持MD5去重)
  4. conversation:会话表,存储用户的问答会话
  5. qa_history:问答历史表,存储每轮问答的详细记录(包含知识图谱负载、产品信息和生产记录检索结果)
  6. product_info:产品信息表,存储产品的档案数据(包含图片)
  7. production_record:生产记录表,存储生产批次记录(包含多张工艺图片)

四、项目链接

链接: https://pan.baidu.com/s/1JpV-q_SW8JU0Vp0GLO3ziA?pwd=cjdw 提取码: cjdw
  1. 完整系统源码
    (1)前端源码(web-vue)
    (2)后端与算法端源码(web-flask)
  2. 项目介绍文档
    (1)项目概述
    (2)项目技术栈
    (3)项目目录结构
    (4)系统架构图、功能模块图
    (5)数据库表结构详细说明
  3. 项目启动教程
    (1)环境安装教程(视频+文档)
    (2)系统启动教程(视频+文档)

Read more

【JavaEE初阶】告别小白!Java IO 流读写 + 文件操作实战

【JavaEE初阶】告别小白!Java IO 流读写 + 文件操作实战

我的个人主页我的专栏:人工智能领域、java-数据结构、Javase、C语言,MySQL,JavaEE初阶,希望能帮助到大家!!!点赞👍收藏❤ 目录 * 一、先搞懂:文件和文件系统的基础认知 * 二、Java 中操作文件的“核心工具”:File 类 * 1. File 类的关键属性、构造和方法 * 2. File 类实操:从获取信息到创建删除 * (1)搞懂 get 系列方法:获取文件信息 * (2)创建与删除文件:createNewFile() 和 delete() * (3)创建目录:mkdir() 和 mkdirs() 的区别 * (4)文件重命名:renameTo() * 三、Java IO

By Ne0inhk
Java 数据结构与算法:时间空间复杂度 从入门到实战全解

Java 数据结构与算法:时间空间复杂度 从入门到实战全解

🏠个人主页:黎雁 🎬作者简介:C/C++/JAVA后端开发学习者 ❄️个人专栏:C语言、数据结构(C语言)、EasyX、JAVA、数据结构与算法(JAVA)、游戏、规划、程序人生 ✨ 从来绝巘须孤往,万里同尘即玉京 文章目录 * Java 数据结构与算法:时间空间复杂度 从入门到实战全解 🚀 * 📝 文章摘要 * 🧠 前置知识回顾 * 一、数据结构与算法基础认知 📚 * 1. 什么是数据结构? * 2. 数据库 ≠ 数据结构(一定要分清) * 3. 数据结构与算法的关系 * 4. 最实用的学习路线(直接照做) * 二、算法复杂度:评价算法好坏的唯一标准 ⚖️ * 1. 两个核心概念 * ① 时间复杂度 ⏱️ * ② 空间复杂度 📦 * ③ 时间 vs 空间:怎么取舍?

By Ne0inhk
Java 注解与反射实战:手把手实现自定义日志与参数校验注解

Java 注解与反射实战:手把手实现自定义日志与参数校验注解

前言:为什么需要自定义注解? 在日常开发中,我们经常遇到两类重复工作: 日志记录:每个重要方法都要写 "开始执行"、"参数是 xxx"、"执行结束" 的代码;参数校验:判断输入是否为 null、年龄是否在合理范围、手机号格式是否正确等。 这些工作机械且冗余,而注解 + 反射正是解决这类问题的 "银弹"—— 用注解标记需要处理的地方,用反射自动执行逻辑,实现 "一次定义,多处复用"。 本文将带你从零实现两个实用案例: 1. 自定义日志注解@Log:自动记录方法调用细节; 2. 自定义参数校验注解@NotNull、@Range:自动校验方法参数合法性。 全程实战,代码可直接运行,搭配图解帮你吃透底层逻辑。 案例一:自定义日志注解@

By Ne0inhk

java: 警告: 源发行版 17 需要目标发行版 17

错误 java: 警告: 源发行版 17 需要目标发行版 17 要解决“java: 无效的目标发行版: 17”错误,需从JDK版本、构建工具配置、环境变量、IDE设置、依赖兼容性五个维度系统性排查。以下是具体步骤和解决方案: 一、验证JDK版本与一致性 1. 安装JDK 17: * 官方下载:Oracle JDK 17 * 开源替代:Adoptium Temurin JDK 17 验证构建工具使用的JDK: mvn -v# Maven使用的JDK版本 gradle -v# Gradle使用的JDK版本 确保与项目配置的JDK 17一致。 检查已安装的JDK版本: java-version javac -version 确保输出显示JDK 17(如17.0.11)

By Ne0inhk