第 6 章

RAG 检索增强生成

检索增强生成(RAG)通过外部知识库和上下文注入,解决了大模型的知识更新、可解释性和成本问题,是企业应用的主流架构。

RAG 工作原理

RAG通过检索外部知识库,将相关信息注入到生成过程中,实现了知识增强的生成。

完整工作流程

1
查询理解:理解用户查询的意图和需求
2
向量化:将查询转换为向量表示(Embedding)
3
检索:在向量数据库中检索相似文档
4
上下文注入:将检索到的文档作为上下文注入到Prompt中
5
生成:基于增强的上下文生成回答

核心组件

  • 向量数据库:存储文档的向量表示(如Pinecone、Weaviate、Milvus)
  • 嵌入模型:将文本转换为向量(如OpenAI Embeddings、BGE)
  • 检索器:执行相似度搜索(向量检索、关键词检索、混合检索)
  • 生成模型:基于检索结果生成回答(如GPT-4、Claude)

RAG 的优势

RAG解决了大模型的关键问题,使其更适合企业应用。

知识更新

  • 实时更新:可以随时更新知识库,无需重新训练模型
  • 领域知识:可以注入特定领域的专业知识
  • 时效性:可以访问最新的信息
  • 灵活性:不同查询可以使用不同的知识库

可解释性

  • 来源追溯:可以追溯到答案的来源文档
  • 透明度:用户可以查看检索到的文档
  • 可信度:可以评估信息来源的可信度
  • 审计:便于审计和合规

成本效益

  • 无需微调:不需要针对每个领域微调模型
  • 知识库复用:同一个知识库可以服务多个应用
  • 成本控制:相比微调,成本更低
  • 快速部署:可以快速部署新应用

减少幻觉

  • 事实基础:基于检索到的文档生成,减少编造
  • 准确性:提高答案的准确性
  • 可靠性:更适合需要准确信息的场景
  • 质量控制:可以通过知识库质量控制答案质量

RAG 的挑战

RAG虽然强大,但也面临一些挑战需要解决。

检索质量依赖

RAG的效果高度依赖检索质量:

  • 检索准确性:检索不到相关文档会导致错误答案
  • 检索相关性:检索到不相关文档会影响生成质量
  • 文档质量:知识库的质量直接影响RAG效果
  • 优化方向:改进检索算法、优化文档分块、使用混合检索

延迟问题

  • 检索延迟:向量检索需要时间
  • 生成延迟:生成模型需要处理更长的上下文
  • 总体延迟:RAG的总体延迟高于直接生成
  • 优化:缓存、异步检索、优化检索算法

上下文限制

  • 上下文窗口:模型有上下文长度限制
  • 文档选择:需要从大量检索结果中选择最相关的
  • 信息压缩:可能需要压缩或摘要检索到的文档
  • 解决方案:重排序、文档摘要、分层检索

RAG 最佳实践

构建高质量RAG系统的关键实践。

向量数据库选择

Pinecone

托管服务,易于使用,适合快速原型

Weaviate

开源,功能丰富,支持混合检索

Milvus

高性能,适合大规模部署

Chroma

轻量级,易于集成

检索策略

  • 向量检索:基于语义相似度,适合语义查询
  • 关键词检索:基于关键词匹配,适合精确匹配
  • 混合检索:结合向量检索和关键词检索,效果更好
  • 重排序:使用重排序模型优化检索结果

文档处理

  • 分块策略:合理分块,保持语义完整性
  • 元数据:添加元数据(来源、时间、类型等)
  • 预处理:清理、标准化、去重
  • 更新机制:建立文档更新和版本管理机制

Prompt 工程

  • 上下文组织:合理组织检索到的文档
  • 指令清晰:明确指示模型如何使用检索到的信息
  • 引用要求:要求模型引用来源
  • 质量控制:添加质量控制指令(如"如果信息不足,请说明")

RAG vs 微调:如何选择?

理解RAG和微调的适用场景,做出正确的选择。

选择 RAG 的场景

  • 知识更新频繁:需要频繁更新知识
  • 多领域应用:需要处理多个领域
  • 可解释性要求:需要追溯答案来源
  • 快速部署:需要快速部署新应用
  • 成本控制:需要控制成本

选择微调的场景

  • 任务特定:需要学习特定的任务模式
  • 风格适应:需要适应特定的输出风格
  • 性能优化:需要在特定任务上优化性能
  • 知识固化:知识相对稳定,不需要频繁更新
  • 延迟敏感:对延迟要求极高

混合方案

实际应用中,RAG和微调可以结合使用:使用微调优化基础能力,使用RAG注入领域知识。

学习成果

完成本章后,你将:

  • 1理解RAG的完整工作流程(检索→增强→生成)和核心组件
  • 2掌握RAG的优势(知识更新、可解释性、成本效益)和挑战(检索质量、延迟、上下文限制)
  • 3了解RAG的最佳实践(向量数据库选择、检索策略、文档处理、Prompt工程)
  • 4能够评估RAG vs 微调的选择,根据场景做出正确的架构决策