Files
PlantAI-rag/docs/data_flow_analysis.md
T
2026-07-10 17:59:59 +08:00

4.7 KiB
Executable File

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: 全自动流程(推荐)

# 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: 手动流程(当前)

# 步骤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: 快速修复(今天可用)

# 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索引
  • 不依赖向量检索

你选哪个?