Genome Med|RAG-HPO做表型注释:学习一下大语言模型怎么作为发文思路

今天给大家介绍一篇做工具的文章,教大家怎么去模仿这种思路产出自己的文章 ,结合大语言模型去写工具也是可以出文章的,不论是集成化的docker 本地部署,或者缩减点做个shiny ,甚至是开放源代码都是可以的。

  • 标题:利用检索增强生成通过大型语言模型改进自动深度表型分析
  • DOI:10.1186/s13073-025-01521-w

摘要

RAG-HPO ,一种基于 检索增强生成 (RAG) 的表型提取工具,利用 LLaMa-3.1 70B 模型结合动态向量数据库对临床文本进行 HPO 术语 分配。在 112 份病例报告(1792 个人工标注术语)的基准测试中,RAG-HPO 显著优于 Doc2HPO、ClinPhen 和 FastHPOCR ,达到 0.81 精度、0.76 召回率与 0.78 F1 (p<0.00001),并有效减少幻觉和无关匹配。假阳性多数为目标术语的上位词,仍具一定临床相关性。RAG-HPO 的 高准确性与适应性 不仅提升了表型提取的可靠性,还加速了 罕见病遗传机制的发现与临床基因组学应用,为表型驱动的基因诊断提供了新的解决方案。

部分结果

在基于病例队列的对比分析中,RAG-HPO 在多种 LLM 后端配置下均展现出优于传统工具的性能(表 4)。其中,LLaMA-3.1 70B + RAG-HPO 取得了最高的平均精度 (0.81)、召回率 (0.76) 和 F1 分数 (0.78),显著超过 FASTHPOCR、Doc2HPO 与 ClinPhen 等基于规则的表型识别工具。虽然不同 LLM 的规模和架构对性能有所影响,但整体趋势显示 RAG 框架有效缓解了误配和漏配问题,尤其在减少假阴性和提升上下文相关性方面具有优势。

模型 / 工具 True positive False positive False negative 平均精度 (Precision) 平均召回率 (Recall) 平均 F1
LLaMA-3.1 70B + RAG-HPO 1333 315 461 0.81 0.76 0.78
LLaMA-3 70B + RAG-HPO 1083 486 711 0.71 0.61 0.64
LLaMA-4 Scout + RAG-HPO 1257 634 537 0.65 0.69 0.66
LLaMA-3 8B + RAG-HPO 852 727 942 0.53 0.46 0.48
Misra 24B + RAG-HPO 581 174 1213 0.73 0.31 0.42
Deepseek-R1 + RAG-HPO 682 1944 1112 0.15 0.35 0.20
FASTHPOCR 816 726 978 0.53 0.45 0.49
Doc2HPO 634 260 1159 0.71 0.35 0.47
ClinPhen 635 370 1159 0.63 0.35 0.45

对比了各工具输出与人工注释参考集的一致性,结果显示 RAG-HPO + LLaMA-3.1 70B 能够在所有配置中恢复最多的真值术语,并保持最低的误报率,实现了最佳的整体误差平衡。相比之下,FastHPOCR 尽管检索到的正确术语数最多,但伴随极高的假阳性比例;而 ClinPhenDoc2HPO 虽然误报率较低,却仅能捕获黄金标准中约三分之一的表型,存在明显漏检。总体而言,传统工具在准确性和覆盖率上均显著落后于 RAG-HPO,后者在减少错误分配的同时提升了表型恢复能力,凸显其在自动化 HPO 任务中的优势。

按器官系统与节点深度的性能评估

通过 二项式广义估计方程 (GEE) 并在患者水平聚类的条件下建模,我们发现 器官系统对 HPO 分配准确率的影响有限 (图 6A),仅在心血管、泌尿生殖和头颈部表型中表现出略高的正确分配概率(比值比约 8--11),其余系统大多接近 1。随着 节点深度增加 ,所有工具的性能均呈单调下降趋势(图 6B),预测命中率从浅层节点(≤3)向深层节点(≥10)逐渐降低。最显著的差异来自 工具选择 (图 6C):几乎所有 RAG-HPO 配置均显著优于 FastHPOCR、ClinPhen 与 Doc2HPO ,其中 RAG-HPO + LLaMA-3.1 70B 在全深度范围内始终保持最高的预测命中概率,凸显其在复杂与特异性表型识别中的优势。

假阳性结果的分类与意义

在 HPO 分析中,我们将假阳性术语进一步细分为 直接祖先、间接相关(远亲)、完全无关以及幻觉 四类,以揭示其形成原因和潜在价值(图 7A)。结果显示,RAG-HPO + LLaMA-3.1 70B 共产生 315 个假阳性,其中 绝大多数为目标术语的祖先或远亲(95%) ,仅 14 个(4%)为不相关术语,且真正的幻觉仅 1 个(<1%)(图 7B)。其他 RAG 配置呈现类似模式,但与 LLaMA-3 70BLLaMA-4 Scout 等较低对齐模型组合时,不相关术语比例更高。相比之下,基于规则的工具(FASTHPOCR、ClinPhen、Doc2HPO )虽然没有幻觉,但远亲术语依然占 62--79%。值得注意的是,RAG-HPO 的不相关术语并非源于 LLM 的自由生成,而主要由语义相似性检索结果不佳所致,因 LLM 必须在返回列表中强制选择术语,偶尔会导致语义不符的分配。整体来看,大多数假阳性依然提供了临床相关性,强调了根据下游应用需求灵活选择"最具体"还是"较广泛但相关"术语的重要性。


