Files
PlantAI-rag/docs/GeneFamily-RAG_Spec_FINAL.md
2026-07-10 17:59:59 +08:00

17 KiB
Executable File
Raw Permalink Blame History

GeneFamily-RAG 落地规范 vFINAL

面向"基因家族研究"场景的 Graph-first + Evidence-second RAG 总体设计与数据规范 整合版本:基于 gpt_rag.md (工程规范) + rag_gpt5.2.md (需求分析) 生成日期:2026-03-27


目录

  1. 背景与目标
  2. 总体架构
  3. 数据分层设计
  4. 实体与关系规范
  5. 证据与溯源标准
  6. 数据资产规划
  7. 实施路线图
  8. 多智能体输出规范
  9. 附录:校验规则与迁移指南

1. 背景与目标

1.1 为什么要单独做"基因家族版"RAG

基因家族论文/报告的问答,和"通用植物知识图谱问答"最大的差异在于:

  1. 结构化优先:家族成员、系统发育分组、结构域/基序、复制事件、共线性、同源/旁系/直系同源等是主干信息;文本证据是支撑层。
  2. 强规范化需求:同一基因会以多种形式出现(symbol / locus / protein / accession / 旧ID / 物种前缀);不做 alias-first,召回会不稳定。
  3. 可追溯是硬门槛:科研写作/审稿需要能落到"哪篇文献/哪一段/哪张图/哪张补表/哪条数据行"。

1.2 科研人员的核心痛点

A. 把"分散的证据"变成"可检索的结论 + 依据"

科研做基因家族最常卡在:信息散在 TAIR/Ensembl/UniProt/InterPro/文章/补充材料里,结论不好复用。

RAG应该做到:

  • 给出结论(家族定义、关键结构域、分类标准、命名惯例、已知功能)
  • 同时给出依据(来自哪些数据库条目/哪篇文献/哪张图表/哪条实验事实)

B. 让"分析结果解释"不再靠记忆与经验

分析模块会吐出很多结果:树、motif、Ka/Ks、表达热图、共线性等。RAG要帮你把这些结果放进"研究共同体的语境"里:

  • 某类拓扑在该家族里是否常见?是否对应已知亚家族?
  • 某个结构域组合是否提示新功能/新亚型?
  • 某个表达模式在文献中常见于什么胁迫/组织?

C. 跨物种/跨版本/跨命名的对齐与消歧

植物基因家族最痛:同源基因多个命名体系、基因组版本更新、同名不同物种。

RAG要提供:

  • 实体消歧(gene_id / transcript / protein / locus / synonyms)
  • 版本追踪(基因组版本、注释版本)
  • 同源/旁系/直系关系的证据汇总(不是只给一个结论)

D. 把"下一步该怎么做"变成可复用 SOP

科研人员常问的不是"是什么",而是"我下一步该做什么、怎么做最靠谱"。

RAG要能回答:

  • 推荐哪些验证实验(qPCR、亚细胞定位、转录激活、突变体、互作等)
  • 常用参数区间/工具选择/常见坑(例如HMM阈值、树构建模型、去冗余策略)

1.3 RAG应该能回答的科研问题

Ⅰ. 家族定义与边界(最常问)

  • "XX家族在植物里标准定义是什么?必须包含哪些结构域/保守位点?"
  • "我鉴定到的候选基因里,哪些是真成员,哪些可能是假阳性/相近家族串门?"
  • "亚家族怎么划分更符合前人?有哪些主流分类体系?"

Ⅱ. 命名、同源与进化(写文章必用)

  • "拟南芥/水稻/玉米里该家族的命名规则与历史沿革?"
  • "某基因在不同物种的直系同源是谁?证据是什么(树/共线性/域架构)?"
  • "家族扩张主要由串联重复还是片段复制/WGD驱动?已有研究怎么看?"

Ⅲ. 功能假设与优先级排序(指导实验)

  • "哪些成员与抗逆/激素/发育阶段相关证据最强?"
  • "如果我要挑3个基因做功能验证,按证据(文献+表达+保守性)怎么排序?"
  • "这个motif/结构域组合在文献里通常对应什么功能模块?"

Ⅳ. 表达与调控(组学解释)

  • "该家族在不同组织/胁迫下的典型表达模式是什么?关键条件有哪些?"
  • "哪些转录因子/顺式元件经常调控该家族?有无已验证案例?"
  • "是否存在典型共表达模块/通路关联(如ABA、SA、JA等)?"

