计算机毕业设计LangChain+知识图谱Neo4j和多模态大模型LLM的图检索增强GraphRAG的植物病害知识智能问答系统 大模型毕业设计 人工智能(源码+文档+PPT+讲解)

📋 项目概述

本项目是面向植物病害资料检索、知识管理与辅助问答的 Web 系统,采用 Vue 3 与 Flask 前后端分离架构。系统将文档、病害档案、田间案例和图谱三元组组织为可追溯的领域知识,并在问答时将检索证据与用户问题一起交给大语言模型生成回答。

系统包含普通用户端和管理端。普通用户可完成密码或短信验证码登录、图片辅助问答、会话管理、资料浏览与个人资料维护;管理员可维护用户、知识库、图谱三元组、模型配置、病害档案、案例记录及 SQLite 业务数据。系统用于学习、演示和辅助信息检索,页面中的病害判断和防治建议不构成真实诊断或用药依据。


🎯 项目创新点

多源证据问答:将知识库文档、病害档案、田间案例和图谱关系一起作为问答证据,并在回答完成后展示检索依据。

受限本体图谱:围绕植物病害场景固定 10 类节点和 11 类关系,结合词典、别名和规则抽取,减少自由文本建图带来的类型漂移。

可降级的图数据服务:三元组先持久化到 SQLite,并在 Neo4j 可用时同步;Neo4j 暂不可用时,检索和可视化仍可使用 SQLite 三元组完成只读展示。

文本与视觉双模型路由:模型配置按文本和视觉能力、优先级、启停状态路由到 OpenAI 兼容接口;模型密钥使用 Fernet 加密保存,接口不返回明文密钥。

可感知的流式交互:SSE 输出实体识别、文档匹配、图谱关联、上下文聚合与回答格式化等阶段进度,只描述可验证的处理步骤,不展示模型内部思维链。

安全认证闭环:密码采用 PBKDF2 哈希保存,支持 JWT 双角色权限、短信验证码登录和短信校验后的密码重置。

可操作的图谱界面:支持节点搜索、1--2 跳邻居、类型和关系筛选、力导向/环形布局、节点数量限制及节点关系详情。

完整业务数据管理:除问答反馈表外,管理端可对 SQLite 中的业务表进行元数据驱动的增删改查,并对敏感字段做脱敏处理。

🚀 主要功能

用户端功能

账号与个人中心:支持普通用户注册、用户名密码登录、短信验证码登录、短信验证码重置密码、退出登录、个人资料和头像维护。

文档浏览:支持按标题、摘要、目录和图谱状态浏览知识库文档,查看正文、摘要和关联状态。

智能问答:支持多轮会话、Markdown 安全渲染、文本问答和图片辅助问答;图片支持 JPG、PNG、WebP,服务端会验证真实图片内容并将 WebP 规范化为视觉模型可用格式。

会话管理:支持新建、重命名、删除、清空历史、重新进入历史会话和 Word 导出;历史消息中的上传图片会随会话恢复。

LLM 标题生成:可对当前会话发起标题生成,展示阶段进度,并允许用户在保存前编辑标题。

检索依据与图谱证据:回答完成后展示匹配文档、病害档案、案例记录、实体关键词和关联图谱;文档、档案和案例均可在弹窗中查看详情。

问答反馈:支持对单条问答提交正向或负向评价及补充说明。

管理端功能

控制台与数据大屏:展示用户、文档、会话、问答、图谱和业务数据的统计概览、分布和趋势。

用户管理:支持用户查询、新增、编辑、角色切换、启停、密码重置和删除;管理员路由与普通用户路由严格分离。

模型管理:支持维护文本/视觉模型的供应商、展示名称、模型名、Base URL、优先级、启停状态和连通性测试结果;API Key 加密存储,仅展示是否已配置。

文档与目录管理:支持目录树维护、文档上传、内容提取、摘要生成、下载、删除、单文档或目录级建图同步。

知识图谱管理:支持图谱全量重建、增量构建、目录同步、任务状态查看,以及图谱三元组的分页查询和 CRUD;写入后会尝试同步 Neo4j。

知识图谱可视化:支持节点关键词搜索、实体类型和关系类型筛选、关系多选、1--2 跳邻居展开、力导向/环形布局、节点数量上限和全屏查看。节点数量查询参数为 node_limit,默认 50,范围为 1--500;节点详情会展示真实的关系统计、相邻节点、关系方向和展开深度。

植物病害档案管理:支持病害档案的分页查询、搜索、统计、图片管理和完整 CRUD。

病害案例管理:支持关联病害的案例记录、多图管理、关键词与条件筛选、统计和完整 CRUD。

