AI源码
AI源码AI 精选 · 优质源码 · 助力学习

基于知识图谱与 RAG 的医疗问答系统

本系统是一个融合中文医疗知识图谱与检索增强生成(RAG)的智能医疗问答 Web 系统。系统基于多源真实医疗数据构建知识图谱(实体-关系三元组),结合 BM25 + TF-IDF 混合检索与意图分类器,为用户提供可解释的医疗健康咨询服务。

评分:4.8/5.0
销量:43
发布:2026/6/23
难度:L2 进阶级
💬 联系咨询观看视频介绍
永久使用权限
免费更新维护
技术支持服务

项目封面

截图 1

项目说明

基于知识图谱与 RAG 的医疗问答系统

项目简介

本系统是一个融合中文医疗知识图谱与检索增强生成(RAG)的智能医疗问答 Web 系统。系统基于多源真实医疗数据构建知识图谱(实体-关系三元组),结合 BM25 + TF-IDF 混合检索与意图分类器,为用户提供可解释的医疗健康咨询服务。


功能模块

模块功能说明
智能问答用户输入医疗问题,系统自动识别意图,融合知识图谱结构化推理与 RAG 文档检索,生成综合回答,展示识别实体、参考来源与图谱推理路径
知识图谱交互式子图可视化探索(vis.js),支持中心实体选择、深度跳数配置、实体搜索,点击节点查看详情并设为新中心
疾病百科8800+ 疾病条目浏览与搜索,支持分页、关键词检索,点击查看疾病完整信息(概述、症状、药物、检查、科室、饮食等)
症状推断输入多个症状,基于知识图谱反向推理可能疾病,提供 IDF 加权匹配度排序与推理路径展示
问答历史登录用户可查看个人问答记录,包含问题、回答、意图、时间
管理后台管理员专属页面,展示系统数据统计(ECharts 图表)、实体类型分布、关系类型分布、用户列表管理
用户系统支持用户注册、登录、退出,区分普通用户与管理员角色

数据来源

所有数据均为真实公开数据集,无 Mock 生成。

