513 lines
23 KiB
HTML
Executable File
513 lines
23 KiB
HTML
Executable File
<!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> |