11

RAG技术

检索增强生成:知识库+LLM的强强联合

⏱️ 120分钟📊 难度:进阶🎯 模块:工程实践

📖课程概述

RAG(Retrieval-Augmented Generation,检索增强生成)是当前最重要的大语言模型应用技术之一。 它通过结合外部知识库检索和大语言模型生成能力,有效解决了模型知识过时、幻觉等问题。 本讲将深入讲解RAG的核心原理、关键技术和实践应用, 帮助你掌握构建智能问答系统、知识助手等应用的核心能力。

🎯学习目标

1.理解RAG的核心原理和技术架构
2.掌握向量检索、文档分块等关键技术
3.了解RAG vs 微调的差异和选择标准
4.能够设计和实现基础的RAG应用系统

🔑核心知识点

RAG架构向量检索文档分块Embedding

💡什么是RAG

🔗

RAG的定义

RAG(Retrieval-Augmented Generation)是一种将信息检索与文本生成相结合的技术框架。 在生成回答之前,系统先从外部知识库中检索相关信息,然后将这些信息作为上下文提供给大语言模型, 引导模型生成更准确、更可靠的答案。

RAG解决的核心问题

1. 知识过时

模型训练后无法获取最新信息,RAG通过实时检索解决

2. 幻觉问题

基于检索到的真实文档生成,减少凭空编造

3. 领域知识缺失

通过企业/专业知识库补充模型不具备的领域知识

4. 可溯源性

可以追溯答案来源,提高透明度和可信度

⚙️RAG工作流程

RAG系统的工作流程包括离线索引构建和在线查询响应两个阶段。 理解这两个阶段的工作原理是掌握RAG技术的关键。

📦离线阶段:索引构建

1

文档加载

从各种来源(PDF、网页、数据库等)加载文档数据

2

文档分块(Chunking)

将长文档切分为适合检索和处理的小块(通常200-1000 tokens)

3

向量化(Embedding)

使用Embedding模型将每个文档块转换为高维向量(如768维)

4

索引存储

将向量存储到向量数据库(如Pinecone、Weaviate、Chroma)中,建立索引

在线阶段:查询响应

1

问题向量化

将用户问题转换为向量(使用与文档相同的Embedding模型)

2

相似度检索

在向量数据库中查找与问题向量最相似的Top-K个文档块

3

重排序(可选)

使用更精细的模型对检索结果重新排序,提高相关性

4

上下文构建

将检索到的文档块和用户问题组合成完整的提示词

5

生成答案

大语言模型基于检索到的上下文生成答案

💡流程示意

用户问题 → 向量化 → 检索Top-K文档 → 重排序 → 构建提示词 → LLM生成 → 返回答案

📄关键技术一:文档分块

✂️

为什么需要分块

长文档难以直接检索和使用。通过分块,我们可以更精确地定位相关信息, 同时避免上下文窗口过大的问题。合理的分块策略对RAG效果至关重要。

分块策略

固定长度分块

按固定字符数或token数切分

✅ 简单高效
⚠️ 可能破坏语义完整性

语义分块

按段落、章节等语义单元切分

✅ 保持语义完整
⚠️ 块大小不均匀

重叠分块

相邻块之间有部分重叠(如20%)

✅ 避免信息断裂
⚠️ 增加存储成本

层次分块

结合摘要和细节的多层次分块

✅ 支持粗细粒度检索
⚠️ 实现复杂

💡分块大小选择建议

  • 太小(<100 tokens):缺乏足够上下文,检索结果碎片化
  • 太大(>2000 tokens):噪音信息多,检索精度下降
  • 推荐范围:200-1000 tokens,根据文档类型调整
  • 重叠设置:10-20%重叠可以提高检索召回率

🔍关键技术二:向量检索

🎯

Embedding与相似度计算

向量检索是RAG的核心技术。通过将文本转换为语义向量, 我们可以基于语义相似度(而非关键词匹配)找到最相关的信息。

Embedding模型

常用Embedding模型

  • OpenAI text-embedding-3:高质量,多语言支持
  • sentence-transformers:开源,多种预训练模型
  • BGE(中文):专门优化的中文Embedding
  • E5:微软开源,性能优秀

相似度计算方法

余弦相似度

最常用,计算两个向量的夹角

范围:[-1, 1]
1 = 完全相同
0 = 无关
-1 = 完全相反

欧氏距离

计算向量之间的直线距离

距离越小,相似度越高
适合低维空间

点积

向量的内积计算

计算速度快
需要向量归一化

向量数据库

