# LambdaRAG TODO List

> 基于 Maritime 180题 (90.8%) + Finance 95题 (55%) 实验结果
> 综合自身问题分析 + 业界最佳实践 (CRAG/RAGAS/GraphRAG/FAIR-RAG等)
> 2026-04-08

---

## P0 — 立即可做 (< 30 min each, 高回报)

### P0-1: 修复 graph keywords 错误
- **问题**: `[graph] Error: 'keywords'` 每次查询都报错
- **原因**: 规则分类路径返回的 dict 没有 `keywords` 字段
- **改动**: `search_unified.py` 的 `_rule_based_entities` 确保返回 keywords
- **文件**: `search_unified.py`
- **预期**: 消除报错，graph 路径正常工作

### P0-2: 分类规则增加领域词 + 优先级排序
- **问题**: Finance 意图准确率 46%, Maritime 60%
- **原因**: process/compare 边界模糊，"能不能报销"同时命中两个
- **改动**: 
  - process 关键词优先于 compare（先匹配 process）
  - Finance 增加: 报销/预约/退回/建账/扣税/签字/审批/发放
  - Maritime 增加: 检验/登记/适任/发证/申请/备案
  - 改为评分制而非先命中返回
- **文件**: `search_unified.py` intent_entity_extract
- **预期**: 意图准确率 +15-20%

### P0-3: 查询日志 (JSONL)
- **问题**: 无法追踪哪些问题失败、哪些策略有效
- **改动**: 每次查询后 append 到 `feedback/query_log.jsonl`
  ```json
  {"ts":"2026-04-08T12:00:00", "query":"...", "intent":"fact", 
   "strategy":"v3(fact|...)", "has_result":true, "elapsed":3.2,
   "path_counts":{"bm25":10,"vector":8,"graph":3,"wiki":2}}
  ```
- **文件**: `search_unified.py` search() 末尾
- **预期**: 数据基础，后续所有优化的度量依据

### P0-4: "未找到"记录到 feedback
- **问题**: Finance 45题未找到，不知道缺什么文档
- **改动**: 当回答含"未找到"时，记录到 `feedback/missing_queries.jsonl`
- **文件**: `app.py` rag_answer() + `search_unified.py`
- **预期**: 指导知识库补充，定期分析哪些问题需要新文档

---

## P1 — 本周内 (< 2hr each, 显著提升)

### P1-1: Corrective RAG — 检索质量门控
- **问题**: 检索到不相关文档但仍生成回答（如行政清单 vs 法律原文）
- **改动**: RRF 融合后、生成前，用 LLM 快速评估 top-3 文档相关性
  - 相关性 < 0.4 → 自动改写 query 重新检索（retry 1次）
  - Lambda: `Guard(fusion_search, quality_check, retry=1, on_fail=reformulate)`
- **文件**: `search_unified.py` 新增 `_check_retrieval_quality`
- **预期**: 减少"未找到"5-10题，减少错误回答

### P1-2: compare 类跳过实体增强
- **问题**: compare 类 v3 比 v2 下降 4%（93→89%）
- **原因**: 实体增强把两个法律名扩展为更多词，反而稀释了精确匹配
- **改动**: `entity_enhanced_search` 中 compare 类用原始 query 不做增强
- **文件**: `search_unified.py`
- **预期**: compare +4% 回到 93%

### P1-3: FAIR-RAG 内联证据评估（改 prompt）
- **问题**: LLM 有时生成无依据的内容
- **改动**: answer prompt 增加要求：每个论点标注 `[证据:doc_id, 置信度:0-1]`
  - 置信度 < 0.7 的论点不输出
- **文件**: `instance.yml` 的 prompts.fact_answer / process_answer
- **预期**: 减少编造，提高引用准确性

### P1-4: 语义查询缓存
- **问题**: 重复问题每次都要全量检索 + LLM
- **改动**: 
  - 查询前 embed query → 对比缓存 → 相似度 > 0.92 返回缓存
  - 缓存存: `feedback/query_cache.json` (LRU 1000条, TTL 4hr)
