Files
PlantAI-rag/docs/analysis/pc_workflow_analysis.md
T
2026-07-10 17:59:59 +08:00

6.2 KiB
Executable File

PlantConnectome 工作原理深度分析

核心发现

PC的数据来源

不是从chunks提取,而是从完整论文原文处理!

输入: 71,000篇论文 (abstracts + full-texts)
  ↓
GPT-4o处理
  ├── 实体识别: 基因、代谢物、组织等
  ├── 关系抽取: 调控、表达、运输等
  └── 证据提取: 原文片段、实验方法
  ↓
输出
  ├── all_dic.json: 320万关系三元组
  ├── scientific_chunks.json: 实体索引的文本片段
  └── gene_alias.json: 基因别名映射

PC vs 我们的方案对比

数据来源对比

维度 PlantConnectome gene-family-mas-v2
输入 71,000篇完整论文 1篇PDF + 附表
文本来源 PubMed abstracts + full-texts PDF提取的章节
预处理 GPT-4o批量处理 V12.1规则提取
输出 320万关系 107关系

关键差异

1. 文本长度

PC的输入:
- Abstract: 200-300词
- Full-text: 3,000-10,000词
- 每篇论文可抽取数十个关系

我们的输入:
- Gene-centric chunk: 100-500字符
- 只有基因摘要,缺少详细描述
- 每个基因只能抽取0-3个关系

2. 信息完整性

PC的信息:
- 基因表达: "SUC5 is expressed in developing embryos"
- 功能描述: "SUC5 transports biotin and sucrose"
- 实验证据: "Uptake measurements of radiolabelled biotin"
- 物种信息: "Arabidopsis thaliana"

我们的信息:
- 基因表达: {"Root": "High"} (结构化数据)
- 功能描述: 缺少详细文本
- 实验证据: 缺少方法描述
- 物种信息: "Litchi chinensis" (单一物种)

3. 关系抽取方法

PC的方法 (GPT-4o):
1. 读取完整论文文本
2. 识别所有基因实体
3. 理解上下文语义
4. 抽取关系三元组
5. 生成实体定义
6. 提取证据文本

我们的方法 (规则匹配):
1. 读取gene-centric chunk
2. 正则表达式匹配关键词
3. 基于模式抽取关系
4. 无法处理复杂语义

PC的工作原理详解

阶段1: 数据预处理 (离线)

1.1 论文获取

# 从PubMed获取71,000篇论文
papers = fetch_pubmed_papers(query="Arabidopsis gene", limit=71000)

for paper in papers:
    pmid = paper['pmid']
    abstract = paper['abstract']
    fulltext = paper['fulltext']  # 通过PMC获取

1.2 GPT-4o处理

# 使用GPT-4o处理每篇论文
prompt = f"""
从以下论文中提取基因关系:

PMID: {pmid}
Title: {title}
Abstract: {abstract}
Full-text: {fulltext}

任务:
1. 识别所有基因实体
2. 提取关系三元组 (source, relationship, target)
3. 确定实体类型 (gene, protein, metabolite, tissue...)
4. 提取证据文本
5. 生成实体定义

输出格式:
{{
  "entities": [
    {{
      "name": "SUC5",
      "type": "gene",
      "definition": "A sucrose transporter gene...",
      "aliases": ["ATSUC5", "AT1G71890"]
    }}
  ],
  "relations": [
    {{
      "source": "SUC5",
      "source_type": "gene",
      "relationship": "transports",
      "target": "biotin",
      "target_type": "metabolite",
      "evidence": "SUC5 also transports biotin...",
      "basis": "Uptake measurements..."
    }}
  ]
}}
"""

result = gpt4o.generate(prompt)

1.3 数据存储

# 存储到MongoDB
db.all_dic.insert_many(relations)
db.scientific_chunks.insert_many(chunks)
db.gene_alias.insert_many(aliases)

阶段2: 查询服务 (在线)

2.1 用户查询

# 用户搜索 "SUC5"
query = "SUC5"
results = db.all_dic.find({"source": query})

2.2 关系验证 (GPT-4o-mini)

# 验证关系准确性
prompt = f"""
验证以下关系是否正确:

文本: {evidence_text}
关系: ({source}, {relationship}, {target})

输出:
- Validation Status: ✅ Correct / ❓ Uncertain / ❌ Incorrect
- Supporting Evidence: [原文引用]
- Explanation: [解释]
"""

validation = gpt4o_mini.generate(prompt)

2.3 原文获取

# 通过PMID获取原文
p_source = "23031218_abstract"
pmid = p_source.split('_')[0]

# 调用PubMed API
original_text = pubmed_api.fetch(pmid)

我们的改进方案

方案A: 使用V12.1章节文本 (推荐)

# V12.1已经提取了章节文本
sections = {
    "Introduction": "...",
    "Expression Analysis": "...详细表达描述...",
    "Functional Characterization": "...功能描述...",
    "Subcellular Localization": "...定位描述...",
    "Discussion": "..."
}

# 使用章节文本进行LLM抽取
for section_name, text in sections.items():
    relations = llm_extractor.extract(text, gene_id)

优势:

  • 已有完整文本
  • 无需额外API调用
  • 信息丰富

方案B: 整合多数据源

# 结合多个数据源
data_sources = {
    "gene_centric_chunks": chunks,
    "paper_sections": sections,
    "supplementary_tables": tables,
    "figures_captions": captions
}

# 综合抽取
all_relations = []
for source, text in data_sources.items():
    relations = llm_extractor.extract(text, gene_id)
    all_relations.extend(relations)

方案C: 批量论文处理 (长期)

# 类似PC的方法,但针对基因家族
papers = search_gene_family_papers(family="SUT", species="Litchi")

for paper in papers:
    relations = gpt4o.extract(paper)
    store_to_kg(relations)

关键结论

PC的优势

  1. 规模大: 71,000篇论文
  2. 信息全: 完整abstract + full-text
  3. 智能高: GPT-4o理解语义
  4. 关系多: 320万关系

我们的优势

  1. 深度深: 单基因详细信息
  2. 结构好: 染色体、分组、多组学
  3. 成本低: 无需大量API调用
  4. 可控强: 规则+人工验证

互补性

PC: 广度优先 (多论文, 浅信息)
GF: 深度优先 (少论文, 深信息)

结合: PC的广度 + GF的深度 = 完整知识图谱

实施建议

短期 (本周)

  1. 使用V12.1章节文本重新抽取
  2. 实现简单的LLM抽取 (规则+轻量LLM)
  3. 验证抽取质量

中期 (本月)

  1. 批量处理10-20篇相关论文
  2. 构建基因家族专用知识图谱
  3. 与PC数据对齐

长期 (本季度)

  1. 实现完整的GPT-4o抽取流程
  2. 构建可扩展的抽取pipeline
  3. 发布基因家族知识图谱API