当前位置: 首页 > news >正文

《MedChat智能医疗问答系统》项目介绍

【LIC·2025语言与智能技术竞赛——人民日报健康客户端赛道一 --二等奖方案】


🎯 项目概述

  • 🚀 技术特色:Agentic RAG架构 + 多智能体协作 + 血象智能分析

  • 💡 技术探索:算力约束下的"小模型大能力"技术方案

  • 🏥 应用场景:面向医疗问答的智能化解决方案

参考编排模板来源: AI Studio 项目模板

🏆 比赛背景

本项目参与了LIC·2025语言与智能技术竞赛——人民日报健康客户端赛道一,在学习和实践中不断改进技术方案。

🎯 赛事介绍

语言与智能技术竞赛(LIC)是中国计算机学会(CCF)和中国中文信息学会(CIPS)联合主办的中文NLP顶级赛事,为NLP领域的研究者和开发者提供了宝贵的交流平台。

本届赛事与人民日报健康客户端、智源研究院、TVB合作,围绕文心大模型技术栈,开放高价值数据集,为探索大模型在医疗健康领域的应用提供了良好机会。

⚙️ 技术要求

本赛事使用文心大模型4.5系列(全系列已开源):

  • 🔥 MoE模型:47B和3B的混合专家模型(最大424B总参数)

  • 稠密模型:0.3B稠密参数模型

一、🎖️ 项目简介

MedChat 是一套面向医疗问答场景的多智能体系统,采用 Agentic RAG 架构,集成微调医学小模型、通用大模型、VL 视觉语言模型、三层知识图谱。

🎯 设计理念

面向"低成本·高质量·可落地"的医疗 AI 方案探索

📋 项目特点

项目维度我们的实践
参赛赛道赛道一 - 健康医疗智能问答
技术方向Agentic RAG架构 + 多智能体协作 + 血象智能分析
技术探索算力约束下的"小模型大能力"技术方案
应用价值为资源受限环境提供医疗AI解决方案思路

二、📊 训练数据集构建流程

2.1 🎬 多模态数据采集与处理

我们构建了一套完整的医疗数据处理流水线,从多官方提供的数据集进行抓取转换:

📹 视频数据处理流程
  1. 视频文件下载:爬取官方excel中提供的网页链接中的视频

  2. 语音转文字:使用 FunASR 进行高精度的语音识别转换
    • 支持中文医疗术语识别

    • 保持专业词汇的准确性

    • 处理医学专业发音

🌐 网页内容抓取
  1. 网页文字提取:系统化抓取医疗网站的文字内容

2.2 🔄 数据预处理与质量控制

📝 文本汇总与过滤
  1. 数据汇总:将所有来源的文字内容进行统一整理

    • 格式标准化处理

    • 重复内容识别

    • 数据质量评估

  2. 智能过滤:多层次的内容过滤机制

    • 医疗相关性筛选

    • 内容质量评估

    • 噪音数据清理

    • 敏感信息过滤

2.3 🤖 AI驱动的知识生成

🧠 GPT-4.1-Nano智能处理
  1. QA对生成:使用 GPT-4.1-Nano 进行问答对生成

    • 基于医疗文本生成高质量问答对

    • 确保医学专业性和准确性

    • 覆盖不同难度层次的问题

  2. 知识图谱构建:同步生成结构化知识图谱

    • 实体识别与抽取

    • 关系建模与验证

    • 三层图谱架构构建

2.4 📋 数据整合与分发

🔧 最终数据处理
  1. QA数据整合:问答对数据的最终处理

    • 内容去重与质量筛选

    • 格式统一与标准化

    • 训练集/验证集/测试集划分

  2. 知识图谱整合:知识图谱数据的优化处理

    • 实体关系去重

    • 图谱完整性验证

    • 向量化预处理

🎯 数据分发策略
  1. 模型训练数据:为0.3B医疗微调模型提供高质量训练数据

    • 约70万医疗问答对

    • 覆盖多个医疗专业领域

    • 难度梯度合理分布

  2. 知识图谱数据库:为RAG系统构建知识检索库

    • 三层知识图谱结构

    • 支持语义检索的向量化数据

    • 实时查询优化的索引结构

2.5 🔄 数据处理流程图

