1. 项目概述:中医知识图谱与大模型问答系统的技术融合
这个项目将传统中医知识与现代AI技术深度结合,构建了一个包含知识图谱构建、大模型智能问答、中药图像识别三大核心模块的综合性系统。前端采用Vue3+Element Plus实现响应式交互界面,后端基于SpringBoot+Neo4j构建知识图谱服务层,通过LangChain框架对接大语言模型实现自然语言问答。特别在中药识别环节,我们集成了YOLOv5目标检测模型,实现药材图像的精准分类识别。
提示:系统设计时特别考虑了中医领域专业术语的标准化处理,所有药材名称、方剂组成都参照《中华人民共和国药典》进行归一化处理,避免同物异名带来的知识混乱。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心技术架构解析
2.1 前后端分离架构设计
前端采用Vue3组合式API开发,通过axios与后端通信。后端使用SpringBoot构建RESTful API,数据库层采用混合存储方案:
- Neo4j图数据库:存储实体关系(药材-功效-病症的关联)
- MySQL:存储结构化数据(用户信息、方剂详情等)
- MinIO:存储药材图片和文档资料
mermaid复制graph TD
A[Vue前端] -->|HTTP| B(SpringBoot)
B --> C[Neo4j]
B --> D[MySQL]
B --> E[MinIO]
B --> F[大模型API]
2.2 知识图谱构建流程
- 数据采集:从《中华本草》《方剂学》等权威著作中提取结构化数据
- 实体识别:使用BiLSTM-CRF模型识别文本中的中医实体
- 关系抽取:基于依存句法分析提取"药材-性味-归经"等关系
- 图谱存储:将三元组数据导入Neo4j,建立如下核心关系:
- (药材)-[性味]->(性味属性)
- (方剂)-[包含]->(药材)
- (病症)-[适用]->(方剂)
3. 大模型问答模块实现
3.1 知识增强的问答流程
python复制def qa_chain(question):
# 知识图谱检索
kg_results = neo4j_search(question)
# 大模型提示词工程
prompt = f"""
你是一名资深中医专家,请根据以下知识回答问题:
{kg_results}
问题:{question}
"""
# 调用大模型API
response = llm_api(prompt)
return response
3.2 关键优化策略
- 术语标准化:建立中医术语同义词表(如"黄芪"与"黄耆"映射)
- 结果校验:设置规则引擎检查大模型输出是否符合中医理论
- 反馈学习:记录用户采纳的答案用于模型微调
4. 中药图像识别系统
4.1 YOLOv5模型训练
- 数据集:自建10,000张中药材图像库(包含300种常见药材)
- 数据增强:采用albumentations进行旋转、光照调整
- 模型参数:
yaml复制backbone: CSPDarknet53 anchors: [[10,13], [16,30], [33,23]] learning_rate: 0.01
4.2 部署优化技巧
- 使用TensorRT加速推理速度(实测速度提升3倍)
- 实现分级识别策略:
- 第一级:粗分类(根茎类/果实类等)
- 第二级:细粒度识别(具体药材品种)
5. 系统集成与性能优化
5.1 缓存策略设计
| 数据类型 | 缓存方案 | 过期时间 |
|---|---|---|
| 热门方剂 | Redis | 1小时 |
| 图谱查询 | Neo4j缓存 | 30分钟 |
| 图片识别 | 本地缓存 | 永久 |
5.2 并发处理方案
- 使用Spring WebFlux实现反应式编程
- 对大模型请求实施限流(100请求/分钟)
- 图像识别采用异步队列处理
6. 典型问题排查实录
6.1 知识图谱更新延迟
现象:新添加的药材关系未即时生效
解决方案:
- 检查Neo4j事务提交状态
- 清空Spring Cache缓存
- 验证APOC插件的触发器配置
6.2 图像识别误判
案例:将"白术"误识别为"苍术"
优化措施:
- 增加样本图像的拍摄角度多样性
- 引入注意力机制改进模型
- 添加后处理规则(如根据纹理特征二次校验)
7. 项目部署指南
7.1 生产环境配置
bash复制# Neo4j内存配置
dbms.memory.heap.initial_size=4G
dbms.memory.heap.max_size=8G
dbms.memory.pagecache.size=2G
# SpringBoot启动参数
java -jar -Xmx4096m -Dspring.profiles.active=prod app.jar
7.2 监控方案
- Prometheus采集指标:
- 知识图谱查询响应时间
- 大模型调用成功率
- 图像识别准确率
- Grafana展示关键仪表盘
8. 扩展开发建议
- 移动端适配:使用Uniapp封装跨平台应用
- 语音交互:集成ASR技术实现语音问答
- 方剂推荐:加入用户体质辨识算法
- 知识溯源:为每个回答添加参考文献标注
重要提示:处理中药数据时务必注意:
- 毒性药材需添加明确警示标识
- 方剂推荐需排除禁忌组合
- 所有功能不能替代专业医师诊断
在实际开发中,我们发现中医知识的数字化呈现需要特别关注术语体系的标准化。建议建立专门的中医本体库,参考《中医病证分类与代码》国家标准(GB/T 15657-2021)进行数据建模,这对后续的知识推理和质量控制至关重要。