数据集文件路径说明
QASystemOnMedicalKGdata/raw/QASystemOnMedicalKG/data/medical.json8808 条中文疾病知识数据,含症状、药物、检查、科室、饮食、预防、病因等
SymMap v2.0data/raw/symmap/*.xlsx中医药领域症状、疾病、中药、证候数据,含 TCM 症状定义与药性描述
HealthKnowledgeGraphdata/raw/HealthKnowledgeGraph/DerivedKnowledgeGraph_final.csv157 种英文疾病-症状概率关系数据
cMedQA2data/raw/cMedQA2/中文社区医疗问答数据(可选,需手动下载 question.zip / answer.zip)

标准版目录结构

python-zhishi-tupu-rag-wenda/
├── backend/                    # Flask 后端
│   ├── __init__.py
│   ├── app.py                  # 应用入口与路由定义
│   ├── config.py               # 全局配置(路径、密钥、参数)
│   ├── database.py             # SQLite 数据库管理(建表、CRUD、统计)
│   ├── models/                 # 数据模型目录
│   ├── routes/                 # 路由模块目录
│   ├── services/               # 业务服务
│   │   ├── __init__.py
│   │   ├── kg_service.py       # 知识图谱查询服务(实体识别、子图、推理)
│   │   ├── qa_service.py       # 综合问答服务(意图识别 + KG + RAG)
│   │   └── rag_service.py      # RAG 检索增强生成服务(BM25 + TF-IDF)
│   └── utils/                  # 工具函数
│       ├── __init__.py
│       ├── kg_utils.py         # 知识图谱常量(实体类型优先级、意图消歧映射)
│       └── text_utils.py       # 文本处理工具(分词、实体校验、噪声过滤)
├── data/                       # 数据与数据库
│   ├── medical_qa.db           # SQLite 数据库(自动生成)
│   ├── processed/              # 处理后的索引文件(自动生成)
│   │   ├── bm25_corpus.pkl     # BM25 索引
│   │   ├── intent_classifier.pkl # 意图分类器模型
│   │   ├── rag_doc_ids.json    # RAG 文档 ID 映射
│   │   ├── rag_embeddings.npz  # TF-IDF 稀疏向量矩阵
│   │   └── tfidf_vectorizer.pkl # TF-IDF 向量器
│   └── raw/                    # 原始数据集
│       ├── HealthKnowledgeGraph/
│       ├── QASystemOnMedicalKG/
│       ├── cMedQA2/
│       └── symmap/
├── frontend/                   # Bootstrap 前端
│   ├── static/
│   │   ├── css/
│   │   │   └── style.css       # 自定义样式
│   │   └── js/
│   │       ├── chat.js         # 智能问答页交互
│   │       ├── common.js       # 全局工具函数
│   │       ├── diseases.js     # 疾病百科页交互
│   │       ├── kg.js           # 知识图谱页交互
│   │       └── symptom_check.js # 症状推断页交互
│   └── templates/              # HTML 模板
│       ├── admin.html          # 管理后台
│       ├── base.html           # 基础模板(导航栏、CDN)
│       ├── chat.html           # 智能问答
│       ├── diseases.html       # 疾病百科
│       ├── history.html        # 问答历史
│       ├── index.html          # 首页
│       ├── kg.html             # 知识图谱
│       ├── login.html          # 登录
│       ├── register.html       # 注册
│       └── symptom_check.html  # 症状推断
├── scripts/                    # 数据构建脚本
│   ├── build_knowledge_graph.py # 构建知识图谱(导入多源数据、构建反向关系)
│   ├── build_rag_index.py      # 构建 RAG 索引(文档生成、TF-IDF、BM25、意图分类器)
│   ├── import_cmedqa.py        # 导入 cMedQA2 真实问答数据
│   └── init_all.py             # 一键全量初始化
├── tests/                      # 测试
│   ├── __init__.py
│   └── test_system.py          # 系统端到端测试
├── 运行步骤必看/
│   └── window.md               # Windows 运行步骤说明
├── mac_run.sh                  # macOS/Linux 一键启动脚本
├── window_run.bat              # Windows 一键启动脚本
├── requirements.txt            # Python 依赖包清单
├── run.py                      # 应用启动入口
├── 训练手册.md                  # 意图分类器训练手册
├── 项目说明.md                  # 本文件
└── README.md                   # 项目简介

技术栈

类别技术
后端Python 3.12 + Flask 3.0
数据库SQLite 3
前端HTML5 + Bootstrap 5.3 + Bootstrap Icons + ECharts 5.5
知识图谱多源医疗数据构建(实体-关系三元组),vis.js 网络可视化
RAG 检索BM25 + TF-IDF 稀疏向量混合检索
意图识别scikit-learn LogisticRegression + TF-IDF Pipeline
中文分词jieba
密码安全Werkzeug pbkdf2:sha256

环境要求

项目要求
Python3.12
操作系统Windows / macOS / Linux
内存建议 4GB 以上(索引构建时使用)
磁盘约 800MB(含依赖、数据集和数据库)
浏览器Chrome / Firefox / Safari / Edge 现代版本

账号信息

角色用户名密码
管理员adminadmin123

管理员拥有系统管理页面访问权限,可查看数据统计与用户列表。新注册用户默认为普通用户角色。

技术分类

包含内容

完整源码
项目说明文档
演示材料

适用人群

学习参考与二次开发

关于 AI源码

AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。

QQ: 861077046
邮箱: 861077046@qq.com
已服务 43+ 位用户
立即咨询

相关推荐

查看全部 →
城市交通流量预测与拥堵成因分析系统
Python
进阶

城市交通流量预测与拥堵成因分析系统

是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

PythonHTMLSQLite
4.820
电商用户行为漏斗与CRO转化率优化分析
Python
NEW
进阶

电商用户行为漏斗与CRO转化率优化分析

电商用户行为漏斗与CRO转化率优化分析(E-Commerce Funnel CRO)是一套面向电商运营的数据分析平台,覆盖从用户访问到最终购买的完整漏斗链路,提供多维诊断、统计检验、PIE 优先级矩阵与 XGBoost 购买预测等能力,帮助运营团队精准定位转化瓶颈并制定优化策略。

PythonHTMLSQLite
4.866
多组学癌症预后预测分析系统
Python
进阶

多组学癌症预后预测分析系统

基于 Flask 的 Web 应用,用于上传 TCGA 风格合并表、做特征与标签概览、Cox 预后风险评分与生存相关可视化。模型在本地训练后以 形式加载,不提供旧版演示数据或假模型兜底。

PythonHTMLSQLite
4.834
基于 Apriori 算法的中药配伍审查系统
Python
NEW
进阶

基于 Apriori 算法的中药配伍审查系统

本系统是一个基于经典 Apriori 关联规则挖掘算法的中药配伍审查平台,使用真实中医药处方数据集(PTM-TKDE2018),实现药材频繁项集挖掘、关联规则生成与配伍禁忌审查。

PythonHTMLSQLite
4.840
基于 Python 的城市共享单车骑行需求时空分析系统
Python
NEW
进阶

基于 Python 的城市共享单车骑行需求时空分析系统

本系统是一个基于 Python Flask 框架的城市共享单车骑行需求时空分析平台,使用 Oslo City Bike(奥斯陆城市自行车)开放数据,提供系统总览、时间维度分析、空间维度分析、站点运营分析、OD 起讫流动分析、骑行需求预测、综合分析报告等功能模块,适用于城市共享单车运营调度与骑行需求研究场景。

PythonHTMLSQLite
4.857
基于 Python 的短视频用户行为分析系统
Python
NEW
进阶

基于 Python 的短视频用户行为分析系统

基于快手 KuaiRec / KuaiRand 数据集的短视频推荐分析平台,提供用户行为分析、推荐偏差检测、内容运营洞察、图神经网络推荐等完整分析链路。

PythonHTMLSQLite
4.875