graph TDA[📹 视频文件下载] --> B[🎤 FunASR语音转文字]C[🌐 网页文字抓取] --> D[📝 文本汇总]B --> DD --> E[🔍 智能过滤]E --> F[🤖 GPT-4.1-Nano处理]F --> G[❓ QA对生成]F --> H[🕸️ 知识图谱生成]G --> I[🔧 QA数据整合去重]H --> J[📊 KG数据整合去重]I --> K[🎯 模型训练数据]J --> L[📚 向量知识图谱库]

2.6 📈 数据规模统计

数据类型数量规模用途
原始视频约500小时医疗教学视频FunASR转文字处理
网页文本约200万条医疗相关文档知识内容提取
过滤后文本约70万条高质量医疗文档GPT-4.1-Nano处理
生成QA对约70万医疗问答对0.3B模型微调训练
知识图谱约15万实体,50万关系RAG系统知识检索

三、🚀 核心技术特性

3.1 🎯 技术背景与挑战

在比赛环境下,我们面临着一些技术挑战,这也推动了我们的技术创新:

挑战类型具体问题我们的思考
🔧 算力约束比赛提供的A800算力只能支持ERNIE4-0.3B模型训练如何在有限资源下实现良好效果
🤖 小模型局限0.3B参数规模在复杂医疗推理中的表现有限探索小模型协作的可能性
📊 传统RAG挑战医药领域强因果推理特性,传统向量检索可能引入噪音寻找更适合医疗场景的RAG方案

3.2 💡 技术方案:Agentic RAG架构

基于上述挑战,我们尝试了Agentic RAG架构的技术路线:

🔄 核心设计思路
graph TDA[复杂用户问题] --> B[20B模型问题分解]B --> C[多个精确子问题]C --> D[0.3B微调模型分布式推理]D --> E[三层知识图谱增强]E --> F[大模型质量把控]F --> G[综合答案输出]
  1. 🎯 微调:将ERNIE4.5-0.3B模型的PPL训练到5-6区间

  2. 🔀 问题分解:利用ERNIE4.5-21B大模型拆分复杂问题

  3. ⚡ 分布式推理:让子问题分别查询ERNIE4.5-0.3B微调模型

  4. 🕸️ 知识图谱:三层知识图谱提供结构化支持,加深知识点的关联跟踪

  5. 🛡️ 质量保障:大模型(ERNIE-4.5-300B-A47B-Paddle)进行最终质量把控

  6. 🛡️ Agentic设计:ERNIE4.5-21B会收集用户更多的信息,然后再利用以上的核心处理提高回答的质量具体设计见(完整系统工作流程)

技术栈

AI模型架构:

  • 智能询问模型:ernie-4.5-21b-a3b (降低成本,可本地部署)

  • 通用总结模型:ernie-4.5-turbo-128k-preview (大模型兜底保证质量)

  • 医疗专用模型:ernie-4.5-0.3b-medical (微调,速度快成本低)

  • 视觉语言模型:ernie-4.5-turbo-vl-preview (医学图像识别)

  • 嵌入模型:BAAI/bge-large-zh-v1.5

后端技术栈:

  • 框架:FastAPI (Python 3.8+)

  • 数据库:SQLite + SQLite-vec (向量搜索)

  • 日志系统:Loguru

  • 数据验证:Pydantic

前端技术栈:

  • 框架:Vue 3 + TypeScript

  • UI组件:Element Plus

  • 状态管理:Pinia

  • 构建工具:Vite

  • 样式框架:Tailwind CSS

四、🩸 血象智能分析

4.1 💡 功能背景

🌟 在医疗AI应用中,我们尝试实现血常规报告的智能化分析,希望能为血液检验的自动化处理提供一些技术思路。

4.2 ⭐ 功能设计

功能模块技术方案设计目标
🔍 报告识别ernie-4.5-turbo-vl-preview尝试自动识别血象报告
📊 数据提取VL模型结构化识别提取WBC、RBC、HGB、PLT等指标
⚠️ 异常检测参考范围比对标注可能的异常项目
🧠 智能问诊基于异常项的问题生成收集相关症状和病史信息
📝 综合分析多模态信息整合结合症状和检验数据进行分析

4.3 🔄 处理流程设计

graph LRA[📤 上传图片] --> B[🔍 VL模型识别]B --> C[⚠️ 异常项检测]C --> D[❓ 生成问诊问题]D --> E[👥 收集症状信息]E --> F[🧠 综合分析]F --> G[📋 输出分析结果]

