diff options
| author | YurenHao0426 <blackhao0426@gmail.com> | 2026-02-10 20:16:36 +0000 |
|---|---|---|
| committer | YurenHao0426 <blackhao0426@gmail.com> | 2026-02-10 20:16:36 +0000 |
| commit | 5626080ca4c4219aec4888d6b9406d0d3349fb55 (patch) | |
| tree | 86287d9fd5833e11ccd78566992540f2664fd195 /docs/rag_improvement_ideas.md | |
| parent | a2036838807428424bbbaff507a6563749a83145 (diff) | |
Add RAG rewrite, 60-session experiment scripts, and analysis tools
- RAG rewrite adapter and vector preference pipeline in personalized_llm
- 60-session experiment queue scripts (reflection, rag, rag_vector, rag_rewrite)
- Vector-preference correlation analysis and visualization scripts
- Local reward model batch processing improvements
- Updated CLAUDE.md with full experiment documentation and notes
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Diffstat (limited to 'docs/rag_improvement_ideas.md')
| -rw-r--r-- | docs/rag_improvement_ideas.md | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/docs/rag_improvement_ideas.md b/docs/rag_improvement_ideas.md new file mode 100644 index 0000000..f49a6b3 --- /dev/null +++ b/docs/rag_improvement_ideas.md @@ -0,0 +1,238 @@ +# RAG Retrieval Improvement Ideas + +> 记录日期: 2026-02-07 +> 当前状态: RAG方法成功率52.2%,超时率41.4%,E/T 0.193 +> 目标: 降低超时率至接近Reflection的25.9% + +## 与Reflection Baseline的差距分析 + +| 指标 | RAG (topk5) | Reflection | 差距 | +|------|-------------|------------|------| +| 成功率 | 52.2% | 45.2% | +7.0% ✓ 领先 | +| 超时率 | 41.4% | 25.9% | +15.5% ✗ 落后 | +| E/T | 0.193 | 0.162 | +0.031 ✗ 落后 | + +**核心问题**: 超时率高,agent未能在max_turns内满足用户偏好 + +--- + +## A. 检索质量优化 (Retrieval) + +### A1. Query Expansion ✅ 已实现 +- **状态**: 已实现,enable_query_transform=True +- **当前方案**: 检测任务类型(math/coding/writing/explanation),添加前缀 "user preferences for {type} tasks" +- **Bug修复**: 2026-02-07 修复了词边界匹配问题("api"误匹配"capital") +- **待验证**: 需要实验验证效果 + +### A2. Preference Embedding优化 +- **问题**: 当前直接embed "When X, do Y" 格式的完整句子 +- **改进方案**: + - 同时embed多个变体: action-only, condition-only, paraphrased + - 存储时创建多个embedding,检索时取最高分 +- **实现难度**: 中 +- **预期收益**: 提高检索召回率 + +### A3. 动态TopK +- **问题**: 固定topk可能过多(引入噪声)或过少(遗漏重要偏好) +- **实验结果**: + - topk=3: 成功率42.2%, 超时率57.7% ❌ 更差 + - topk=5: 成功率52.2%, 超时率41.4% (基线) + - topk=8: 实验中... +- **改进方案**: 基于rerank分数动态决定 + - 如果top-1分数 > 0.8,只取top-3 + - 如果top-1分数 < 0.5,取top-8 +- **实现难度**: 低 +- **预期收益**: 中 + +### A4. Negative Filtering +- **问题**: reranker可能给不相关偏好较高分数 +- **改进方案**: + - 添加分数阈值,过滤低于阈值的偏好 + - 或训练一个二分类器判断相关性 +- **实现难度**: 低-中 +- **预期收益**: 减少噪声干扰 + +--- + +## B. Prompt Engineering + +### B1. 偏好优先级标注 ⭐ 高优先级 +- **问题**: 所有偏好平等列出,模型不知道哪个更相关 +- **改进方案**: + ``` + ## Highly Relevant Preferences (rerank > 0.7) + - [preference 1] + - [preference 2] + + ## Possibly Relevant Preferences + - [preference 3] + ``` +- **实现难度**: 低(只改prompt构建逻辑) +- **预期收益**: 中-高 + +### B2. 偏好分类呈现 +- **问题**: 混合不同类型的偏好可能造成混淆 +- **改进方案**: + ``` + ## Format Preferences + - Use bullet points + - Include code blocks with language + + ## Content Preferences + - Show step-by-step derivation + - Provide examples + ``` +- **实现难度**: 中(需要偏好分类器) +- **预期收益**: 中 + +### B3. 显式推理步骤 ⭐ 高优先级 +- **Reflection的优势**: 强制模型输出 `user_preferences_reasoning` 字段 +- **改进方案**: + ``` + Before responding, briefly consider: + 1. Which of the above preferences are relevant to this request? + 2. How will you satisfy each relevant preference? + Then provide your response. + ``` +- **实现难度**: 低(只改prompt) +- **预期收益**: 高 + +### B4. 偏好Checklist验证 ⭐ 高优先级 +- **问题**: 模型可能忘记某些偏好 +- **改进方案**: + ``` + # Response Checklist + Before finalizing your response, verify: + □ [preference 1 - brief description] + □ [preference 2 - brief description] + ``` +- **实现难度**: 低 +- **预期收益**: 中-高 + +### B5. Few-shot示例 +- **改进方案**: 在prompt中添加一个"正确遵循偏好"的示例 +- **实现难度**: 低 +- **预期收益**: 中 +- **风险**: 增加context长度 + +--- + +## C. 偏好提取优化 (Extraction) + +### C1. 更细粒度的偏好 +- **问题**: 当前偏好可能太粗略 "When coding, use Python" +- **改进方案**: 分解为多个具体偏好 + - 编程语言: Python + - 代码格式: 单个可复制块 + - 注释风格: 内联注释 +- **实现难度**: 中(需要改extractor prompt) +- **预期收益**: 提高检索精度 + +### C2. 偏好置信度利用 +- **问题**: 低置信度偏好可能是噪声 +- **改进方案**: + - 存储时记录置信度 + - 检索时作为额外权重 +- **实现难度**: 低 +- **预期收益**: 低-中 + +### C3. 冲突检测 +- **问题**: 用户可能有矛盾的偏好(如"简洁" vs "详细") +- **改进方案**: + - 检测语义矛盾 + - 保留更新的偏好 + - 或在prompt中明确指出冲突 +- **实现难度**: 高 +- **预期收益**: 中 + +--- + +## D. 反馈循环优化 (Feedback Loop) + +### D1. 违规偏好标记 +- **问题**: 不知道哪个偏好导致用户enforce +- **改进方案**: + - 当用户enforce时,用小模型分析是哪个偏好被违反 + - 下次检索时boost该偏好权重 +- **实现难度**: 中-高 +- **预期收益**: 高 + +### D2. 会话内Correction记忆 ⭐ 中优先级 +- **问题**: 同一session内用户的correction可能被忽略 +- **改进方案**: + - 记录用户的每次correction + - 在后续turn中作为高优先级偏好 + - 临时存储,session结束后清除 +- **实现难度**: 中 +- **预期收益**: 中-高 + +### D3. 偏好验证 (Self-Critique) +- **问题**: 模型可能生成不符合偏好的响应 +- **改进方案**: + - 生成后用小模型/规则检查是否符合偏好 + - 不符合则重新生成或修正 +- **实现难度**: 高 +- **预期收益**: 高 +- **风险**: 增加延迟 + +--- + +## E. 架构改进 + +### E1. 两阶段生成 +- **方案**: + 1. 阶段1: 生成内容大纲/要点 + 2. 阶段2: 根据偏好润色格式 +- **实现难度**: 高 +- **预期收益**: 未知 + +### E2. 混合方法 (Reflection + RAG) +- **方案**: + - 使用Reflection的session-end notes作为长期记忆 + - 使用RAG检索相关偏好作为短期记忆 + - 两者结合注入prompt +- **实现难度**: 高 +- **预期收益**: 未知(可能是最优解) + +--- + +## 实验记录 + +### 已完成实验 + +| 实验名 | 配置 | 成功率 | 超时率 | E/T | 备注 | +|--------|------|--------|--------|-----|------| +| rag_prompt_priority | topk=5, prompt改进 | 52.2% | 41.4% | 0.193 | 基线 | +| rag_topk3_test | topk=3 | 42.2% | 57.7% | 0.191 | ❌ 更差 | + +### 进行中实验 + +| 实验名 | 配置 | 状态 | +|--------|------|------| +| rag_topk8_test | topk=8 | 运行中 | + +--- + +## 快速实验建议 + +按实现难度和预期收益排序: + +1. **[B3] 显式推理步骤** - 只改prompt,高收益 +2. **[B4] 偏好Checklist** - 只改prompt,中-高收益 +3. **[B1] 偏好优先级标注** - 小改动,中-高收益 +4. **[D2] 会话内correction记忆** - 中等改动,中-高收益 +5. **[A3] 动态TopK** - 小改动,中收益 + +--- + +## 参考: Reflection vs RAG 对比 + +| 特性 | Reflection | RAG (我们的) | +|------|------------|-------------| +| 偏好呈现 | 自然语言notes | 结构化bullet list | +| 推理步骤 | ✓ 显式 user_preferences_reasoning | ✗ 无 | +| 输出格式 | JSON with reasoning | 纯文本 | +| 反馈循环 | session-end reflection | 实时extraction | +| 检索方式 | LLM-based (proper_scaffolding) | Dense + Rerank | + +**关键差异**: Reflection强制模型在响应前显式推理如何满足偏好 |