解读开源文件

Githubhttps://github.com/PoseyPod/RAG-HPO

我简化一下,主要分成两大部份:

1.HPO 向量数据库构建

py 复制代码
# hpo_vector_builder.py
"""
步骤:下载/刷新 → 提取术语信息 → 生成向量 → 保存
"""
import requests, time, re, json
import pandas as pd, numpy as np
from pathlib import Path
import pronto
from sentence_transformers import SentenceTransformer

# 自动下载 HPO
def initialize_hpo(obo_url="https://purl.obolibrary.org/obo/hp.obo", obo_path="hp.obo"):
    obo_file = Path(obo_path)
    if not obo_file.exists():
        print("Downloading HPO...")
        resp = requests.get(obo_url); resp.raise_for_status()
        obo_file.write_text(resp.text, encoding="utf-8")
    return pronto.Ontology(obo_file)

# 构建 DataFrame(只保留主要字段)
def build_dataframe(ont):
    records = []
    for term in ont.terms():
        records.append({
            "hp_id": term.id,
            "label": term.name,
            "definition": term.definition or "",
            "synonyms": [s.description for s in term.synonyms]
        })
    return pd.DataFrame(records)

# 向量化 + 保存
def vectorize_and_save(df, out_meta="hpo_meta.json", out_vec="hpo_emb.npz"):
    model = SentenceTransformer("pritamdeka/SapBERT-mnli-snli-scinli-scitail-mednli-stsb")
    embeddings = model.encode(df["label"].tolist(), convert_to_numpy=True)
    np.savez_compressed(out_vec, emb=embeddings.astype(np.float16))
    df.to_json(out_meta, orient="records")
    print(f"Saved {len(df)} terms → {out_meta}, {out_vec}")

if __name__ == "__main__":
    ont = initialize_hpo()
    df  = build_dataframe(ont)
    vectorize_and_save(df)

2.随机打印 HPO 术语 测试

py 复制代码
# hpo_random_term.py
"""
简化版:随机抽取一个 HPO 术语并打印其基本信息
"""
import random, requests, time
from pathlib import Path
import pronto

def initialize_hpo(obo_url="https://purl.obolibrary.org/obo/hp.obo", obo_path="hp.obo"):
    if not Path(obo_path).exists():
        print("Downloading HPO...")
        resp = requests.get(obo_url); resp.raise_for_status()
        Path(obo_path).write_text(resp.text, encoding="utf-8")
    return pronto.Ontology(obo_path)

def print_random_term(ont):
    term = random.choice(list(ont.terms()))
    print("\n=== Random HPO Term ===")
    print("ID:", term.id)
    print("Name:", term.name)
    print("Definition:", term.definition)
    print("Synonyms:", [s.description for s in term.synonyms])
    print("Xrefs:", [str(x) for x in term.xrefs])
    print("========================")

if __name__ == "__main__":
    ont = initialize_hpo()
    print_random_term(ont)

怎么模仿

这是官网的学术海报,通过这一张图可以看看,我们怎么去模仿学习做这类研究。

基于AI的总结:

这张海报展示的研究思路非常清晰,可以分为 问题提出 → 方法设计 → 性能评估 → 结果与讨论 → 应用前景 五个环节,我们完全可以模仿这种逻辑来利用 大语言模型 (LLM) 开发工具并产出论文。

  1. 研究问题:指出传统工具(如 Doc2HPO、ClinPhen)在表型识别中的局限,缺乏上下文理解、假阳性多、需要人工审核。引入 LLM 的潜力,但同时说明其缺点(幻觉、不精确),从而提出改进的需求。

  2. 方法设计 :构建一个新框架(RAG-HPO),将 LLM 与检索增强生成 (RAG) 相结合。具体流程是:

    • 从临床文本中提取表型短语
    • 使用 向量数据库(包含 54,000+ HPO 短语)进行语义检索
    • 将最相关的候选结果反馈给 LLM,用于最终的 HPO 术语分配
      → 这样既利用了 LLM 的语境理解,又避免了幻觉输出。
  3. 性能评估 :基于 真实病例报告队列 (人工标注的金标准),与传统工具进行对比,评估指标包括 精度、召回率、F1 分数 。结果显示 RAG-HPO + LLaMA-3.1 70B 在 三项指标上均优于对照工具,尤其是假阳性显著减少。

  4. 结果与讨论

    • 分析假阳性类别(祖先、远亲、不相关、幻觉),证明大多数假阳性仍具临床价值
    • 分层分析(按器官系统、节点深度),说明工具在复杂语义和深层术语上的优势
    • 指出 RAG-HPO 可迭代升级,随着 LLM 架构和 HPO 数据库的扩展,性能会进一步提升。
  5. 应用前景 :提出该工具可以加速 基因型-表型匹配、临床诊断和基因发现,并且通过开源(Github 发布)方便科研和临床转化。

