所有项目可运行原型 / MediAtlas

MediAtlas先找到依据,再开口解释。

从 medical_disease_db 长出来的医学证据工作台。FastAPI + Vue 3 做对话,BM25、向量、同源图谱和重排接到同一条检索链上;权威模式只走已核验公开来源,探索模式才打开历史疾病文档。回答必须带出处,急症和个体剂量规则先于模型。本地可运行,未经临床验证。

FastAPIVue 3RAGNeo4jAgentGitHub 仓库
MEDIATLAS / EVIDENCE RAG
Query RAGGraphGateAnswer

它在解决什么

面对医疗问题,模型很容易说得流畅,却说不出依据从哪来。MediAtlas 想把这条链反过来:先检索、再校验、最后才生成解释。它是个人学习与研究用的工作台,不是诊疗工具,也没有经过临床验证。

项目从 medical_disease_db 长出来,后来在 medical_agentic_rag 里收成现在这套编排。原仓库里的 FastAPI 路由、Vue 对话页、JWT 登录和图谱查询都还在;新的一层是证据门槛,以及权威 / 探索两种回答模式。

系统怎么串起来

对话前端是 Vue 3。后端 FastAPI 用 SSE 把回答和执行轨迹推到页面上。一次提问大致走:

  1. 感知当前意图,并做安全检查(急症、个体剂量、特殊人群等规则先于模型)。
  2. 按模式规划检索范围。
  3. BM25、稠密向量、同源图谱三路召回,RRF 融合后再用 CrossEncoder 重排。
  4. 来源、时效和覆盖校验。不够就改写、HyDE 或停止,最多 3 轮。
  5. 用带编号的支持片段生成自然语言解释,再做一次独立的语义检查。

权威模式只走已核验的公开来源;探索模式才打开历史疾病文档和原图谱,但主题过滤和引用检查不会关掉。模型不能自行切换模式。

数据和记忆

历史疾病条目来自原 medical.json:8,806 个有效唯一疾病,扩展成约 10 万份历史文档和本地图边。后来补上中英文 WHO 条目和少量 NHS / NIDDK / WHO 页面的中文整理摘要,核验层目前约 8,377 条,知识文档合计约 11 万份。核验表示记录了公开出处和检查日期,不等于医生审核

记忆分成四层:当前请求的工作记忆、Redis 里最近几轮的短记忆、PostgreSQL 里的情节记录,以及用户明确确认过的长期偏好。图谱查询是参数化只读的,没有任意 Cypher 工具。

界面

登录页把医学知识问答和账户入口分开,并写明不替代医生诊疗。

MediAtlas 登录页。左侧写「把疑问说出来,让健康知识更容易理解」,右侧是邮箱密码登录。
MediAtlas 登录页。左侧写「把疑问说出来,让健康知识更容易理解」,右侧是邮箱密码登录。

工作台默认进入知识问答。权威模式与探索模式可以切换;证据不足时会明说。

MediAtlas 工作台。左侧是对话列表,中间是「让每一个医学回答,都有据可循」,下方可切换权威或探索模式。
MediAtlas 工作台。左侧是对话列表,中间是「让每一个医学回答,都有据可循」,下方可切换权威或探索模式。

回答会把支持片段编号写在句子后面,并附上科普免责声明。

MediAtlas 回答「哮喘如何减少诱因」。正文带 E1、E2、E3 来源编号,并标明权威模式。
MediAtlas 回答「哮喘如何减少诱因」。正文带 E1、E2、E3 来源编号,并标明权威模式。

点开来源能看到出处、发布日期,以及「已核对公开来源,未经临床审定」。

MediAtlas 来源详情:WHO《哮喘事实清单》,说明尘埃、烟雾、花粉及动物毛屑可能诱发哮喘。
MediAtlas 来源详情:WHO《哮喘事实清单》,说明尘埃、烟雾、花粉及动物毛屑可能诱发哮喘。

现在走到哪

本地可以启动前后端,跑回归集和检索消融。评测会看 Recall、MRR、nDCG,以及路由是否通过、轮数和耗时。这些数字只说明开发集上的行为,不能当成临床正确率。

公开仓库在 omiki1/medical_agentic_rag。密钥只放在本机 .env,这里不放演示地址。

MUSIC
专辑封面

Moonlit Current

Between Tides · 原创环境音

0:000:00

进页播放环境音,可在上方关掉。

MY MUSIC

我的歌单

正在准备搜索索引…

选择Enter 打开Esc 关闭