Ⅴ. 方法学与参数(减少踩坑)

  • "家族鉴定用BLAST vs HMMER怎么选?阈值怎么设更合理?"
  • "树构建、比对裁剪、模型选择在该家族里常见做法是什么?"
  • "Ka/Ks、共线性、结构域注释的常见误区是什么?如何自检?"

2. 总体架构

2.1 Graph-first + Evidence-second(强推荐作为默认路由)

两级检索(默认路由)

  1. Graph-first(结构化召回):

    • 先在图谱/关系表里召回候选实体/边/路径(尤其:member_of / classified_into / has_domain / orthologous_to / syntenic_with / duplicated_to / expressed_in / upregulated_in)。
  2. Evidence-second(证据回填):

    • 用每条候选边的 provenance 去取到证据 chunk(本地 chunk 库优先;没有则在线拉取并缓存)。
  3. Cite Gate(引用门控):

    • 置信度 ≥ medium 的结论必须能回填证据,否则回答自动降级为"可能/提示/需要进一步核查"。

2.2 参考 PlantConnectome 的"可借鉴点"与"必须补强点"

可直接借鉴的工程思想

  • 边表(Edges):一行一条关系,包含 source/type/relationship/target/type + pubmedID + p_source + basis,并额外保存 resolved 版本与 alias 字段。
  • Resolve 是独立阶段:同时保存"原始抽取"和"归一化后"字段,便于调试与回溯。
  • 关系同义词归并:把大量自然语言关系词归并到少量类别/枚举(例如 activation/induction 类)。

必须补强的关键缺口

  • p_source 的格式是 {pmid}_{section}(如 23031218_abstract),但 当前数据库无法用 p_source 直接取到原文 chunk;需要从 p_source 提取 PMID,再通过 PubMed API 在线获取摘要/原文。
  • 这意味着:你的系统必须补一层"文献证据库(pmid → chunks)",否则只能做"弱可追溯"(指到 PMID+section,但没有可复核原句)。

3. 数据分层设计

3.1 需要的最小 6 个数据域(强推荐)

  1. Edges(关系边表):核心事实/关系。
  2. Entities(实体表):规范化实体(含 type、species、primary_id)。
  3. Alias(别名表):alias-first 的基础。
  4. Documents(文献元数据):PMID/DOI ↔ title/year/journal。
  5. Chunks(证据库):pmid → section → chunk_id → text + locator。
  6. FamilyLayer(家族专用层):家族成员、分组、结构域架构、复制/共线、orthogroup 等。

3.2 统一 JSON Schema(项目的"最终输出格式")

顶层

{"entities":[...], "relations":[...]}

Entity 通用字段

{
  "id": "唯一ID(内部稳定)",
  "name": "展示名",
  "type": "gene|protein|gene_family|protein_domain|treatment|phenotype|...(枚举)",
  "species": "物种(对 gene/protein 强制)",
  "primary_id": "稳定外部ID(AGI/Ensembl/UniProt/NCBI等)",
  "attributes": {},
  "description": "可选",
  "provenance": [ ... ]
}

Relation 通用字段(核心)

{
  "id": "关系ID",
  "source": "源实体ID",
  "target": "目标实体ID",
  "type": "关系枚举(canonical)",
  "confidence": "high|medium|low",
  "qualifiers": {},
  "provenance": [ ... ],
  "description": "可选"
}

4. 实体与关系规范

4.1 分阶段实施策略

阶段1(现在,1篇文章)
  - 实体:25种(核心)
  - 关系:35种(核心)
  
阶段2(100篇文章)
  - 实体:40种(扩展)
  - 关系:60种(扩展)
  
阶段3(几千到几万篇文章)
  - 实体:80-100种(按需从190种中选择)
  - 关系:150-200种(按需从788种中选择)
  
阶段4(可选,扩展到其他植物生物学领域)
  - 实体:190种(全部)
  - 关系:788种(全部)

4.2 阶段1核心实体类型(25种)

核心生物实体

  • gene, protein, gene_family, protein_domain, motif

物种/组织/表型

  • organism, cultivar, tissue, cell_type, developmental_stage
  • treatment, hormone, environmental_factor
  • phenotype, trait

过程/分子

  • biological_process, signaling_pathway
  • metabolite, mirna, transcription_factor, promoter

数据/证据

  • dataset, publication, method, assay

4.3 基因家族通用实体类型(推荐最小全集)

  • Core:gene, protein, gene_family, gene_subfamily/phylo_clade
  • 家族鉴定:family_definition, hmm_model, protein_domain, motif, domain_architecture
  • 演化:orthogroup, duplication_event, syntenic_block, genomic_region, genome_build
  • 表达与表型:tissue, developmental_stage, treatment, phenotype, trait
  • 证据:publication, doc_chunk, figure, table, dataset, database, assay, method

