Skip to content

04. RAG 食谱(RAG Recipes)

概述

本指南提供实用的 RAG(检索增强生成)模式和食谱,帮助您构建有效的检索增强系统。

核心概念

  1. 检索策略 - 如何有效地检索相关文档
  2. 增强方法 - 如何将检索结果整合到提示中
  3. 生成优化 - 在增强上下文中生成高质量输出
  4. 质量评估 - 评估RAG系统的性能
  5. 成本优化 - 平衡检索和生成的成本

RAG 基础架构

标准 RAG 流程

查询输入

向量化查询

检索相关文档

排序和过滤

组装增强提示

生成响应

输出返回

常见 RAG 食谱

食谱 1: 基础RAG

适用场景: 简单的信息检索任务

python
1. 向量化用户查询
2. 在知识库中搜索相似文档
3. 选择top-k相关文档
4. 将文档插入提示中
5. 生成响应

优点:

  • 实现简单
  • 响应快速
  • 成本低

缺点:

  • 不适合复杂查询
  • 可能包含无关信息

食谱 2: 多步RAG

适用场景: 需要多次检索和推理的任务

python
步骤1: 初始查询检索
  → 获取初步相关文档

步骤2: 查询精化
  → 基于初始结果改进查询

步骤3: 二次检索
  → 使用精化查询再次检索

步骤4: 信息融合
  → 综合多轮检索结果

步骤5: 生成响应
  → 基于综合信息生成答案

优点:

  • 处理复杂查询
  • 提高准确性
  • 减少幻觉

缺点:

  • 需要更多API调用
  • 成本较高
  • 延迟增加

食谱 3: 混合检索

适用场景: 需要结合语义和关键词搜索的任务

python
并行检索:
├─ 语义检索(向量相似度)
├─ 关键词检索(BM25
└─ 其他元数据检索

结果融合:
├─ 去重
├─ 重排序
└─ 加权组合

优点:

  • 更全面的检索
  • 提高召回率
  • 减少遗漏

缺点:

  • 实现复杂
  • 计算成本增加

食谱 4: 情境化RAG

适用场景: 需要理解用户背景和意图的任务

python
1. 分析用户背景
2. 提取上下文信息
3. 根据背景调整查询
4. 执行定制化检索
5. 生成个性化响应

应用例子:

  • 个性化推荐
  • 上下文敏感的答案
  • 多轮对话系统

食谱 5: 层级化RAG

适用场景: 处理大规模知识库的任务

查询

粗粒度检索(文档层面)

细粒度检索(段落层面)

超细粒度检索(句子层面)

生成响应

优点:

  • 能处理大规模数据
  • 精度更高
  • 灵活性强

关键技术

1. 文档处理

原始文档

清洁和规范化

分割成块

向量化

存储在向量数据库

2. 查询理解

  • 意图识别 - 理解用户的真实意图
  • 实体提取 - 识别关键实体
  • 查询扩展 - 扩展查询以提高召回率
  • 查询改写 - 改进查询的表述

3. 排序和重排

方法描述适用场景
相似度排序按向量相似度排序基础排序
相关性重排使用学习排序模型提高准确性
多维排序考虑多个因素复杂查询
动态排序根据上下文调整自适应系统

4. 结果融合

python
融合策略:
- 简单合并:直接组合所有结果
- 加权融合:使用权重组合结果
- 排名融合:基于排名融合
- 投票融合:基于多数投票

评估指标

检索质量

  • 召回率(Recall) - 检索到相关文档的比例
  • 精准率(Precision) - 检索到的文档中相关的比例
  • MRR(平均倒数排名) - 相关文档的排名位置
  • NDCG(归一化折扣累积收益) - 考虑排名的综合指标

生成质量

  • 答案准确性 - 答案是否正确
  • 完整性 - 是否涵盖所有方面
  • 相关性 - 与查询的相关程度
  • 清晰度 - 表述是否清楚

系统性能

  • 延迟 - 响应时间
  • 成本 - API调用和存储成本
  • 吞吐量 - 每秒处理的查询数

实现建议

选择合适的食谱

简单查询 → 基础RAG
复杂查询 → 多步RAG
需要完整性 → 混合检索
需要个性化 → 情境化RAG
大规模数据 → 层级化RAG

优化策略

  1. 性能优化

    • 使用批处理
    • 缓存检索结果
    • 异步处理
  2. 成本优化

    • 优化块大小
    • 减少不必要的检索
    • 使用更便宜的模型
  3. 质量优化

    • 精心设计检索查询
    • 优化排序方法
    • 迭代改进提示

常见陷阱

  • ❌ 检索垃圾,输出垃圾(GIGO)
  • ❌ 过度检索导致成本过高
  • ❌ 忽视相关性评估
  • ❌ 不处理信息冲突
  • ❌ 忽视隐私和安全问题

最佳实践

  1. 清晰定义 - 明确定义检索的目标
  2. 质量评估 - 定期评估系统性能
  3. 持续改进 - 基于评估结果改进
  4. 成本监控 - 跟踪和优化成本
  5. 文档维护 - 保持知识库最新

高级话题

  • 多模态RAG(文本、图像、代码)
  • 动态知识库更新
  • 多语言RAG
  • 隐私保护的RAG
  • 实时数据融合

下一步

  • 学习 05_prompt_programs.md - 编程化的提示设计
  • 探索 06_schema_design.md - 结构化设计
  • 研究 07_recursive_patterns.md - 递归模式

相关资源

  • RAG论文和研究
  • 向量数据库工具
  • 检索方法论文
  • 大型语言模型微调指南

基于 MIT 许可发布