5.3 KiB
Executable File
5.3 KiB
Executable File
Gene-Family-MAS-V2 项目分析报告
项目架构概览
RAG 阶段的两个子系统
| 系统 | 位置 | 类型 | 状态 |
|---|---|---|---|
| V13 提取器 | src/rag/extractors/v13/ |
纯Pipeline流程 | ✅ 生产使用 |
| Agentic 系统 | src/rag/agentic/ |
Agent编排框架 | ⚠️ 部分使用 |
一、V13 提取器(生产核心)
流程架构
Phase 1 → Phase 2 → Phase 2.5 → Phase 3 → Phase 4 → Phase 5 → Phase 5.5 → Phase 6
文档解析 附表处理 多组学提取 实体识别 关系抽取 后处理 审核 VLM图像
各模块功能
| Phase | 模块 | 功能 | 关键点 |
|---|---|---|---|
| 1 | phase1_document_parser_mineru.py |
MinerU PDF解析 + 章节识别 | 从 layout.json 解析章节标题 |
| 2 | phase2_supplementary.py |
附表下载 + Excel解析 | PMID→PMCID→Europe PMC |
| 2.5 | geo_extractor.py |
GEO/GSE数据提取 | RNA-seq、Microarray等 |
| 3 | phase3_entity_recognition.py |
8种实体识别 | 基因家族、基因名、物种名等 |
| 4 | phase4_relation_extraction.py |
74个PC模式关系抽取 | 最核心模块,45KB |
| 5 | phase5_post_processing.py |
去重、验证、chunks | |
| 5.5 | phase5_review.py |
规则审查 + 评估 | A/B/C/D等级 |
| 6 | phase6_vlm_image_extraction.py |
VLM图像关系提取 | 阿里云百炼 qwen3.6-plus |
入口点
v13_extractor.py- 主提取器类V13Extractortest_v13_1_simple.py- 快速测试入口
二、Agentic 系统(部分使用)
Agent 组件清单
| Agent | 文件 | 设计功能 | 实际状态 |
|---|---|---|---|
QueryAnalyzer |
query_analyzer.py |
意图识别 + 实体提取 | ✅ API使用 |
RetrievalStrategyAgent |
retrieval_strategy.py |
检索策略选择 | ✅ API使用 |
ResultEvaluator |
result_evaluator.py |
结果评估 | ⚠️ 只在Orchestrator内 |
IterativeRetriever |
iterative_retriever.py |
多跳迭代检索 | ❌ 仅测试脚本 |
RAGAgentOrchestrator |
orchestrator.py |
LangGraph编排 | ❌ fallback模式 |
实际调用链路
API (/api/v1/rag/chat)
├── mode="agentic" → _agentic_search()
│ ├── QueryAnalyzer.analyze() ✅ 被调用
│ ├── RetrievalStrategyAgent.determine_strategy() ✅ 被调用
│ └── 根据策略执行: exact/bm25/substring/hybrid
│
└── mode="hybrid/substring/bm25" → 直接调用对应搜索方法
关键发现:LangGraph 未启用
# orchestrator.py 第 14-18 行
try:
from langgraph.graph import StateGraph, END
LANGGRAPH_AVAILABLE = False # V2: 禁用 LangGraph,使用 Fallback
except ImportError:
LANGGRAPH_AVAILABLE = False
结论:Orchestrator 实际用的是 _run_fallback() 方法,而非真正的 LangGraph 状态机。
三、Agentic 系统使用情况分析
在生产中发挥作用的
| Agent | 使用位置 | 作用 |
|---|---|---|
QueryAnalyzer |
api/rag_routes.py:29,383 |
分析查询意图,提取实体 |
RetrievalStrategyAgent |
api/rag_routes.py:30,386 |
根据意图选择检索模式 |
未发挥作用的(死代码候选)
| Agent | 原因 |
|---|---|
IterativeRetriever |
只在 scripts/test_phase2_complete.py 测试脚本中引用 |
RAGAgentOrchestrator (LangGraph部分) |
LANGGRAPH_AVAILABLE = False 强制禁用 |
ResultEvaluator |
只在 Orchestrator 的 fallback 流程中调用,但 fallback 流程本身未被生产使用 |
实际效果
Agentic 系统当前只是两步规则映射:
- 查询分析 → 查询类型
- 查询类型 → 检索策略
没有真正的 Agent 自主决策、迭代优化、结果评估闭环。
四、历史遗留代码
extractors/archive/ 目录(18个废弃提取器)
extractor_pc_*.py- 各种 PC 模式实验版本extractor_complete_v1.py- 早期完整版extractor_production_v1.py- 早期生产版
extractors/ 目录(非v13)
extract_v12_*.py- v12 版本(已被 v13 替代)smart_gene_family_extractor*.py- 早期智能提取器expression_relation_extractor.py- 表达关系提取器(功能已整合到v13)
五、建议
Agentic 系统处理建议
| 选择 | 说明 |
|---|---|
| 保留 QueryAnalyzer + RetrievalStrategyAgent | API实际使用,保留 |
| 简化 Orchestrator | 删除 LangGraph 相关代码,只保留 fallback 逻辑 |
| 删除 IterativeRetriever | 死代码,仅测试脚本引用 |
| 评估 ResultEvaluator | 若无计划使用 LangGraph,可删除 |
或者完全重构
如果真想用 Agent 编排,应该:
- 安装 LangGraph 并启用
- 重新设计状态机流程
- 让 Orchestrator 成为真正的生产入口
当前状态是"有 Agent 架构但没用 Agent 能力"。
六、结论
| 项目 | 结论 |
|---|---|
| V13提取器 | 完整、稳定、生产使用 |
| Agentic系统 | 两成用到,八成死代码 |
| 整体架构 | 混合设计,有冗余 |
务实建议:保留真正使用的部分(QueryAnalyzer、StrategyAgent),清理未使用的(IterativeRetriever、LangGraph相关),让代码更清晰。
生成时间: 2026-04-15