Files
PlantAI-rag/docs/data_flow_analysis.md
T

154 lines
4.7 KiB
Markdown
Raw Normal View History

2026-07-10 17:59:59 +08:00
# 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索引
- 不依赖向量检索
**你选哪个?**