7.2 KiB
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.1:Token 感知分块优化(3天)
Day R.1 目标:解决跨块边界信息丢失问题,实现精确的 token 计数和重叠分块。
Task R.1.1:集成 tiktoken
-
安装 tiktoken 依赖
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.3:EPA 分析设计(可选探索)
-
设计 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 并行推进。