SQLite 数据管理:按表元数据展示除 qa_feedback 外的全部业务表,左右区域独立滚动,表格分页展示;支持新增、编辑和删除,密码哈希、验证码哈希和模型密钥等敏感字段不直接回显。

核心技术功能

领域实体识别:通过植物病害词典、同义词和规则补充识别病害、植物、病原体、症状、药剂、防治措施、地点、机构、文档和时间点。

三元组构建与本体校验:从文档摘要和正文中抽取并归一化 <源节点, 关系, 目标节点>,只允许写入预定义的节点与关系类型。

GraphRAG 检索:按实体、关键词和问题片段查询文档、病害档案、案例和图谱三元组,形成结构化检索快照。

证据约束生成:将检索结果序列化为模型上下文;图片作为辅助输入,证据不足时要求模型说明边界,避免虚构病害或药剂结论。

流式问答与持久化:使用 SSE 输出回答阶段和文本片段;完成后持久化问题、回答、图片路径、检索快照、图谱快照及实际使用的模型信息。

文件安全处理:文档支持 TXT、MD、PDF、DOCX、XLSX,图片上传验证扩展名与真实格式,所有上传文件由受控目录统一管理。

🏗️ 系统架构和技术栈

整体架构

┌────────────────────┐      HTTP / SSE      ┌────────────────────┐

│ Vue 3 前端          │ ◄─────────────────► │ Flask 后端          │

│ Port: 3000          │                     │ Port: 5010          │

│ 用户端 / 管理端     │                     │ JWT / RBAC / API    │

└────────────────────┘                     └───────┬────────────┘

                                                    │

             ┌──────────────────────────────────────┼──────────────────────────────────────┐

             │                                      │                                      │

             ▼                                      ▼                                      ▼

┌────────────────────┐                    ┌────────────────────┐                 ┌────────────────────┐

│ SQLite              │                    │ Neo4j              │                 │ OpenAI 兼容模型服务 │

│ 业务数据/三元组     │                    │ 图谱同步与管理     │                 │ 文本 / 视觉能力     │

└────────────────────┘                    └────────────────────┘                 └────────────────────┘

             │

             ▼

┌────────────────────┐

│ 本地受控文件存储    │

│ 文档/头像/病害图/案例图/问答图 │

└────────────────────┘

前端通过 Axios 访问 REST API,并通过 POST /api/chat/stream 接收问答流。后端使用 SQLite 保存业务事实和图谱三元组,Neo4j 用于正式图谱同步;当 Neo4j 不可达时,系统保留 SQLite 三元组的检索和可视化读能力。模型服务由管理端动态配置,不绑定某一个固定厂商。

技术栈详解

前端技术栈

Vue 3 + TypeScript:使用 Composition API 组织页面、状态与交互逻辑。

Vite:提供本地开发服务与生产构建。

Vue Router + Pinia:实现前端路由守卫、登录态恢复和角色页面跳转。

Element Plus:提供表单、表格、对话框、分页、通知等基础 UI 组件。

ECharts:实现可拖拽、缩放的知识图谱力导向图和环形布局。

Axios:封装鉴权请求、错误处理和文件上传。

安全 Markdown 渲染组件:将问答中的标题、强调、列表和分隔线转换为受控页面结构,避免直接注入 HTML。

后端技术栈

Flask + Flask-CORS:提供 REST 接口、SSE 问答流和跨域支持。

SQLite:保存用户、目录、文档、会话、问答历史、病害档案、案例、图谱三元组、图谱任务、问答反馈、模型配置和验证码等数据。

PyJWT:签发并校验 JWT;用户状态、角色和 token 版本参与认证校验。

PBKDF2-HMAC:对用户密码进行带盐哈希;短信验证码仅保存 SHA-256 哈希。

cryptography/Fernet:加密模型 API Key,管理接口仅返回 has_api_key 等状态信息。

pdfplumber、python-docx、openpyxl:分别解析 PDF、DOCX 和 XLSX 文档内容。

Pillow:验证图片内容、读取格式并在必要时将 WebP 转换为 JPEG。

Requests:调用模型服务和阿里云市场短信网关。

算法服务技术栈

Neo4j Python Driver:负责 Neo4j 连通性检查、图谱清空和三元组同步。

领域词典与规则抽取:以植物病害本体为约束,完成实体识别、别名归一和三元组构建。

LangChain Core + LangChain OpenAI:调用可配置的 OpenAI 兼容文本或视觉模型。

模型路由器:根据能力类型、启停状态和优先级选择模型;无可用密钥时使用 mock 适配器支持本地演示与测试。

阿里云市场短信网关:复用项目 短信/SendSms.java 的接口约定,实现验证码发送、冷却、过期和失败提示。


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容