# RAG数据入库流程分析 ## 理想流程(应该是什么样的) ``` ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ PDF文章 │ --> │ V14.2提取 │ --> │ 转换为Chunks │ --> │ RAG索引 │ │ (paper/v14) │ │ (提取器) │ │ (分块+向量化) │ │ (FAISS/Qdrant)│ └─────────────┘ └─────────────┘ └─────────────┘ └─────────────┘ │ v ┌─────────────┐ │ 查询使用 │ │ (API服务) │ └─────────────┘ ``` ## 当前实际流程(混乱) ``` ┌─────────────┐ │ PDF文章 │ │ (各种位置) │ └──────┬──────┘ │ ├─> MinerU解析 ──> 中间JSON ──> ? (没有后续) │ ├─> V14.2提取 ──> 提取结果 ──> ? (没有入库) │ └─> 直接查PC数据 ──> 绕过RAG索引 ┌─────────────────────────────────────────┐ │ RAG索引 (孤立) │ │ - 只加载固定文件: rag_index_final/ │ │ - 新文章不会自动加入 │ │ - 查询时有时用索引,有时绕过 │ └─────────────────────────────────────────┘ ``` ## 核心问题 ### 问题1: 提取和索引分离 - V14.2提取器输出JSON/CSV - 但没有自动转换为RAG chunks - 没有自动更新索引 ### 问题2: 索引固化 - RAG只加载 `data/rag_index_final/vector_index.pkl` - 新提取的文章不会自动加入 - 需要手动重建索引 ### 问题3: 查询路径不一致 - 有时查RAG索引(旧数据) - 有时直接查PC数据(绕过索引) - 用户无法确定数据来源 ## 正确的数据入库流程(建议) ### 方案A: 全自动流程(推荐) ```python # 1. PDF入库 pdf_path = "paper/v14/spl/xxx.pdf" # 2. 自动提取 extractor = V14Extractor() result = extractor.extract(pdf_path) # 3. 自动转换为chunks chunks = convert_to_chunks(result) # 4. 自动更新RAG索引 rag_system.add_document(chunks) # 5. 完成 print(f"文章已入库,索引包含 {rag_system.total_chunks} chunks") ``` ### 方案B: 手动流程(当前) ```bash # 步骤1: V14.2提取 python extract_v14.py --pdf paper/v14/spl/xxx.pdf --output xxx.json # 步骤2: 转换为chunks python convert_to_chunks.py --input xxx.json --output xxx_chunks.json # 步骤3: 更新RAG索引 python update_rag_index.py --add xxx_chunks.json # 步骤4: 重启服务 # (让新的索引生效) ``` ## 需要修复的问题 ### 1. 提取器输出格式不统一 | 提取器 | 输出格式 | 问题 | |:---|:---|:---| | V14.2 | JSON/CSV | 需要转换为chunks | | MinerU | JSON | 需要提取关系 | | PC | 直接查数据库 | 无法加入RAG索引 | ### 2. 缺少自动转换工具 - 没有 `convert_v14_to_chunks.py` - 没有 `update_rag_index.py` - 没有统一的数据格式 ### 3. RAG系统不支持增量更新 - 只能全量重建索引 - 不能单篇添加 - 需要重启服务 ## 建议的修复方案 ### 短期(今天完成) 1. 创建 `convert_v14_to_chunks.py` 2. 修改 `rebuild_rag_index.py` 支持V14.2输出 3. 提取SPL文章并入库 ### 中期(本周完成) 1. 修改V14.2提取器,直接输出chunks格式 2. 创建增量更新索引的工具 3. 统一数据格式 ### 长期(下周完成) 1. 全自动入库流程 2. 单篇PDF自动提取+索引 3. 无需手动干预 ## 现在该怎么办? **选项1: 快速修复(今天可用)** ```bash # 1. 提取SPL文章 python extract_spl_batch.py # 2. 转换为chunks python convert_v14_to_chunks.py --input-dir paper/v14/spl/v14_results/ # 3. 重建索引 python rebuild_rag_index.py ``` **选项2: 彻底修复(本周完成)** - 修改V14.2提取器 - 创建增量更新工具 - 自动化整个流程 **选项3: 临时方案(现在可用)** - 直接用PC数据层查询 - 绕过RAG索引 - 不依赖向量检索 **你选哪个?**