- **文件**: `search_unified.py` search() 开头加缓存检查
- **预期**: 30-50% 缓存命中，延迟 12.5s → 0.5s

### P1-5: temporal 时间展开
- **问题**: temporal 类 82%，"近五年"等模糊时间无法匹配
- **改动**: 检测到时间模糊词时，自动展开为绝对年份
  - "近五年" → "2021年 2022年 2023年 2024年 2025年"
  - "最新" → 当前年份
- **文件**: `search_unified.py` 或 `_path_bm25` 中增加时间展开
- **预期**: temporal +5-10%

---

## P2 — 下周 (< 1天 each, 架构提升)

### P2-1: RAGAS 自动评估框架
- **问题**: 只有关键词命中率，无法评估回答质量
- **改动**: 新增 `eval_ragas.py`
  - 3 个指标: faithfulness, relevancy, context_precision
  - 用本地 vLLM 做 LLM-as-judge
  - 批量评估 + 结果存 `feedback/eval_results.jsonl`
- **文件**: 新文件 `scripts/eval_ragas.py`
- **预期**: 每次改动有量化评估，回归测试

### P2-2: 上下文分块 (Contextual Chunking)
- **问题**: "本条例"、"上述规定"等指代不明
- **改动**: build_vector_index.py 中，每个 chunk 前加 LLM 生成的上下文
  - `"[文件:《海上交通安全法》第三章 船舶检验] 原文内容..."`
- **文件**: `build_vector_index.py`
- **预期**: 向量检索准确率 +10%，一次性重建索引

### P2-3: 领域同义词表
- **问题**: "适任证书"vs"资格证书"，"报销"vs"列支"，检索不互通
- **改动**: 
  - 新增 `feedback/synonym_map.json`
  - BM25 tokenize 时自动展开同义词
  - 从 query_expand 历史中积累
- **文件**: `search_engine.py` tokenize + `feedback/synonym_map.json`
- **预期**: 检索召回 +5%

### P2-4: MinerU 深度文档解析
- **问题**: 84个扫描版 PDF 无法提取，表格结构丢失
- **改动**: 用服务器已有的 MinerU Docker 镜像替代 PyMuPDF
- **文件**: 新文件 `scripts/extract_mineru.py`
- **预期**: +84 个文件可检索，表格质量提升

### P2-5: 路由成功率统计 + 自适应权重
- **问题**: 权重是手动调的，不同领域需要不同权重
- **改动**:
  - 从 query_log.jsonl 统计各 (intent, strategy) 的成功率
  - 每 100 次查询自动更新 `feedback/routing_stats.json`
  - 用成功率加权替代固定权重
- **文件**: `search_unified.py` + 新文件 `scripts/update_routing.py`
- **预期**: 自动调优，适配不同领域

---

## P3 — 长期 (架构演进)

### P3-1: MA-RAG 多智能体分解
- 复杂问题先分解为子问题，各自检索后合并
- 对应现有的 `map_reduce` pattern + `DeepAnalysis` tool

### P3-2: LazyGraphRAG 增量图谱
- 每次查询结果中提取新关系，增量更新图谱
- 对应现有 knowledge_feedback 设计

### P3-3: 更强模型重编译 Wiki
- 用 72B+ 模型重新编译 Wiki，提升摘要和关系质量

### P3-4: 用户反馈收集
- Web Demo 加 👍/👎 按钮，收集用户反馈
- 用反馈训练分类器和调整权重

---

## 完成进度追踪

| ID | 状态 | 完成日期 |
|----|------|---------|
| P0-1 | ✅ | 2026-04-08 |
| P0-2 | ✅ | 2026-04-08 |
| P0-3 | ✅ | 2026-04-08 |
| P0-4 | ✅ | 2026-04-08 |
| P1-1 | ✅ | 2026-04-08 |
| P1-2 | ✅ | 2026-04-08 |
| P1-3 | ⬜ | |
| P1-4 | ⬜ | |
| P1-5 | ✅ | 2026-04-08 |
| P2-1 | ⬜ | |
| P2-2 | ⬜ | |
| P2-3 | ⬜ | |
| P2-4 | ⬜ | |
| P2-5 | ⬜ | |
