DeepHPO v3.0.0 - 三轮推理架构
项目介绍
DeepHPO是一个基于LLM的临床表型HPO术语提取的Web应用,旨在为用户提供便捷、准确的HPO术语查询服务。
v3.0.0 版本引入全新的三轮推理架构,通过LLM预处理、本地候选搜索、LLM精确匹配三步流程,极致压制LLM幻觉问题,确保每一条输出的HPO术语都经过本地术语库验证。
核心优势
1. 三轮推理架构:准确性优先的设计理念
DeepHPO v2.0 方案将完整HPO术语表(420K tokens)一次性注入LLM上下文,依赖模型"记忆"并输出术语ID。这种方式存在致命缺陷:LLM可能编造不存在HPO ID,即所谓"幻觉"问题。
DeepHPO v3.0 采用截然不同的策略:
| 步骤 | 内容 | 优势 |
|---|---|---|
| 第一轮 | LLM预处理提取症状关键词 | 智能理解临床文本,识别否定语义 |
| 第二轮 | 本地索引化搜索候选术语 | 快速(毫秒级)、可控、不依赖LLM |
| 第三轮 | LLM在候选术语中精确匹配 | 输出结果100%来自本地库,无幻觉 |
关键创新:第二轮候选术语来自本地搜索,第三轮LLM只能从中选择,严禁编造。这确保了输出的每一个HPO ID都真实存在于术语库中。
2. 否定语义智能识别:避免误匹配
临床文本中频繁出现否定表述,如"无头痛"、"否认发热"、"非ST段抬高型心肌梗死"。传统方案容易将"ST段抬高"单独提取,导致错误匹配。
DeepHPO在预处理阶段专门识别否定词(非、无、不、未、否认、未见等),并严禁匹配被否定的症状:
输入:"急性非ST段抬高型心肌梗死"
✅ 正确匹配:HP:0001658 心肌梗死、HP:0032141 冠心病
❌ 错误拒绝:HP:0012251 ST段抬高(被"非"否定)
3. 谨慎推断策略:宁缺毋滥
LLM预处理阶段支持基于医学知识推断相关症状,但遵循严格规则:
- 只推断与诊断高度相关、几乎必然伴随的核心症状
- 不推断非典型、可能不存在或因人而异的症状
例如:诊断"脑梗死"可谨慎推断"肢体无力"(核心症状),但不应推断"失语"、"偏盲"等非必然症状。这避免了过度推断导致的噪声匹配。
4. 本地索引化搜索引擎:毫秒级响应
项目实现了高性能的本地搜索引擎(hpoSearchEngine.ts):
- 多级索引结构:ID索引、英文名前缀索引、中文名前缀索引、关键词索引
- 智能匹配策略:精确匹配、前缀匹配、关键词匹配、中文子串滑动窗口
- 同义词扩展:基于trigram相似度的同义词搜索,补充候选术语
搜索完全本地化,无需向量数据库,无需外部索引服务,启动即可使用。
5. 实时症状高亮:可视化验证
结果页面支持在输入文本中实时高亮匹配的症状词:
- 蓝色虚线:精确匹配的原始症状词
- 紫色虚线:子串匹配的扩展词
鼠标悬停高亮词可显示对应的HPO ID,点击可直接跳转到HPO官网查看术语详情。这让用户能直观验证匹配准确性。
6. 双模式切换:灵活应对不同需求
| 模式 | 说明 | 适用场景 |
|---|---|---|
| LLM匹配 | 三轮推理完整流程 | 临床病历文本,需要智能提取和推断 |
| 表型搜索 | 本地搜索直接返回 | 已知症状关键词,快速查询 |
用户可通过界面左下角按钮一键切换模式。
7. 自定义API配置:私有化部署友好
支持用户配置自己的API端点:
- 使用Anthropic Messages API格式
- 支持DeepSeek、GLM-5等多种模型
- 配置存储于本地localStorage,不上传服务器
隐私保护:建议私有化部署,在线版本部署于Hugging Face,日志公开可见。
实现方式
第一轮:LLM预处理提取症状
LLM分析临床文本,智能提取患者当前存在的症状,并支持:
- 从主诉、现病史中提取阳性症状和体征
- 整理既往病史和拟诊断
- 识别否定症状并排除
- 谨慎推断核心症状
输出结构化JSON:
{
"symptoms": ["头晕", "肢体无力"],
"medicalHistory": ["脑梗死", "肝硬化"],
"diagnosis": ["脑梗死"],
"negatedSymptoms": ["头痛"],
"familyHistory": ["父亲高血压"]
}
第二轮:本地搜索候选术语
将提取的症状关键词拆分,在本地HPO术语库中进行模糊搜索:
- 前缀索引快速定位
- 关键词索引精确匹配
- 中文子串滑动窗口扩展覆盖
- 同义词trigram搜索补充候选
此步骤不依赖LLM,响应快速且可控,最终返回约50个候选术语。
第三轮:LLM精确匹配
将候选术语表注入LLM上下文,让模型从中选择最精确匹配的HPO术语:
- 严格约束:只允许从候选表中选择
- 置信度分级:高/中/低,便于用户判断
- 匹配理由说明:remark字段解释匹配依据
在线使用
访问 deephpo在线使用,在线版本默认使用GLM-5模型。
注意:在线版本部署于Hugging Face,日志在Log中公开,无隐私保护,建议私有部署。
通过右上角设置按钮可配置自己的API服务。

本地部署
git clone https://github.com/pzweuj/DeepHPO.git
cp .env.local.self .env
# 编辑.env填入API配置
npm install && npm run build