医疗用药 Agent 的 RAG:先拆证据字段,再让模型生成
做处方审核、用药安全提醒、患者沟通类 Agent,RAG 的关键不只是“搜到了什么”,而是搜到后有没有保住限定条件。说明书、指南、药物知识库里的适应证、剂量单位、特殊人群、肾功能分层、相互作用、证据来源,如果被生成阶段压成一句“可使用,注意监测”,边界就没了。
本文只讨论系统设计:证据检索、字段校验、文献追踪和人工复核辅助,不输出诊断、处方或具体用药建议。
图1:文章主题示意图
1. 证据先结构化,摘要放后面
普通知识库常用 chunk + 向量召回 + LLM 总结。用药文本不太适合直接走这条路,因为一个结论经常跨段落:前面写适应证,后面补年龄限制、禁忌证、肾功能调整、疗程和监测项。chunk 切断后,召回文本仍然相关,但生成结果可能漏字段。
建议把命中文本先落到证据包:
| 字段 | 含义 | 规则 |
|---|---|---|
| indication | 适应证及范围 | 缺失时不生成结论性动作 |
| dose | 剂量范围、单位、频次 | 单位只读,不交给模型改写 |
| population | 年龄、妊娠、特殊人群 | 与患者上下文比对 |
| renal_adjustment | 肾功能分层 | 上下文未知时进入复核 |
| interaction | 合并用药相互作用 | 保留风险标签和来源 |
| evidence_level | 证据等级或来源类型 | 原样展示 |
| knowledge_version | 知识库版本 | 写入审计日志 |
LLM 的职责是解释字段、组织摘要、列出缺失项。剂量单位、证据等级、知识库版本这类字段,应由规则层保护。
2. EHR 上下文要参与检索和校验
同一药物名,在不同患者上下文里,适用范围可能不同。年龄、诊断、过敏史、肾功能、肝功能、妊娠状态、当前用药,不应只放在 prompt 末尾当背景,而要进入检索前过滤和检索后校验。
一个最小 query_set 可以这样写:
task = medication_evidence_check
drug_code = RxNorm_or_ATC
diagnosis = ICD_or_SNOMED
age_group = adult_or_child_or_unknown
renal_function = value_or_unknown
hepatic_function = value_or_unknown
allergy = coded_or_text[]
current_medications = RxNorm_or_ATC[]
推荐流程:
EHR 选择待评估用药
-> 拉取最小 patient_context
-> 生成 query_set
-> Drug Knowledge Service 返回 retrieved_facts
-> rule_claim_check 做字段校验
-> LLM 输出证据摘要和复核提示
-> audit_log 落库
常见坑是 renal_function = unknown,但召回证据里存在 renal_adjustment。这时不能让模型用“注意监测”含糊带过,而应由规则层限制输出:
{
"missing_context": ["renal_function"],
"risk_level": "pharmacist_review",
"allowed_output": "evidence_summary_only"
}
FHIR 映射上,MedicationRequest 对应待评估用药,Observation 承接肾功能、肝功能等指标,Condition 承接诊断,AllergyIntolerance 承接过敏史。药物名尽量映射 RxNorm 或 ATC,诊断映射 ICD 或 SNOMED CT,实验室指标映射 LOINC。无法标准化时,也要记录是自由文本、院内码还是国际码。
3. 文献证据要能回放
复核时通常不会只看最终回答,还会看候选证据池、排除理由、升级规则和责任路径。例如评估相互作用提醒中的 alert fatigue,可先用检索式收集候选文献:
("drug-drug interaction alert" OR "medication safety alert")
AND ("clinical decision support" OR "EHR workflow")
AND ("override rate" OR "alert fatigue")
AND ("pharmacist review")
整理时保留 PMID/DOI、研究类型、应用场景、主要终点、局限性、可转化规则。前期资料可用 超能文献 做中文检索和 PDF 翻译,把候选文献、摘要和来源整理成审计表;这里它只是文献整理工具。
4. audit_log 记录到字段级
一次调用至少记录:
{
"request_id": "req_20260514_001",
"knowledge_version": "2026-05-01",
"source_id": ["PMID:xxxx", "drug_label:yyyy"],
"patient_context_hash": "sha256:...",
"missing_fields": ["renal_function"],
"claim_check": {
"risk_level": "pharmacist_review",
"allowed_output": "evidence_summary_only"
},
"model_output_type": "summary",
"human_reviewer": "pharmacist_id_or_empty",
"final_action": "pending_review"
}
落地可以从 50 条模拟审计集开始:每条包含患者上下文、药物知识条目、正确应答边界、必须升级的条件和人工确认记录。先验证字段缺失能否被发现、单位是否被保留、高风险上下文未知时是否停止动作,再优化召回和交互体验。
作者:超能文献 | AI文献检索|AI文档翻译

浙公网安备 33010602011771号