🔑 我们可以模仿的地方

  • 研究切入点:找出某个生物医学领域中已有工具的痛点(如假阳性高、人工依赖强),提出 LLM + RAG/知识库 的改进方案。
  • 方法框架 :搭建一个流程,将 文本/数据输入 → 特征抽取 → 向量检索/知识对齐 → LLM 输出 → 指标评估
  • 数据来源:用公开数据库(病例报告、电子病历、文献摘要、基因组数据)建立评估集,并人工标注一部分作为金标准。
  • 性能评估 :与现有工具做横向比较,使用 Precision/Recall/F1 等标准指标,必要时做子分析(分层或分系统)。
  • 文章结构 :模仿这篇,把 背景 → 方法 → 结果 → 讨论 → 展望 清晰串联,最好配合图表(流程图、性能对比图、误差分析图)。

举一反三

例如我这边随意拟定三个方向:

方向一:免疫相关不良事件(irAE)表型智能挖掘

免疫检查点抑制剂(ICI)治疗相关的 免疫相关不良事件 (irAE) 表型复杂且异质性强,给临床评估和预后预测带来挑战。本课题拟构建基于 RAG-LLM 的智能表型识别工具,将临床病例文本自动映射到 HPO/MedDRA 术语 ,实现对 irAE 的标准化与结构化表征。该方法不仅能减少人工审核负担,还可用于建立系统的 irAE 表型数据库,从而支持 免疫治疗分型、风险预测与精准管理

  • 背景:irAE 的表型异质性大,传统字典工具难以捕获上下文信息。
  • 方法:收集病例报告和电子病历,结合 irAE 术语库(如 CTCAE、MedDRA)与 RAG 检索机制,增强 LLM 的精确提取。
  • 结果预期:构建 irAE 表型数据库,提升 irAE 风险预测与免疫治疗精准分型。

方向二:单细胞数据中的细胞死亡机制自动注释

新兴细胞死亡机制(如 铁死亡、杯凋亡、PANoptosis )在肿瘤免疫和炎症中发挥关键作用,但现有单细胞注释方法难以精确识别其特征。本课题提出开发结合 RAG 与 LLM 的细胞死亡注释工具,通过整合 死亡机制基因集与本体数据库 ,对单细胞差异表达基因和通路进行自动化标注。该框架将提高对细胞死亡亚型的识别能力,推动对 免疫微环境与程序性细胞死亡交叉机制 的深入理解。

  • 背景:铁死亡、杯凋亡、PANoptosis 等新兴细胞死亡方式难以通过传统方法精确注释。
  • 方法:构建死亡机制相关的基因集与本体数据库,通过向量化检索 + LLM 对差异基因/通路进行自动匹配。
  • 结果预期:提升单细胞层面对细胞死亡亚型的识别能力,推动免疫微环境与死亡机制交叉研究。

方向三:NHANES 队列中的环境暴露--疾病表型映射

环境重金属和污染物暴露与多种慢性疾病风险密切相关,但大规模队列(如 NHANES )中表型与暴露指标的异构性限制了系统化分析。本课题计划建立 RAG-LLM 驱动的表型映射工具 ,将 NHANES 变量自动对齐到 标准化疾病本体(HPO/ICD-10) ,并结合暴露数据实现高通量表型挖掘。该方法可揭示 环境暴露--疾病表型--遗传背景 的复杂关联,为精准流行病学与公共卫生干预提供新思路。

  • 背景:NHANES 包含丰富的临床表型和暴露指标,但变量异构,传统匹配依赖人工。
  • 方法:利用 RAG-LLM 框架,将 NHANES 变量与标准化疾病/表型本体(HPO、ICD-10)自动对齐。
  • 结果预期:实现高通量表型挖掘,揭示 环境暴露--疾病表型--遗传背景 的三重关联。

传统的 靶点挖掘套路 已被反复使用,不仅难以创新,还很难与高分文章竞争;如果缺乏新思路和优质数据,不妨尝试 基于大语言模型的工具开发 。这类方法不同于传统深度学习框架,具备更高的灵活性与可扩展性,足以支撑 课题申报 或在 二区期刊 发文,完全绰绰有余。

相关推荐
AngelPP3 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年3 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼3 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS3 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区4 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈5 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang5 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx
shengjk16 小时前
NanoClaw 深度剖析:一个"AI 原生"架构的个人助手是如何运转的?
人工智能
西门老铁8 小时前
🦞OpenClaw 让 MacMini 脱销了,而我拿出了6年陈的安卓机
人工智能