4.4 阶段1核心关系类型(35种)

调控关系

  • activates, inhibits, regulates

表达关系

  • expressed_in, upregulated_in, downregulated_in, induced_by, repressed_by

功能关系

  • involved_in, controls, affects, promotes, mediates

进化关系

  • homologous_to, orthologous_to, paralogous_to, syntenic_with

层级关系

  • member_of, contains, part_of, belongs_to

互作关系

  • binds_to, interacts_with, targets

数据关系

  • annotated_in, stored_in, originated_from

4.5 基因家族通用关系类型(Canonical Enum)

家族

  • member_of, classified_into, defined_by, uses_model, has_domain, has_motif, has_architecture

演化

  • homologous_to, orthologous_to, paralogous_to, belongs_to_orthogroup, syntenic_with, duplicated_to, duplicated_from

表达

  • expressed_in, upregulated_in, downregulated_in, induced_by, repressed_by, temporally_expressed

功能/表型

  • involved_in, affects, controls, associated_with

互作/调控(可选)

  • regulates, activates, inhibits, binds_to, interacts_with, targets

4.6 Domain/Range 约束示例

expressed_in:
  direction: "source->target"
  domain: ["gene","transcript","protein"]
  range:  ["tissue","cell_type","developmental_stage"]

orthologous_to:
  direction: "bidirectional"
  domain: ["gene"]
  range:  ["gene"]
  constraints:
    - "species(source) != species(target)"

5. 证据与溯源标准

5.1 Provenance(证据指针)标准

{
  "source_type": "publication|dataset|database",
  "source_id": "pmid:23031218|doi:...|GSE...|UniProt:...",
  "p_source": "23031218_abstract",
  "doc_chunk_id": "pmid23031218_abs_c03",
  "locator": {
    "section": "abstract|results|figure_legend|table|supp",
    "page_start": null,
    "page_end": null,
    "figure": null,
    "table": null
  },
  "snippet": "可复核原句(尽量原文)",
  "evidence_level": "experiment|omics|prediction|curation",
  "method": "RNA-seq|qRT-PCR|HMMER|MCScanX|..."
}

5.2 证据强度分层

  • Level 1:实验验证(遗传学/生化/互作)
  • Level 2:组学支持(转录组/蛋白组/表观组)
  • Level 3:计算预测(结构域/定位/共表达/同源推断)

5.3 强规则

  • confidence = high/medium ⇒ 必须有 provenance[],且每条至少含 source_id + doc_chunk_id + locator.page + snippet
  • confidence = low ⇒ 可无 provenance(但下游回答要降级措辞)

5.4 Qualifiers(上下文限定)统一格式

统一放在 relation 的 qualifiers,建议支持这些常用键:

  • 表达类:tissue, stage, treatment, time_point, assay, log2fc, p_adj
  • 结构域类:start, end, evalue, db
  • 系统树/分组:tree_method, alignment_method, bootstrap, scheme
  • 共线性/复制:dup_type, ks, ka_ks, block_id, score

6. 数据资产规划

6.1 必备(MVP就要有)

1) 基因组与注释

  • genome build、GFF3/GTF、CDS/protein序列、转录本结构、基因ID映射与别名表

2) 结构域与功能注释

  • InterPro/Pfam/SMART/CDD结果、GO、关键词、亚细胞定位预测(可作为"计算证据"层)

3) 家族定义资产

  • 该家族的HMM profile(或域组合规则)、保守motif、关键位点描述、已知亚家族规则

4) 核心文献库(强建议做"精读级"结构化)

  • 综述 + 领域标杆文章:把"家族分类、关键基因、实验结论、图表信息"抽成结构化卡片

6.2 推荐(让RAG真正"懂科研")

5) 同源与进化证据集

  • OrthoGroup、系统树(或树的关键分叉解释)、共线性块、复制类型标签(tandem/WGD/segmental)

6) 转录组表达与差异表达

  • RNA-seq/微阵列:组织、时期、胁迫、品种;DEG结果;共表达模块(WGCNA等)

7) 蛋白互作/修饰/定位证据

  • Y2H/BiFC/CoIP-MS、磷酸化/泛素化、定位实验图、结构预测摘要(可当"功能支持")

8) 表型与遗传证据

  • 突变体/过表达/CRISPR表型、QTL/GWAS关联、遗传互作

6.3 进阶(让RAG变成"领域专家")

