基于 Maritime 180题 (90.8%) + Finance 95题 (55%) 实验结果 综合自身问题分析 + 业界最佳实践 (CRAG/RAGAS/GraphRAG/FAIR-RAG等) 2026-04-08
[graph] Error: 'keywords' 每次查询都报错keywords 字段search_unified.py 的 _rule_based_entities 确保返回 keywordssearch_unified.pysearch_unified.py intent_entity_extractfeedback/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 | ⬜ | |