Files
2026-07-10 17:59:59 +08:00

513 lines
23 KiB
HTML
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gene Family MAS V14 - 完整RAG工作流</title>
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body {
font-family: 'Segoe UI', sans-serif;
background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
min-height: 100vh;
padding: 20px;
color: #fff;
}
.container { max-width: 1600px; margin: 0 auto; }
h1 {
text-align: center;
margin-bottom: 30px;
font-size: 2em;
background: linear-gradient(90deg, #00d4ff, #7b2cbf);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
/* 阶段样式 */
.phase {
background: rgba(255,255,255,0.05);
border-radius: 15px;
padding: 20px;
margin-bottom: 20px;
border-left: 5px solid;
}
.phase-1 { border-color: #ff6b6b; }
.phase-2 { border-color: #4ecdc4; }
.phase-3 { border-color: #ffe66d; }
.phase-4 { border-color: #a8e6cf; }
.phase-5 { border-color: #c7ceea; }
.phase-6 { border-color: #ffd3b6; }
.phase-7 { border-color: #dcedc1; }
.phase-8 { border-color: #ff8b94; }
.phase-header {
display: flex;
align-items: center;
gap: 15px;
margin-bottom: 15px;
}
.phase-num {
width: 40px; height: 40px;
border-radius: 50%;
display: flex; align-items: center; justify-content: center;
font-size: 1.2em; font-weight: bold;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
}
.phase-title { font-size: 1.3em; font-weight: 600; }
.phase-desc { font-size: 0.85em; color: #a0a0a0; margin-left: auto; }
/* 模块网格 */
.modules {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 15px;
}
.module {
background: rgba(255,255,255,0.08);
border-radius: 10px;
padding: 15px;
border: 1px solid rgba(255,255,255,0.15);
}
.module-title {
font-size: 1em; font-weight: 600;
margin-bottom: 8px;
color: #fff;
}
.module-content {
font-size: 0.85em; color: #b0b0b0;
line-height: 1.5;
}
.module-path {
margin-top: 10px;
padding-top: 10px;
border-top: 1px solid rgba(255,255,255,0.1);
font-size: 0.8em;
font-family: monospace;
color: #4ecdc4;
}
/* 数据流 */
.data-flow {
display: flex;
align-items: center;
justify-content: center;
gap: 15px;
padding: 15px;
background: rgba(0,0,0,0.2);
border-radius: 10px;
margin: 15px 0;
}
.data-box {
background: rgba(255,255,255,0.1);
padding: 10px 20px;
border-radius: 8px;
font-size: 0.9em;
}
.arrow { font-size: 1.5em; color: rgba(255,255,255,0.4); }
/* Agentic RAG */
.agentic-box {
background: linear-gradient(135deg, rgba(102,126,234,0.15) 0%, rgba(118,75,162,0.15) 100%);
border: 2px solid rgba(102,126,234,0.4);
border-radius: 15px;
padding: 20px;
margin-top: 15px;
}
.agentic-title {
text-align: center;
font-size: 1.2em;
font-weight: 600;
margin-bottom: 15px;
color: #c7ceea;
}
.agentic-flow {
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
}
.agentic-node {
background: rgba(102,126,234,0.2);
border: 2px solid rgba(102,126,234,0.5);
border-radius: 10px;
padding: 12px 25px;
min-width: 250px;
text-align: center;
}
/* 特殊区域 */
.special-box {
border-radius: 15px;
padding: 20px;
margin-top: 15px;
}
.rerank-box {
background: linear-gradient(135deg, rgba(255,107,107,0.1) 0%, rgba(238,90,90,0.1) 100%);
border: 2px solid rgba(255,107,107,0.3);
}
.hybrid-box {
background: linear-gradient(135deg, rgba(78,205,196,0.1) 0%, rgba(68,160,141,0.1) 100%);
border: 2px solid rgba(78,205,196,0.3);
}
.section-title {
font-size: 1.1em;
font-weight: 600;
margin-bottom: 15px;
text-align: center;
}
/* 工具列表 */
.tools-list {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 10px;
margin-top: 10px;
}
.tool-item {
background: rgba(255,255,255,0.05);
padding: 10px;
border-radius: 8px;
font-size: 0.85em;
}
.tool-name {
font-weight: 600;
color: #4ecdc4;
}
.tool-status {
font-size: 0.8em;
color: #888;
margin-top: 5px;
}
.status-ok { color: #4ecdc4; }
.status-missing { color: #ff6b6b; }
.status-partial { color: #ffe66d; }
</style>
</head>
<body>
<div class="container">
<h1>🧬 Gene Family MAS V14 - 完整RAG工作流架构</h1>
<!-- PHASE 1: 文档解析 -->
<div class="phase phase-1">
<div class="phase-header">
<div class="phase-num">1</div>
<div class="phase-title">文档解析 (MinerU)</div>
<div class="phase-desc">PDF → 结构化JSON</div>
</div>
<div class="data-flow">
<div class="data-box">PDF文件</div>
<span class="arrow">→</span>
<div class="data-box">MinerU解析</div>
<span class="arrow">→</span>
<div class="data-box">结构化JSON</div>
</div>
<div class="modules">
<div class="module">
<div class="module-title">📄 输入目录</div>
<div class="module-content">原始PDF文件存放位置</div>
<div class="module-path">paper/v14/{family}/raw/*.pdf</div>
</div>
<div class="module">
<div class="module-title">🔧 MinerU解析</div>
<div class="module-content">布局分析、OCR、公式识别、表格识别</div>
<div class="module-path">magic-pdf CLI / Python API</div>
</div>
<div class="module">
<div class="module-title">📤 输出格式</div>
<div class="module-content">content_list.json, middle.json, model.json, .md</div>
<div class="module-path">paper/v14/{family}/mineru/{article}/</div>
</div>
</div>
</div>
<!-- PHASE 2: 信息提取 -->
<div class="phase phase-2">
<div class="phase-header">
<div class="phase-num">2</div>
<div class="phase-title">信息提取 (V14.2)</div>
<div class="phase-desc">JSON → 实体+关系</div>
</div>
<div class="data-flow">
<div class="data-box">MinerU输出</div>
<span class="arrow">→</span>
<div class="data-box">V14Extractor</div>
<span class="arrow">→</span>
<div class="data-box">实体+关系</div>
</div>
<div class="modules">
<div class="module">
<div class="module-title">🎯 Phase 1: 文档解析</div>
<div class="module-content">MinerUDocumentParser - 提取章节和全文</div>
<div class="module-path">src/rag/extractors/v14/phase1_document_parser_mineru.py</div>
</div>
<div class="module">
<div class="module-title">🎯 Phase 2: 附表处理</div>
<div class="module-content">SupplementaryProcessor - 下载和解析附表</div>
<div class="module-path">src/rag/extractors/v14/phase2_supplementary_processor.py</div>
</div>
<div class="module">
<div class="module-title">🎯 Phase 3: 实体识别</div>
<div class="module-content">EntityRecognizer + EntityLinker - 7类实体识别和链接</div>
<div class="module-path">src/rag/extractors/v14/phase3_entity_recognition.py</div>
</div>
<div class="module">
<div class="module-title">🎯 Phase 4: 关系抽取</div>
<div class="module-content">RelationExtractor - 841种模式 + 14被动转主动规则</div>
<div class="module-path">src/rag/extractors/v14/phase4_relation_extraction.py</div>
</div>
<div class="module">
<div class="module-title">🎯 Phase 5: 后处理</div>
<div class="module-content">PostProcessor - 验证证据、去重、生成gene-centric chunks</div>
<div class="module-path">src/rag/extractors/v14/phase5_post_processing.py</div>
</div>
<div class="module">
<div class="module-title">🎯 Phase 6: VLM图像提取</div>
<div class="module-content">VLMImageExtractor - 从图像中提取关系(可选)</div>
<div class="module-path">src/rag/extractors/v14/phase6_vlm_image_extraction.py</div>
</div>
</div>
<div class="module" style="margin-top: 15px;">
<div class="module-title">📤 提取输出</div>
<div class="module-content">JSON格式:entities, relations, metadata, sections</div>
<div class="module-path">paper/v14/{family}/extracted/{article}.json</div>
</div>
</div>
<!-- PHASE 3: 数据转换 -->
<div class="phase phase-3">
<div class="phase-header">
<div class="phase-num">3</div>
<div class="phase-title">数据转换</div>
<div class="phase-desc">提取结果 → 标准化格式</div>
</div>
<div class="modules">
<div class="module">
<div class="module-title">🔄 convert_to_kg.py</div>
<div class="module-content">V14.2提取结果 → 知识图谱格式(实体+关系)</div>
<div class="module-path">待创建</div>
</div>
<div class="module">
<div class="module-title">🔄 convert_to_chunks.py</div>
<div class="module-content">V14.2提取结果 → 文本块(含embedding)</div>
<div class="module-path">待创建</div>
</div>
</div>
<div class="data-flow" style="margin-top: 15px;">
<div class="data-box">extracted/*.json</div>
<span class="arrow">→</span>
<div class="data-box">转换工具</div>
<span class="arrow">→</span>
<div class="data-box">kg/*.json + chunks/*.json</div>
</div>
</div>
<!-- PHASE 4: 知识图谱入库 -->
<div class="phase phase-4">
<div class="phase-header">
<div class="phase-num">4</div>
<div class="phase-title">知识图谱入库 (Neo4j)</div>
<div class="phase-desc">实体+关系 → 图数据库</div>
</div>
<div class="modules">
<div class="module">
<div class="module-title">🔧 import_kg_to_neo4j.py</div>
<div class="module-content">导入知识图谱到Neo4j(已存在)</div>
<div class="module-path">scripts/import_kg_to_neo4j.py ✅</div>
</div>
<div class="module">
<div class="module-title">🏗️ KG Builder</div>
<div class="module-content">构建知识图谱(已存在)</div>
<div class="module-path">src/rag/kg_builder.py ✅</div>
</div>
<div class="module">
<div class="module-title">💾 Neo4j数据库</div>
<div class="module-content">实体节点、关系边、文档节点</div>
<div class="module-path">data/neo4j/ ✅</div>
</div>
</div>
</div>
<!-- PHASE 5: 向量索引构建 -->
<div class="phase phase-5">
<div class="phase-header">
<div class="phase-num">5</div>
<div class="phase-title">向量索引构建</div>
<div class="phase-desc">文本块 → 向量索引</div>
</div>
<div class="modules">
<div class="module">
<div class="module-title">🔧 build_vector_index.py</div>
<div class="module-content">增量构建向量索引(待创建)</div>
<div class="module-path">待创建</div>
</div>
<div class="module">
<div class="module-title">📊 Qdrant向量库</div>
<div class="module-content">生产向量存储(已存在)</div>
<div class="module-path">data/qdrant_storage/ ✅</div>
</div>
<div class="module">
<div class="module-title">📊 FAISS索引</div>
<div class="module-content">内存向量索引(可选)</div>
<div class="module-path">data/rag_index_final/ (当前为空)</div>
</div>
</div>
</div>
<!-- PHASE 6: 混合检索 -->
<div class="phase phase-6">
<div class="phase-header">
<div class="phase-num">6</div>
<div class="phase-title">混合检索 (Hybrid Retrieval)</div>
<div class="phase-desc">多路召回 + 融合</div>
</div>
<div class="hybrid-box special-box">
<div class="section-title">🔍 混合检索策略</div>
<div class="modules">
<div class="module">
<div class="module-title">1️⃣ 向量检索</div>
<div class="module-content">语义相似度搜索(FAISS/Qdrant)</div>
<div class="module-path">src/rag/hybrid_retriever.py ✅</div>
</div>
<div class="module">
<div class="module-title">2️⃣ 图检索</div>
<div class="module-content">知识图谱查询(Neo4j Cypher)</div>
<div class="module-path">src/rag/kg_builder.py ✅</div>
</div>
<div class="module">
<div class="module-title">3️⃣ BM25检索</div>
<div class="module-content">关键词匹配</div>
<div class="module-path">src/rag/hybrid_retriever.py ✅</div>
</div>
<div class="module">
<div class="module-title">4️⃣ 融合排序</div>
<div class="module-content">RRF融合 + 加权排序</div>
<div class="module-path">src/rag/hybrid_retriever.py: merge_results() ✅</div>
</div>
</div>
</div>
</div>
<!-- PHASE 7: 重排 -->
<div class="phase phase-7">
<div class="phase-header">
<div class="phase-num">7</div>
<div class="phase-title">重排 (Reranking)</div>
<div class="phase-desc">精排优化</div>
</div>
<div class="rerank-box special-box">
<div class="section-title">🎯 重排策略</div>
<div class="modules">
<div class="module">
<div class="module-title">BGE重排序</div>
<div class="module-content">交叉编码器精排</div>
<div class="module-path">src/rag/citation_ranker.py: rerank_with_bge() ✅</div>
</div>
<div class="module">
<div class="module-title">引用数加权</div>
<div class="module-content">高引用论文加权</div>
<div class="module-path">src/rag/citation_ranker.py: rerank() ✅</div>
</div>
</div>
</div>
</div>
<!-- PHASE 8: Agentic RAG查询 -->
<div class="phase phase-8">
<div class="phase-header">
<div class="phase-num">8</div>
<div class="phase-title">Agentic RAG查询 (LangGraph)</div>
<div class="phase-desc">自主决策 + 多轮迭代</div>
</div>
<div class="agentic-box">
<div class="agentic-title">🤖 LangGraph Agent工作流</div>
<div class="agentic-flow">
<div class="agentic-node">用户查询输入</div>
<div class="agentic-node">QueryAnalyzer<br/><small>分析意图、提取实体</small></div>
<div class="agentic-node">RetrievalStrategy<br/><small>选择检索策略</small></div>
<div class="agentic-node">IterativeRetriever<br/><small>多轮迭代检索</small></div>
<div class="agentic-node">ResultEvaluator<br/><small>评估结果质量</small></div>
<div style="text-align: center; padding: 10px; color: #888;">
↓ 不满意?返回重新检索 ↓
</div>
<div class="agentic-node">生成答案 + 添加引用</div>
</div>
</div>
<div class="modules" style="margin-top: 15px;">
<div class="module">
<div class="module-title">🎛️ Orchestrator</div>
<div class="module-content">LangGraph编排器,管理状态流转</div>
<div class="module-path">src/rag/agentic/orchestrator.py ✅</div>
</div>
<div class="module">
<div class="module-title">🧠 QueryAnalyzer</div>
<div class="module-content">查询意图分析</div>
<div class="module-path">src/rag/agentic/query_analyzer.py ✅</div>
</div>
<div class="module">
<div class="module-title">🎯 RetrievalStrategy</div>
<div class="module-content">动态选择检索策略</div>
<div class="module-path">src/rag/agentic/retrieval_strategy.py ✅</div>
</div>
<div class="module">
<div class="module-title">🔁 IterativeRetriever</div>
<div class="module-content">多轮迭代检索</div>
<div class="module-path">src/rag/agentic/iterative_retriever.py ✅</div>
</div>
<div class="module">
<div class="module-title">✅ ResultEvaluator</div>
<div class="module-content">结果质量评估</div>
<div class="module-path">src/rag/agentic/result_evaluator.py ✅</div>
</div>
</div>
</div>
<!-- 工具状态汇总 -->
<div style="background: rgba(255,255,255,0.05); border-radius: 15px; padding: 20px; margin-top: 30px;">
<h2 style="text-align: center; margin-bottom: 20px;">🔧 工具状态汇总</h2>
<div class="tools-list">
<div class="tool-item">
<div class="tool-name">extract_spl_batch.py</div>
<div class="tool-status status-missing">❌ 待创建 - 批量提取SPL文章</div>
</div>
<div class="tool-item">
<div class="tool-name">convert_to_kg.py</div>
<div class="tool-status status-missing">❌ 待创建 - 转换为知识图谱格式</div>
</div>
<div class="tool-item">
<div class="tool-name">convert_to_chunks.py</div>
<div class="tool-status status-missing">❌ 待创建 - 转换为文本块</div>
</div>
<div class="tool-item">
<div class="tool-name">build_vector_index.py</div>
<div class="tool-status status-missing">❌ 待创建 - 增量构建向量索引</div>
</div>
<div class="tool-item">
<div class="tool-name">import_kg_to_neo4j.py</div>
<div class="tool-status status-ok">✅ 已存在 - 导入知识图谱</div>
</div>
<div class="tool-item">
<div class="tool-name">kg_builder.py</div>
<div class="tool-status status-ok">✅ 已存在 - 知识图谱构建</div>
</div>
<div class="tool-item">
<div class="tool-name">hybrid_retriever.py</div>
<div class="tool-status status-ok">✅ 已存在 - 混合检索</div>
</div>
<div class="tool-item">
<div class="tool-name">citation_ranker.py</div>
<div class="tool-status status-ok">✅ 已存在 - 重排序</div>
</div>
<div class="tool-item">
<div class="tool-name">orchestrator.py</div>
<div class="tool-status status-ok">✅ 已存在 - LangGraph编排</div>
</div>
<div class="tool-item">
<div class="tool-name">V14Extractor</div>
<div class="tool-status status-ok">✅ 已存在 - V14.2提取器</div>
</div>
</div>
</div>
</div>
</body>
</html>