9) 通路与网络

  • KEGG/Reactome/MapMan、调控网络、TF-靶基因证据、cis元件富集结果

10) 实验SOP与"隐性知识"

  • 你们实验室做家族项目的模板:从鉴定到文章写作的流程、参数默认值、审稿人常问点

7. 实施路线图

Phase 1:可用(1个家族 → 1套可追溯答案)

  • 把"家族定义 + 20–50篇关键文献 + 1–3个模式物种的注释/结构域/同源"做成高质量KB
  • 重点:实体消歧 + 证据片段引用(没有引用的回答一律降级为"推测")

Phase 2:好用(跨物种扩展 + 研究问题模板化)

  • 加入表达数据、共线性、复制类型标签
  • 建一套"问题模板 → 检索策略 → 输出格式"的库(让多智能体稳定产出)

Phase 3:专家(自动更新 + 证据冲突处理)

  • 定期增量抓取新文献/新版本注释
  • 做"证据冲突"机制:不同论文结论不一致时,列出分歧点与证据等级,而不是强行给唯一答案

8. 多智能体输出规范

8.1 让RAG输出"可计算的中间结构"

不要只让RAG吐一段文字。更强的做法是让RAG同时输出:

结论摘要(人读)

  • 自然语言回答核心问题

证据清单(可追溯)

  • 来源ID、片段、证据等级、适用物种

实体与关系(给分析代理)

  • 候选基因列表、同源对、亚家族标签、条件/组织标签

不确定性声明

  • 哪些是推断,哪些是实验

8.2 输出格式示例

{
  "answer": {
    "summary": "FtSPL1属于SPL基因家族,包含SBP结构域(PF03110)...",
    "confidence": "high"
  },
  "evidence": [
    {
      "source_id": "pmid:31196111",
      "snippet": "FtSPL1 contains the SBP domain (PF03110)...",
      "evidence_level": "experiment",
      "locator": {"figure": "Fig.1", "table": null}
    }
  ],
  "entities": [
    {"id": "FtSPL1", "type": "gene", "species": "Fagopyrum tataricum"},
    {"id": "SPL", "type": "gene_family"},
    {"id": "PF03110", "type": "protein_domain"}
  ],
  "relations": [
    {"source": "FtSPL1", "target": "SPL", "type": "member_of", "confidence": "high"},
    {"source": "FtSPL1", "target": "PF03110", "type": "has_domain", "confidence": "high"}
  ],
  "uncertainty": [
    "亚家族分类存在分歧:文献A分为3组,文献B分为5组"
  ]
}

9. 附录:校验规则与迁移指南

9.1 实体校验

  • id 唯一
  • type 在枚举中
  • gene/protein/transcript 必须有 species
  • protein_domain 必须有 pfam_id 或 interpro_id

9.2 关系校验

  • source/target 必须存在
  • type 在枚举中
  • 满足 domain/range 约束(例如 expressed_in 不允许 gene → treatment)
  • confidence≥medium ⇒ provenance 强制存在且字段完整

9.3 Resolve(归一化)流水线(必须独立)

  • Entity resolve(alias-first):优先稳定 ID(AGI/Ensembl/UniProt)> locus > symbol > name
  • Relationship resolve(同义词归并):把自然语言关系统一到 canonical enum,方向固定
  • Type resolve:把 gene identifier / gene(s) / protein(s) 等不稳定类型统一到枚举

9.4 最小实现顺序(最优计划)

  1. 导入边表到 Edges(保留 raw/resolved + pmid/p_source/basis)
  2. alias-first:建 Alias + 统一 entity_id/primary_id/species
  3. relationship resolve + domain/range 校验
  4. 在线证据回填缓存:pmid → abstract chunks(先把"可追溯"做起来)
  5. 家族专用层:member/clade/domain/duplication/synteny(来自你自己的分析)
  6. Cite Gate:高置信必须能回填 snippet,否则降级措辞

9.5 PlantConnectome 边表字段 → 你的 v2 映射

  • pubmedID → provenance.source_id = pmid:{pubmedID}
  • p_source → provenance.p_source
  • basis → provenance.snippet(短期可用;长期建议用原句替换)
  • * resolved → 你的 canonical entity/type/relation
  • * gene alias → Alias 表的候选 ID 列表

附录:建议补充的 2 个高频关系

  • localized_to:protein → subcellular_compartment
  • essential_for:gene/protein → process/metabolite/phenotype(或归并到 involved_in + qualifiers.role=essential)

文档版本:FINAL 整合日期:2026-03-27 状态:可直接执行