329 lines
6.9 KiB
Markdown
329 lines
6.9 KiB
Markdown
# autoSKG 项目启发分析
|
|||
|
|
|
||
|
|
> 项目: https://github.com/COLA-Laboratory/autoSKG
|
||
|
|
> 分析时间: 2026-03-31
|
||
|
|
> 目标: 提取对gene-family-mas-v2的技能启发
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 autoSKG 核心定位
|
||
|
|
|
||
|
|
**autoSKG** = Automated Scientific Knowledge Graph Construction Pipeline
|
||
|
|
|
||
|
|
**核心功能**:
|
||
|
|
- 从PDF自动提取结构化知识
|
||
|
|
- 构建领域特定的知识图谱 (KG)
|
||
|
|
- 支持增量更新 (持续演化)
|
||
|
|
- 可追溯性 (每个实体链接到原始文献)
|
||
|
|
- 为 PlantScience.ai 虚拟科学家提供后端引擎
|
||
|
|
|
||
|
|
**技术栈**:
|
||
|
|
- Docker化部署
|
||
|
|
- OpenAI GPT处理
|
||
|
|
- 知识图谱存储
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 💡 对 gene-family-mas-v2 的关键启发
|
||
|
|
|
||
|
|
### 启发1: 知识图谱 (KG) 是核心 🔥
|
||
|
|
|
||
|
|
**autoSKG做法**:
|
||
|
|
```
|
||
|
|
PDF → 实体提取 → 关系抽取 → 知识图谱 → 虚拟科学家
|
||
|
|
```
|
||
|
|
|
||
|
|
**当前我们的做法**:
|
||
|
|
```
|
||
|
|
PDF → 文本块 → 向量索引 → RAG检索 → 回答
|
||
|
|
```
|
||
|
|
|
||
|
|
**差距**:
|
||
|
|
| 维度 | autoSKG | 我们当前 |
|
||
|
|
|:---|:---|:---|
|
||
|
|
| 数据结构 | 图结构 (实体-关系) | 向量索引 |
|
||
|
|
| 推理能力 | 强 (图遍历) | 弱 (相似度匹配) |
|
||
|
|
| 可解释性 | 强 (关系路径) | 中 (引用来源) |
|
||
|
|
| 知识整合 | 自动融合 | 手动处理 |
|
||
|
|
|
||
|
|
**建议**:
|
||
|
|
- ✅ 在Phase 4构建知识图谱
|
||
|
|
- ✅ 实体: 基因、物种、家族、分组
|
||
|
|
- ✅ 关系: belongs_to, expressed_in, interacts_with
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 启发2: 增量更新机制 🔥
|
||
|
|
|
||
|
|
**autoSKG特性**:
|
||
|
|
- 检测新PDF
|
||
|
|
- 自动提取新知识
|
||
|
|
- 与现有KG融合
|
||
|
|
- 避免重复处理
|
||
|
|
|
||
|
|
**我们的现状**:
|
||
|
|
- 批量处理PDF
|
||
|
|
- 重新生成索引
|
||
|
|
- 无增量机制
|
||
|
|
|
||
|
|
**建议**:
|
||
|
|
```python
|
||
|
|
# 增量更新流程
|
||
|
|
新PDF → 提取实体关系 → 与现有KG对比 →
|
||
|
|
├── 新实体 → 添加
|
||
|
|
├── 已有实体 → 更新属性
|
||
|
|
└── 冲突 → 人工审核
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 启发3: 可追溯性设计 🔥
|
||
|
|
|
||
|
|
**autoSKG特性**:
|
||
|
|
> "Every entity and relationship in the graph is linked to its original publication source"
|
||
|
|
|
||
|
|
**我们的现状**:
|
||
|
|
- 有source字段
|
||
|
|
- 但不够细粒度
|
||
|
|
|
||
|
|
**改进建议**:
|
||
|
|
```python
|
||
|
|
entity = {
|
||
|
|
"name": "FtSPL1",
|
||
|
|
"type": "gene",
|
||
|
|
"source": {
|
||
|
|
"pmid": "31286919",
|
||
|
|
"paper": "Fagopyrum_tataricum_SPL_2020",
|
||
|
|
"section": "Results-Phylogeny",
|
||
|
|
"sentence": "Group I contained three genes (FtSPL1, FtSPL17, and FtSPL19)",
|
||
|
|
"confidence": 0.95
|
||
|
|
}
|
||
|
|
}
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 启发4: Docker化生产部署 🔥
|
||
|
|
|
||
|
|
**autoSKG做法**:
|
||
|
|
- 完整Docker Compose
|
||
|
|
- 一键启动
|
||
|
|
- 可复现、可扩展
|
||
|
|
|
||
|
|
**我们的现状**:
|
||
|
|
- 部分Docker支持
|
||
|
|
- 配置分散
|
||
|
|
- 部署复杂
|
||
|
|
|
||
|
|
**建议**:
|
||
|
|
```yaml
|
||
|
|
# docker-compose.yml
|
||
|
|
version: '3.8'
|
||
|
|
services:
|
||
|
|
rag-api:
|
||
|
|
build: ./api
|
||
|
|
ports:
|
||
|
|
- "8000:8000"
|
||
|
|
|
||
|
|
qdrant:
|
||
|
|
image: qdrant/qdrant
|
||
|
|
ports:
|
||
|
|
- "6333:6333"
|
||
|
|
|
||
|
|
neo4j: # 新增
|
||
|
|
image: neo4j:5.14
|
||
|
|
ports:
|
||
|
|
- "7474:7474"
|
||
|
|
- "7687:7687"
|
||
|
|
|
||
|
|
frontend:
|
||
|
|
build: ./frontend
|
||
|
|
ports:
|
||
|
|
- "3000:3000"
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
### 启发5: 领域特定优化 🔥
|
||
|
|
|
||
|
|
**autoSKG**: 专为植物生物学设计
|
||
|
|
|
||
|
|
**我们**: 专为基因家族分析设计
|
||
|
|
|
||
|
|
**可以借鉴**:
|
||
|
|
| autoSKG (植物) | 我们 (基因家族) |
|
||
|
|
|:---|:---|
|
||
|
|
| 植物特有实体 | 基因家族特有实体 |
|
||
|
|
| 代谢通路 | 系统发育树 |
|
||
|
|
| 表型特征 | 表达模式 |
|
||
|
|
| 胁迫响应 | 功能验证 |
|
||
|
|
|
||
|
|
**建议**: 深化基因家族领域知识
|
||
|
|
- 标准分析11个stage
|
||
|
|
- 每个stage的特定实体关系
|
||
|
|
- 分析方法参数提取
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📊 能力对比矩阵
|
||
|
|
|
||
|
|
| 能力 | autoSKG | 我们当前 | 优先级 |
|
||
|
|
|:---|:---|:---|:---|
|
||
|
|
| 知识图谱 | ✅ 核心 | ⏳ Phase 4 | P1 |
|
||
|
|
| 增量更新 | ✅ 支持 | ❌ 无 | P2 |
|
||
|
|
| 可追溯性 | ✅ 细粒度 | ⚠️ 粗粒度 | P1 |
|
||
|
|
| Docker部署 | ✅ 完整 | ⚠️ 部分 | P2 |
|
||
|
|
| 领域优化 | ✅ 植物 | ✅ 基因家族 | - |
|
||
|
|
| 虚拟科学家 | ✅ PlantScience.ai | ⏳ 目标 | P1 |
|
||
|
|
| 持续演化 | ✅ 自动 | ❌ 手动 | P3 |
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 立即行动建议
|
||
|
|
|
||
|
|
### 短期 (本周)
|
||
|
|
|
||
|
|
1. **知识图谱设计**
|
||
|
|
```python
|
||
|
|
# 实体类型
|
||
|
|
entities = ["Gene", "GeneFamily", "Species", "PhylogeneticGroup",
|
||
|
|
"ExpressionPattern", "Domain", "Motif"]
|
||
|
|
|
||
|
|
# 关系类型
|
||
|
|
relations = ["belongs_to", "expressed_in", "contains_domain",
|
||
|
|
"interacts_with", "ortholog_to"]
|
||
|
|
```
|
||
|
|
|
||
|
|
2. **细粒度溯源**
|
||
|
|
- 添加section/paragraph/sentence级别溯源
|
||
|
|
- 置信度评分
|
||
|
|
|
||
|
|
### 中期 (本月)
|
||
|
|
|
||
|
|
3. **Neo4j集成**
|
||
|
|
- 安装Neo4j
|
||
|
|
- 实体关系导入
|
||
|
|
- Cypher查询接口
|
||
|
|
|
||
|
|
4. **增量处理**
|
||
|
|
- PDF变更检测
|
||
|
|
- 差异提取
|
||
|
|
- 自动更新
|
||
|
|
|
||
|
|
### 长期 (下月)
|
||
|
|
|
||
|
|
5. **Docker化**
|
||
|
|
- 完整docker-compose
|
||
|
|
- 一键部署
|
||
|
|
- 生产配置
|
||
|
|
|
||
|
|
6. **虚拟科学家**
|
||
|
|
- 整合所有技能
|
||
|
|
- 多轮对话
|
||
|
|
- 推理可视化
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🔗 参考架构
|
||
|
|
|
||
|
|
### autoSKG架构
|
||
|
|
```
|
||
|
|
input_pdfs/
|
||
|
|
└── PDF files
|
||
|
|
↓
|
||
|
|
Docker Compose Pipeline
|
||
|
|
├── Text Extraction
|
||
|
|
├── Entity Extraction (GPT)
|
||
|
|
├── Relation Extraction (GPT)
|
||
|
|
└── KG Construction
|
||
|
|
↓
|
||
|
|
kg_project/output/
|
||
|
|
└── Knowledge Graph
|
||
|
|
↓
|
||
|
|
PlantScience.ai (Virtual Scientist)
|
||
|
|
```
|
||
|
|
|
||
|
|
### 我们的目标架构
|
||
|
|
```
|
||
|
|
input_pdfs/ (gene family papers)
|
||
|
|
└── PDF files
|
||
|
|
↓
|
||
|
|
Gene Family RAG Pipeline
|
||
|
|
├── Text Extraction (PyMuPDF)
|
||
|
|
├── Phylogeny Extraction (v5) ✅
|
||
|
|
├── Expression Extraction (Phase 5)
|
||
|
|
├── Entity Extraction (Phase 4)
|
||
|
|
├── Relation Extraction (Phase 4)
|
||
|
|
├── Vector Index (Qdrant) ✅
|
||
|
|
└── KG Construction (Neo4j) ⏳
|
||
|
|
↓
|
||
|
|
Gene Family Virtual Scientist ⏳
|
||
|
|
├── RAG Search ✅
|
||
|
|
├── KG Query ⏳
|
||
|
|
├── Multi-hop Reasoning ⏳
|
||
|
|
└── Visualization ⏳
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 💡 核心借鉴点
|
||
|
|
|
||
|
|
### 1. 必须实现
|
||
|
|
- ✅ 知识图谱 (Phase 4)
|
||
|
|
- ✅ 细粒度溯源
|
||
|
|
- ✅ 虚拟科学家界面
|
||
|
|
|
||
|
|
### 2. 强烈建议
|
||
|
|
- 🔄 增量更新机制
|
||
|
|
- 🔄 Docker化部署
|
||
|
|
- 🔄 持续演化
|
||
|
|
|
||
|
|
### 3. 可选增强
|
||
|
|
- ⭐ 多模态 (图片/表格)
|
||
|
|
- ⭐ 协作功能
|
||
|
|
- ⭐ 版本控制
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 📚 相关文件
|
||
|
|
|
||
|
|
```
|
||
|
|
gene-family-mas-v2/
|
||
|
|
├── AUTOSKG_INSIGHTS.md # 本分析文档
|
||
|
|
├── RAG_MASTER_PLAN.md # 总计划
|
||
|
|
├── INTEGRATION_PLAN.md # v5集成
|
||
|
|
└── src/
|
||
|
|
└── rag/
|
||
|
|
└── knowledge_graph/ # 待创建 (Phase 4)
|
||
|
|
├── __init__.py
|
||
|
|
├── entity_extractor.py
|
||
|
|
├── relation_extractor.py
|
||
|
|
└── neo4j_store.py
|
||
|
|
```
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
## 🎯 结论
|
||
|
|
|
||
|
|
**autoSKG验证了我们的方向是正确的!**
|
||
|
|
|
||
|
|
1. **知识图谱是RAG的进化形态** - 从向量检索到图推理
|
||
|
|
2. **领域特定优化是关键** - 基因家族 vs 植物生物学
|
||
|
|
3. **可追溯性是科学严谨性的基础** - 每个结论有来源
|
||
|
|
4. **自动化是规模化的前提** - 增量更新、Docker化
|
||
|
|
|
||
|
|
**我们的优势**:
|
||
|
|
- 系统发育提取v5 (autoSKG没有)
|
||
|
|
- 基因家族专业领域
|
||
|
|
- 11个标准分析阶段
|
||
|
|
|
||
|
|
**需要追赶的**:
|
||
|
|
- 知识图谱构建
|
||
|
|
- 增量更新机制
|
||
|
|
- Docker化部署
|
||
|
|
|
||
|
|
---
|
||
|
|
|
||
|
|
*分析完成: 2026-03-31*
|
||
|
|
*参考: https://github.com/COLA-Laboratory/autoSKG*
|