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

项目说明
基于知识图谱与 RAG 的医疗问答系统
项目简介
本系统是一个融合中文医疗知识图谱与检索增强生成(RAG)的智能医疗问答 Web 系统。系统基于多源真实医疗数据构建知识图谱(实体-关系三元组),结合 BM25 + TF-IDF 混合检索与意图分类器,为用户提供可解释的医疗健康咨询服务。
功能模块
| 模块 | 功能说明 |
|---|---|
| 智能问答 | 用户输入医疗问题,系统自动识别意图,融合知识图谱结构化推理与 RAG 文档检索,生成综合回答,展示识别实体、参考来源与图谱推理路径 |
| 知识图谱 | 交互式子图可视化探索(vis.js),支持中心实体选择、深度跳数配置、实体搜索,点击节点查看详情并设为新中心 |
| 疾病百科 | 8800+ 疾病条目浏览与搜索,支持分页、关键词检索,点击查看疾病完整信息(概述、症状、药物、检查、科室、饮食等) |
| 症状推断 | 输入多个症状,基于知识图谱反向推理可能疾病,提供 IDF 加权匹配度排序与推理路径展示 |
| 问答历史 | 登录用户可查看个人问答记录,包含问题、回答、意图、时间 |
| 管理后台 | 管理员专属页面,展示系统数据统计(ECharts 图表)、实体类型分布、关系类型分布、用户列表管理 |
| 用户系统 | 支持用户注册、登录、退出,区分普通用户与管理员角色 |
数据来源
所有数据均为真实公开数据集,无 Mock 生成。
| 数据集 | 文件路径 | 说明 |
|---|---|---|
| QASystemOnMedicalKG | data/raw/QASystemOnMedicalKG/data/medical.json | 8808 条中文疾病知识数据,含症状、药物、检查、科室、饮食、预防、病因等 |
| SymMap v2.0 | data/raw/symmap/*.xlsx | 中医药领域症状、疾病、中药、证候数据,含 TCM 症状定义与药性描述 |
| HealthKnowledgeGraph | data/raw/HealthKnowledgeGraph/DerivedKnowledgeGraph_final.csv | 157 种英文疾病-症状概率关系数据 |
| cMedQA2 | data/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 |
环境要求
| 项目 | 要求 |
|---|---|
| Python | 3.12 |
| 操作系统 | Windows / macOS / Linux |
| 内存 | 建议 4GB 以上(索引构建时使用) |
| 磁盘 | 约 800MB(含依赖、数据集和数据库) |
| 浏览器 | Chrome / Firefox / Safari / Edge 现代版本 |
账号信息
| 角色 | 用户名 | 密码 |
|---|---|---|
| 管理员 | admin | admin123 |
管理员拥有系统管理页面访问权限,可查看数据统计与用户列表。新注册用户默认为普通用户角色。
技术分类
包含内容
适用人群
学习参考与二次开发
关于 AI源码
AI源码 专注优质项目源码分享,提供完整源码、详细文档与技术支持,助力源码设计与课程作业。
相关推荐
查看全部 →
城市交通流量预测与拥堵成因分析系统
是一个面向城市交通拥堵分析的 monorepo,覆盖计算机设计课题中的主要能力链路:

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

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

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

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

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