1. 项目背景与核心价值
去年在开发医疗问答系统时,我遇到一个典型问题:当用户询问"反复头痛三天该吃什么药"时,大模型要么给出笼统建议,要么生成存在安全隐患的用药方案。这促使我开始探索如何让AI在专业领域给出有据可依的可靠回答。RAG(Retrieval-Augmented Generation)技术正是解决这一痛点的利器。
这个"AI老中医"项目的核心价值在于:
- 建立中医知识检索系统,确保每句诊断建议都有典籍依据
- 通过向量化技术实现症状与方剂的精准匹配
- 控制生成内容的可靠性,避免大模型的"幻觉"问题
- 可扩展至其他专业领域(法律、金融等)的问答场景
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术架构设计
2.1 整体流程设计
系统采用经典RAG架构并针对中医场景优化:
code复制用户提问 → 症状关键词提取 → 向量数据库检索 → 相关典籍片段召回 → 提示词工程构建 → 大模型生成回答 → 引用标注输出
2.2 关键组件选型
- Embedding模型:选用bge-small-zh-v1.5模型(108MB,适合中小规模部署)
- 向量数据库:Qdrant(比Milvus更轻量,支持精确过滤)
- 大模型:ChatGLM3-6B(医疗领域微调版)
- 知识库来源:
- 《伤寒论》等经典方剂文本
- 三甲医院真实医案数据(脱敏处理)
- 国家药典中药材数据库
注意:中医典籍需转换为现代标点版本,原始竖排文本会显著影响Embedding质量
3. 知识库构建实战
3.1 数据预处理要点
- 文本清洗:去除"【注】"等干扰符号,统一"证候"、"症候"等术语
- 分块策略:
- 方剂类:按"组成-功效-主治"分块(约150字/块)
- 医案类:按"主诉-辨证-治法-方药"分块
- 元数据标注:
python复制{
"source": "《金匮要略》",
"page": 123,
"category": "方剂/经方",
"symptom_tags": ["头痛","发热","恶寒"]
}
3.2 向量化实践
采用动态加权Embedding策略提升检索精度:
python复制from FlagEmb