五、📊 系统架构展示

5.1 🤖 智能体协作架构设计

5.2 📈 数据生成流程

微调效果指标

  • **困惑度(PPL)**:5.7

  • 训练轮次:500

  • 学习率:1e-06

5.3 🕸️ 三层知识图谱架构

关系驱动的桥接发现

系统通过分析医学知识图谱中的关系网络,动态发现桥接知识:

关系类型

  • 症状→疾病关系

  • 疾病→治疗关系

  • 疾病→科室关系

桥接发现算法: 通过关系图谱发现桥接实体,采用双向关系查找、置信度过滤和类型匹配的方式,实现智能的知识关联。

5.4 🧠 智能问诊流程

询问策略

询问限制:最多2(可设置)轮询问,避免过度询问

询问优先级

  1. 症状具体部位

  2. 持续时间

  3. 严重程度

  4. 伴随症状

  5. 诱发因素

重复问题避免

  • 记录询问历史

  • 语义相似性检测

  • 渐进式信息收集

5.5 🔄 完整系统工作流程

图像分析提示词设计

系统采用专业的医学图像分析提示词,包括:

  • 图像观察:描述观察到的症状、病变特征、颜色、形状、大小、分布等

  • 可能的诊断:基于观察列出可能的疾病(按可能性排序)

  • 症状描述:用专业但易懂的语言描述主要症状

  • 建议:提供初步建议和注意事项

  • 重要提醒:强调这只是初步分析,不能替代专业医生诊断

def _build_blood_detection_prompt(self, user_description: str) -> str: """构建血象检测的提示词""" return """你是一位专业的血液检验医师。请仔细分析这张图像,判断是否为血常规检查报告(血象)。

第一步:图像类型判断

判断这张图像是否为血常规检查报告。血常规检查报告的特征包括:

  • 包含白细胞(WBC)、红细胞(RBC)、血红蛋白(HGB)、血小板(PLT)等指标

  • 有具体的数值和参考范围

  • 通常有医院或检验科的标识

  • 格式规范,像检验报告单

第二步:如果是血象报告,提取关键数据

如果确认是血象报告,请提取以下关键指标(如果图像中存在):

  • 白细胞计数(WBC)、红细胞计数(RBC)、血红蛋白(HGB/HB)

  • 血细胞比容(HCT)、平均红细胞体积(MCV)

  • 平均红细胞血红蛋白含量(MCH)、平均红细胞血红蛋白浓度(MCHC)

  • 血小板计数(PLT)、淋巴细胞百分比(LY%)、中性粒细胞百分比(NE%)

第三步:分析异常项目

标记出超出正常参考范围的项目,并简要说明其临床意义。

用户描述:{user_description}"""

def _get_inquiry_system_prompt(self) -> str: return """你是一位经验丰富的医生,负责智能问诊。你的任务是判断患者的描述是否需要进一步澄清。

核心原则

  1. 精准问诊:只在关键信息缺失时询问

  2. 避免过度询问:最多询问2轮,避免患者厌烦

  3. 医学专业性:基于临床经验判断重要信息

需要进一步询问的情况

  • 症状描述模糊,缺少关键细节(部位、程度、持续时间)

  • 可能存在多种疾病,需要鉴别诊断的关键信息

  • 症状严重但描述不完整,需要评估紧急程度

直接回答的情况

  • 问题描述清楚完整

  • 常见症状,信息足够诊断

  • 已经询问过相关信息

输出格式

请严格按照JSON格式输出: { "need_more_info": true/false, "reason": "判断理由", "question": "询问问题(仅在need_more_info为true时)", "complete_question": "完整问题描述(仅在need_more_info为false时)" }"""

七、🏆 技术实践总结

7.1 🎯 参赛体会与收获

通过参与LIC·2025语言与智能技术竞赛,我们在技术实践中有一些收获和体会:

🔧 算力约束下的技术探索
实践方向我们的尝试体会与收获
资源优化A800算力下的ERNIE-4.5-0.3B模型微调学会了在有限资源下寻找技术突破点
协作架构多智能体分工合作的尝试体会到了小模型协作的潜在价值
成本控制小模型+大模型(ERNIE-4.5-300B-A47B-Paddle)的混合方案在成本与效果之间找到了一些平衡点

