Files
JARVIS/development-doc/plan/rag-update/checklist.md

328 lines
7.2 KiB
Markdown
Raw 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.
# Jarvis RAG 升级执行清单
日期2026-04-03
状态:执行清单
借鉴来源VCPToolBox TagMemo V6 架构
---
## 使用说明
- 完成前使用 `- [ ]`
- 完成后改成 `- [x]`
- Day R.2 默认依赖 Day R.1 的分块优化完成后再推进
- Day R.3 默认依赖 Day R.1 的分块优化完成后再推进
- Day R.4 为可选特性
---
## Day R.1Token 感知分块优化3天
Day R.1 目标:解决跨块边界信息丢失问题,实现精确的 token 计数和重叠分块。
### Task R.1.1:集成 tiktoken
- [ ] 安装 tiktoken 依赖
```bash
uv add tiktoken
```
- [ ] 新增 `backend/app/services/chunker.py`
实现 `TokenAwareChunker` 类,支持 85% 安全边界
- [ ] 实现 `count_tokens()` 方法
### Task R.1.2:实现智能断句
- [ ] 实现 `find_best_breakpoint()` 函数
在断点处(标点/空白)智能断开
- [ ] 实现 `_force_split_long_text()` 方法
处理超长句子强制分割
### Task R.1.3:实现重叠分块
- [ ] 实现 `chunk_with_overlap()` 方法
10% token 重叠,保证上下文连续性
- [ ] 实现 `_create_overlap()` 方法
创建重叠部分
### Task R.1.4:集成到 DocumentService
- [ ] 修改 `backend/app/services/document_service.py`
集成新的 TokenAwareChunker
- [ ] 替换原有的 `_build_chunks()` 方法
### Task R.1.5:补测试
- [ ] 新增 `backend/tests/services/test_chunker.py`
- [ ] 测试 Token 计数准确性
- [ ] 测试智能断句
- [ ] 测试重叠分块
### Day R.1 验收
- [ ] tiktoken 正确集成token 计数误差 < 1%
- [ ] 超长句子不在词汇中间断开
- [ ] 重叠分块保证上下文连续性
- [ ] 单元测试覆盖率 > 80%
- [ ] 文档上传→分块→检索 集成测试通过
---
## Day R.2多索引架构4天
Day R.2 目标:按知识类型/重要性分层,支持懒加载和 LRU 淘汰。
### Task R.2.1:设计 Collection 分离策略
- [ ] 新增 `backend/app/services/multi_index.py`
- [ ] 定义 `MultiIndexManager` 类
- [ ] 实现 `INDEX_STRATEGIES` 配置
- default: 通用文档
- important: 重要文档
- code: 代码片段
- meeting: 会议记录
- [ ] 实现 `get_collection()` 方法
### Task R.2.2:实现懒加载 + LRU TTL
- [ ] 实现 `LazyIndexLoader` 类
- [ ] 实现 `get_or_load()` 方法
- [ ] 实现 `sweep()` 方法
2小时 TTL 淘汰机制
### Task R.2.3:实现重要性感知检索
- [ ] 实现 `retrieve_with_importance()` 方法
- [ ] important 索引加权 1.2x
### Task R.2.4:修改 Document 模型
- [ ] 修改 `backend/app/models/document.py`
- [ ] 增加 `importance` 字段Float, default=0.5
### Task R.2.5:集成到 KnowledgeService
- [ ] 修改 `backend/app/services/knowledge_service.py`
- [ ] 集成 MultiIndexManager
- [ ] 集成 LazyIndexLoader
- [ ] 根据 importance 选择索引
### Task R.2.6:补测试
- [ ] 新增 `backend/tests/services/test_multi_index.py`
- [ ] 测试多 Collection 创建
- [ ] 测试懒加载
- [ ] 测试 TTL 淘汰
### Day R.2 验收
- [ ] 多 Collection 创建成功
- [ ] 懒加载索引生效
- [ ] TTL 淘汰机制工作
- [ ] 重要性感知检索加权生效
- [ ] 单元测试覆盖率 > 80%
---
## Day R.3动态权重增强4.5天)
Day R.3 目标:根据查询特性动态调整检索策略,支持核心标签加权。
### Task R.3.1:实现查询特性分析
- [ ] 新增 `backend/app/services/query_analyzer.py`
- [ ] 定义 `QueryProfile` 数据类
- [ ] 实现 `QueryAnalyzer` 类
- [ ] 实现查询类型检测
- 代码相关
- 表格相关
- 对话式
- [ ] 实现 `_calc_logic_depth()` 方法
### Task R.3.2:实现动态 Reranker
- [ ] 新增 `backend/app/services/dynamic_reranker.py`
- [ ] 实现 `DynamicReranker` 类
- [ ] 实现 `_get_weights()` 方法
- 代码查询:关键词权重高
- 表格查询:标题权重高
- 对话式:语义权重高
- [ ] 实现 `_calc_beta()` 方法
- [ ] 实现 `rerank()` 方法
### Task R.3.3:实现核心标签系统
- [ ] 新增 `backend/app/services/core_tag_search.py`
- [ ] 实现 `CoreTagAwareSearch` 类
- [ ] 实现 `CORE_BOOST_FACTOR = 1.33`
- [ ] 实现 `search()` 方法
### Task R.3.4:修改 DocumentChunk 模型
- [ ] 修改 `backend/app/models/document.py`
- [ ] 增加 `tags` 字段JSON, default=list
- [ ] 增加 `is_core` 字段Boolean, default=False
### Task R.3.5:集成到 KnowledgeService
- [ ] 修改 `backend/app/services/knowledge_service.py`
- [ ] 集成 QueryAnalyzer
- [ ] 集成 DynamicReranker
- [ ] 集成 CoreTagAwareSearch
- [ ] 修改 `retrieve()` 方法支持动态权重
### Task R.3.6:补测试
- [ ] 新增 `backend/tests/services/test_dynamic_reranker.py`
- [ ] 测试查询特性分析
- [ ] 测试动态权重调整
- [ ] 测试核心标签加权
### Day R.3 验收
- [ ] 查询特性分析准确(代码/表格/对话式识别)
- [ ] 动态权重根据查询类型调整
- [ ] 核心标签检索加权 1.33x
- [ ] Rerank 集成测试通过
---
## Day R.4高级特性可选4.5天)
Day R.4 目标:探索更高级的 RAG 增强技术。
### Task R.4.1:语义去重
- [ ] 新增 `backend/app/services/deduplicator.py`
- [ ] 实现 `SemanticDeduplicator` 类
- [ ] 实现 `_cosine_similarity()` 方法
- [ ] 实现 `deduplicate()` 方法
### Task R.4.2:语义分桶(可选)
- [ ] 新增 `backend/app/services/semantic_bucket.py`
- [ ] 实现 `SemanticBucketing` 类
- [ ] 实现 `bucket_by_topic()` 方法
### Task R.4.3EPA 分析设计(可选探索)
- [ ] 设计 EPA 模块架构
- [ ] 定义 EPA 接口
- [ ] 实现残差金字塔算法(伪代码)
### Day R.4 验收(可选)
- [ ] 语义去重测试通过
- [ ] 语义分桶原型完成(可选)
- [ ] EPA 分析方案设计完成(可选实现)
---
## 总验收清单
### Phase R.1-R.3 必须完成
- [ ] Token 感知分块正常工作
- [ ] 多索引架构正常工作
- [ ] 动态权重增强正常工作
- [ ] 单元测试覆盖率 > 80%
- [ ] 集成测试通过
- [ ] 原有检索功能无回退
### Phase R.4 可选完成
- [ ] 语义去重正常工作
- [ ] 语义分桶正常工作(可选)
- [ ] EPA 设计文档完成(可选)
---
## 总工作量估算
| Phase | 工作量 |
|-------|--------|
| R.1 Token 感知分块 | 3 天 |
| R.2 多索引架构 | 4 天 |
| R.3 动态权重增强 | 4.5 天 |
| R.4 高级特性(可选) | 4.5 天 |
| **R.1-R.3 必须** | **11.5 天** |
| **R.1-R.4 含可选** | **16 天** |
---
## 产出清单
| 产出 | 对应 Phase |
|------|-----------|
| `services/chunker.py` | R.1 |
| `services/multi_index.py` | R.2 |
| `services/query_analyzer.py` | R.3 |
| `services/dynamic_reranker.py` | R.3 |
| `services/core_tag_search.py` | R.3 |
| `services/deduplicator.py` | R.4 |
| `services/semantic_bucket.py` | R.4(可选) |
| `models/document.py` 更新 | R.2, R.3 |
| 单元测试 > 80% | R.1, R.2, R.3 |
| 集成测试通过 | R.1, R.2, R.3 |
---
## 与 Agent Phase 关系
| Agent Phase | RAG 协作内容 |
|-------------|-------------|
| Phase 1 | Task Schema 追踪 RAG 任务 |
| Phase 2 | RAG 任务可分解给 Librarian Agent |
| Phase 3 | 支持多索引动态选择 |
| Phase 4 | RAG 检索过程可视化 |
| Phase 5 | EPA 分析、语义分桶 |
**Phase R 可与 Agent Phase 1-5 并行推进。**