为了快速检索百万级甚至十亿级的向量,需要专门的向量数据库:

云服务

Pinecone, Weaviate Cloud, Qdrant Cloud

开源自部署

Chroma, Milvus, Faiss, Qdrant

⚖️RAG vs 微调(Fine-tuning)

RAG和微调是两种不同的模型定制方法。理解它们的差异,有助于根据需求选择合适的技术方案。

维度RAG微调(Fine-tuning)
目标增加外部知识改变模型行为和风格
知识更新✅ 实时更新,只需更新知识库❌ 需要重新训练
成本💰 较低(存储+检索成本)💰💰💰 高(GPU训练成本)
技术门槛⭐⭐ 中等⭐⭐⭐⭐ 高
透明度✅ 高,可以看到引用来源❌ 低,知识融入模型内部
适用场景• 企业知识库问答
• 实时信息查询
• 需要可溯源的应用
• 频繁知识更新
• 特定风格模仿
• 任务格式优化
• 领域语言适配
• 指令遵循改进
优点• 灵活、易更新
• 可溯源、可解释
• 成本低
• 无需GPU训练
• 深度定制
• 风格一致性强
• 无需外部系统
• 响应速度快
缺点• 依赖检索质量
• 增加延迟
• 难以改变模型风格
• 成本高昂
• 技术复杂
• 知识更新困难
• 可能过拟合

💡组合使用

RAG和微调并非互斥,可以组合使用:
先微调模型以适应特定领域和风格,然后使用RAG补充最新知识和细节信息。 这种组合能够发挥两种技术的优势。

🚀RAG优化技巧

基础的RAG系统容易实现,但要达到生产级别的效果,需要在多个环节进行优化。

📊

1. 检索质量优化

混合检索

结合向量检索(语义)和关键词检索(精确匹配),如BM25 + 向量

查询重写

用LLM改写用户问题,生成更适合检索的查询

多查询策略

生成多个相关查询,合并检索结果

重排序模型

使用Cross-Encoder对初步结果精确排序

🎯

2. 上下文优化

上下文压缩

提取检索文档的关键信息,减少噪音和token消耗

动态Top-K

根据问题复杂度和检索质量动态调整返回文档数量

元数据过滤

基于时间、来源、类型等元数据预过滤文档

上下文排序

将最相关的内容放在提示词的显著位置

💬

3. 生成质量优化

提示词工程

设计高质量的提示词模板,引导模型更好地利用检索内容

引用标注

要求模型在答案中标注信息来源,提高可信度

事实验证

生成后验证答案是否与检索内容一致

答案融合

从多个文档片段中综合信息,生成完整答案

4. 性能优化

缓存策略

缓存常见问题的检索结果和答案

批处理

批量处理Embedding和检索请求

索引优化

使用HNSW、IVF等高效索引算法

异步处理

并行执行检索和生成的准备工作

🎯RAG的应用场景

📚

企业知识库问答

基于企业内部文档(政策、流程、技术文档)回答员工问题

典型应用:HR助手、IT支持机器人、客服系统

🏥

专业领域助手

结合医疗、法律、金融等专业知识库,提供专业咨询

典型应用:医疗诊断辅助、法律文书检索、投资分析

📰

实时信息查询

检索最新新闻、市场数据、研究报告等时效性信息

典型应用:新闻摘要、市场分析、竞品监控

📖

学习辅助系统

基于教材、课件、习题库回答学生问题,提供个性化学习支持

典型应用:智能教学助手、考试辅导、知识点解答

💻

代码文档助手

检索API文档、代码示例,帮助开发者解决编程问题

典型应用:代码生成助手、API查询、调试帮助

🔬

科研文献检索

从海量论文中检索相关研究,生成文献综述和研究建议

典型应用:论文推荐、文献综述、研究方向探索

🎯 核心要点总结

RAG核心原理

检索+增强+生成的三阶段流程,解决知识过时和幻觉问题

  • • 离线索引构建
  • • 在线向量检索
  • • 上下文增强生成
  • • 可溯源可验证

关键技术

文档分块、向量化、相似度检索是RAG的技术基础

  • • 分块策略(200-1000 tokens)
  • • Embedding模型选择
  • • 向量数据库应用
  • • 混合检索优化

实践应用

RAG适用于需要外部知识和实时更新的各类应用场景

  • • 企业知识库问答
  • • 专业领域助手
  • • 学习辅助系统
  • • vs微调的选择

📚学习资源

📄

课程Slides

完整的讲义PDF,包含所有图表和详细内容

本讲测评

检验你对本讲知识点的掌握程度

开始测评 →