本技能提供完整的RAG系统优化方案,涵盖21+种优化策略,帮助构建高准确率、生产级的RAG应用。
核心价值:
适用场景:构建知识库问答、优化检索准确率、解决检索噪音、降低幻觉问题
环境准备与配置:详见 全局操作说明
| 症状 | 可能原因 | 诊断方法 |
|---|---|---|
| ------ | --------- | --------- |
| 检索不到内容 | 分块策略不当、向量模型不适配 | 检查召回率(Recall@K) |
| 检索到但答案不准 | 检索噪音、重排序缺失 | 检查精确率(Precision@K) |
| 答案不完整 | 上下文窗口不足、分块断裂 | 检查上下文完整性 |
| 答案有幻觉 | 检索内容不相关、模型过度推理 | 对比答案与检索内容 |
| 简单问题答不对 | 查询理解失败 | 检查查询转换效果 |
| 复杂问题答不出 | 缺乏多跳推理能力 | 评估是否需要Graph RAG |
优化前建立基准指标:recall@10、precision@5、MRR、answer_accuracy
评估工具:调用 scripts/evaluate.py 进行系统评估
RAG优化策略
├── 检索前优化
│ ├── 语义分块 - 基于语义相似度动态分块
│ ├── 命题分块 - 拆解为最小事实单元
│ ├── 上下文头增强 - 添加元数据头部
│ ├── 由小到大检索 - 小块检索、大块返回
│ ├── 文档预处理 - 多格式标准化处理
│ └── 查询转换 - 扩展/分解/HyDE
│
├── 检索中优化
│ ├── 混合检索 - 向量 + BM25
│ ├── HyDE - 假设文档嵌入
│ ├── 多跳检索 - 迭代收集信息
│ ├── 查询意图识别 - 动态策略调整
│ └── 自适应检索 - 根据查询特征调整
│
├── 检索后优化
│ ├── 重排序 - 两阶段检索精排
│ ├── 相关片段提取 - 提取核心内容
│ ├── 上下文压缩 - 减少Token消耗
│ ├── 引用溯源 - 标注答案来源
│ └── 幻觉检测 - 验证答案可靠性
│
├── 生成控制
│ ├── Self-RAG/CRAG - 自我纠错与质量评估
│ └── 反馈循环 - 持续优化
│
└── 架构级优化
├── 分层索引 - 多级索引结构
├── Graph RAG - 图结构知识
└── 分层路由 - 智能路由分发
你的问题是什么?
│
├─ 检索不到内容?
│ ├─ 文档很长? → 由小到大检索
│ ├─ 查询模糊? → HyDE + 查询扩展
│ ├─ 分块断裂? → 语义分块
│ └─ 召回率低? → 上下文头增强
│
├─ 检索到太多噪音?
│ ├─ 有精确术语? → 混合检索(增加关键词权重)
│ ├─ 排序不准? → 重排序
│ ├─ Token浪费? → 相关片段提取
│ └─ 需要溯源? → 引用溯源
│
├─ 复杂问题答不出?
│ ├─ 需要多步推理? → 多跳检索 / Graph RAG
│ └─ 跨领域查询? → 分层路由
│
├─ 答案有幻觉?
│ ├─ 检索内容太长? → 上下文压缩
│ ├─ 检索质量差? → Self-RAG/CRAG
│ └─ 无法验证? → 引用溯源 + 幻觉检测
│
└─ 需要精确匹配事实?
└─ 命题分块
问题:固定大小分块会切断语义完整性
方案:基于语义相似度动态分块,相似度低于阈值时切分
效果:准确率 0.30 → 0.85,性价比最高
详细实现:见 高级技术指南
问题:小块检索精准但上下文不足,大块完整但检索不准
方案:检索小块(100-200字),返回大块(500-1000字)
三步流程:
参数建议:技术文档(150/600字)、学术论文(200/800字)、法律条文(100/500字)
详细实现:见 高级技术指南
问题:用户查询表述不清、过于复杂
方案:用LLM转换查询形式
三种模式:
详细实现:见 高级技术指南
问题:向量检索的初步排序不够精准
方案:两阶段检索 - 粗筛(top 50) + 精排(top 5)
流程:查询 → 向量检索 → 重排序模型 → 最终结果
模型推荐:
效果:准确率 0.50 → 0.70
问题:纯向量检索无法精准匹配关键词
方案:向量检索 + BM25关键词检索
融合公式:final_score = α × vector_score + (1-α) × bm25_score
自适应权重:短查询/专有名词 → α=0.5,长查询 → α=0.7
效果:准确率 0.50 → 0.83
问题:检索结果质量差时仍会生成错误答案
方案:在检索和生成环节增加质量评估,自动纠正错误
两种模式:
脚本调用:scripts/self_rag.py,支持 CorrectiveRAG 和 SelfRAG 两种模式
配置参数:max_retries、high_relevance_threshold、eval_mode 等
效果:幻觉率降低 30-50%
详细实现:见 高级技术指南
问题:检索到的文档块包含大量无关内容
方案:从文档块中提取与问题最相关的句子/段落
三种粒度:句子级(精确问答)、滑动窗口(通用)、语义边界(学术论文)
脚本调用:scripts/segment_extractor.py
效果:Token减少 60-80%
详细实现:见 高级技术指南
问题:传统分块粒度粗,无法精准匹配具体事实
方案:将文档拆解为最小的事实单元(命题),每个命题独立可检索
示例:
"RAG是一种技术。它能降低幻觉。""RAG是一种技术" + "RAG能降低幻觉"脚本调用:scripts/proposition_chunker.py
最佳实践:与Small-to-Big结合,命题作为子块,原段落作为父块
详细实现:见 高级技术指南
问题:文档块脱离上下文后语义不完整
方案:为每个文档块添加元数据头部,补充全局背景信息
头部内容:文档标题、章节路径、主题标签、关键实体
效果:召回率提升 10-20%
脚本调用:scripts/contextual_header.py
详细实现:见 高级技术指南
问题:检索到的上下文包含大量无关内容,浪费Token
方案:对检索结果压缩,保留核心信息
三种模式:
脚本调用:scripts/context_compression.py
效果:Token减少 50-70%
详细实现:见 高级技术指南
问题:答案来源不明确,无法判断可信度
方案:为答案标注引用来源,提供可信度评分
四种格式:行内引用[1]、脚注引用¹、详细引用(来源+可信度)、JSON引用
脚本调用:scripts/citation_tracker.py
效果:答案可信度显著提升
详细实现:见 高级技术指南
问题:用户查询表达模糊,检索策略一刀切
方案:识别查询意图类型,动态调整检索策略
七种意图:事实查询、对比分析、操作指导、概念解释、开放讨论、问题诊断、闲聊问候
脚本调用:scripts/query_intent.py
效果:答案质量提升 15-25%
详细实现:见 高级技术指南
问题:复杂问题需要综合多个信息源
方案:迭代检索,逐步收集信息直到答案完整
适用场景:"A公司的CEO在哪所大学毕业?"(先查CEO,再查毕业院校)
脚本调用:scripts/multi_hop_retriever.py
效果:复杂问题完整度提高 40%+
详细实现:见 高级技术指南
问题:多格式文档直接向量化效果差
方案:标准化预处理,提取结构化内容
支持格式:PDF、Word、Excel、HTML、Markdown、图片(OCR)
脚本调用:scripts/document_preprocessor.py
详细实现:见 高级技术指南
| 技术 | 解决的问题 | 效果提升 | 实现难度 | 推荐优先级 |
|---|---|---|---|---|
| ------ | ----------- | --------- | --------- | ----------- |
| Self-RAG/CRAG | 检索错误导致答案错误 | 幻觉率↓30-50% | 中高 | 1 |
| 相关片段提取 | Token浪费、噪声多 | Token↓60-80% | 中 | 2 |
| 命题分块 | 无法精准匹配事实 | 精确度↑ | 高 | 3 |
| 上下文头增强 | 召回率低 | 召回率↑10-20% | 低 | 4 |
| 上下文压缩 | Token浪费、噪声多 | Token↓50-70% | 中 | 5 |
| 引用溯源 | 答案来源不明确 | 可信度↑ | 低 | 6 |
| 查询意图识别 | 检索策略一刀切 | 质量↑15-25% | 低 | 7 |
| 多跳检索 | 复杂问题答不全 | 完整度↑40% | 中高 | 8 |
| 文档预处理 | 文档质量差 | 基础质量↑ | 中 | 9 |
使用痛点自查表识别问题,调用 scripts/evaluate.py 建立基准指标
根据策略选择决策树确定优化策略组合
使用 assets/config-template.json 配置参数,参考 全局操作说明 了解参数调优建议
使用评估脚本验证优化效果,对比基准指标,持续迭代
| 脚本 | 用途 |
|---|---|
| ------ | ------ |
| evaluate.py | RAG系统评估 |
| self_rag.py | Self-RAG/CRAG实现 |
| segment_extractor.py | 相关片段提取 |
| proposition_chunker.py | 命题分块 |
| contextual_header.py | 上下文头增强 |
| context_compression.py | 上下文压缩 |
| citation_tracker.py | 引用溯源 |
| query_intent.py | 查询意图识别 |
| multi_hop_retriever.py | 多跳检索 |
| document_preprocessor.py | 文档预处理 |
| 文档 | 说明 |
|---|---|
| ------ | ------ |
| global-operations.md | 全局操作说明(环境准备、配置规范、参数调优) |
| quickstart.md | 5分钟快速上手 |
| advanced-techniques.md | 9项核心技术详细实现 |
| implementation-guide.md | 全链路落地实践 |
| 资源 | 说明 |
|---|---|
| ------ | ------ |
| config-template.json | 完整配置模板(含预设) |
| test-cases-example.json | 测试用例示例 |
共 1 个版本