7.2 🌟 技术方案特点

技术维度我们的实践
💡 创新探索在医疗领域尝试Agentic RAG架构
🛠️ 系统完整性包含前后端的完整系统实现
👨‍⚕️ 专业性在血象分析等专业功能上的探索
💰 实用性关注资源约束下的实际应用价值
📊 数据处理完整的多模态数据处理流水线

💡 实践感悟:通过这次竞赛,我们体会到了在资源约束条件下进行技术创新的挑战与乐趣。从数据处理流水线到Agentic RAG架构,从血象智能分析到多智能体协作,每个环节都让我们对医疗AI应用有了更深入的理解。虽然还有很多需要改进的地方,但这次实践为我们今后的技术发展提供了宝贵的经验。

🚀作品演示

八、🚀 项目总结与展望

8.1 🏆 竞赛参与总结

本次参与LIC·2025语言与智能技术竞赛——人民日报健康客户端赛道一,我们的MedChat智能医疗问答系统在学习和实践中不断改进。

🎖️ 主要实践内容
  1. 📊 数据处理创新:构建了完整的多模态数据处理流水线,从视频转文字到知识图谱生成

  2. 🔧 技术探索:在A800算力限制下,尝试了Agentic RAG架构的"小模型大能力"方案

  3. 🏥 应用创新:探索了血象智能分析功能,为血液检验自动化提供技术思路

  4. 🤖 架构实践:通过多智能体协作,验证了小参数模型协作的可能性

8.2 🙏 感谢与致谢

🏆 竞赛平台支持
  • 感谢LIC·2025竞赛组委会

  • 感谢百度AI Studio社区:提供的算力支持和技术环境

  • 感谢ERNIE模型生态:ERNIE-4.5系列模型为项目提供的AI能力支持

🌐 技术社区贡献
  • 🐼 PaddlePaddle生态应用:充分利用飞桨生态的预训练模型和工具链

  • 💻 开源实践分享:希望将竞赛中的技术探索与开源社区分享交流

  • 🏥 医疗AI发展:为医疗AI领域的技术发展贡献一些实践经验


http://www.dtcms.com/a/395855.html

相关文章:

  • 使用FastAPI和Docker部署机器学习模型:从开发到生产的最佳实践
  • Per-Tensor 量化和Per-Channel 量化
  • 执行bat任务栏有图标显示,执行pycharm64.exe就没有是什么原因
  • 【Docker项目实战】使用Docker部署wealth-tracker个人资产分析工具
  • LeapMotion_Demo演示
  • 智慧图书管理|基于SprinBoot+vue的智慧图书管理系统(源码+数据库+文档)
  • 面试技巧第四篇:嵌入式通信机制考点:消息队列、信号量与互斥锁
  • 面试八股:C语言的预处理和类型定义
  • 强化学习1.3 深度学习交叉熵方法
  • 用PowerBI的思想解决QuickBI文本无法动态配色问题
  • 逆向解析 1688 商品详情接口:自主构建 Sign 签名算法实战
  • SpringCloud项目阶段六:feign服务降级处理以及基于DFA算法的自管理敏感词审核和tess4j图片文字识别集成
  • 跨行业安全合规文档协同平台:重塑制造企业的质量管理与合规运营新范式
  • 线性代数 · SVD | 奇异值分解命名来历与直观理解
  • Qt 控件与布局
  • TDengine 聚合函数 SPREAD 用户手册
  • 4090 云服务器租赁:高性能与灵活性的算力融合方案​
  • 阿里云服务器ECS上安装anaconda(jupyter)和OpenCV教程
  • CVE-2025–3246 本地提权
  • Chat API和Chat SDK
  • 爱奇艺技术实践:基于 StarRocks 释放天玑买量数据价值
  • 突破传统文本切分桎梏!基于语义理解的智能文档处理革命——AntSK-FileChunk深度技术解析
  • Git常用的使用方法
  • IDEA集成Claude Code (win系统)
  • MySQL执行计划:索引为何失效?如何避免?
  • 【附源码】基于SpringBoot的校园防汛物资管理平台的设计与实现
  • PyTorch 核心工具与模型搭建
  • ARM--时钟管理单元与定时器
  • Unity-动画基础
  • 逻辑回归中的决策边界解析与应用实例