RAG - Retrieval-Augmented Generation
检索增强生成完全指南
📑 页面目录
RAG - Retrieval-Augmented Generation
一、什么是 RAG?
RAG(检索增强生成)是一种结合信息检索和文本生成的技术。其核心思想是:在生成文本前,先从外部知识库中检索相关信息,然后将这些信息作为上下文提供给生成模型。
核心优势:
- 解决 LLM 的知识过时问题
- 提高答案的准确性和可信度
- 支持基于特定知识库的问答
- 降低幻觉(hallucination)问题
- 支持实时知识更新
二、RAG 的架构
2.1 基本流程
用户查询
↓
查询理解与处理
↓
知识库检索
↓
排序与重排
↓
上下文组织
↓
LLM 生成
↓
后处理与输出
↓
查询理解与处理
↓
知识库检索
↓
排序与重排
↓
上下文组织
↓
LLM 生成
↓
后处理与输出
2.2 离线部分(Offline)
| 阶段 | 功能 | 技术 |
|---|---|---|
| 数据收集 | 收集原始文档 | 爬虫、API、数据库 |
| 文本清洗 | 清理和标准化文本 | 正则表达式、NLP工具 |
| 文本分块 | 将长文本分割成块 | 滑动窗口、语义分块 |
| 向量化 | 将文本转化为向量 | Embedding 模型 |
| 索引构建 | 构建向量索引 | 向量数据库、FAISS |
2.3 在线部分(Online)
| 阶段 | 功能 | 技术 |
|---|---|---|
| 查询处理 | 理解用户查询 | 查询理解、扩展、改写 |
| 检索 | 从知识库检索相关文档 | 向量检索、关键词检索、混合检索 |
| 排序 | 对检索结果排序 | 相关性排序、学习排序 |
| 上下文构建 | 组织上下文 | 上下文窗口、摘要 |
| 生成 | 生成最终答案 | LLM、微调模型 |
三、核心技术组件
3.1 查询理解
- 查询扩展:扩展查询以覆盖更多相关信息
- 查询改写:改写查询以提高检索效果
- 意图识别:识别用户的真实意图
- 实体识别:识别查询中的关键实体
3.2 检索方法
| 检索方法 | 说明 | 优点 | 缺点 |
|---|---|---|---|
| 向量检索 | 基于语义相似度 | 语义理解好 | 计算成本高 |
| 关键词检索 | 基于关键词匹配 | 快速、精确 | 语义理解差 |
| 混合检索 | 结合向量和关键词 | 综合优势 | 复杂度高 |
| 图检索 | 基于知识图谱 | 关系清晰 | 需要构建图 |
3.3 重排(Reranking)
目的:对初始检索结果进行重新排序,提高最相关文档的排名
重排方法:
- 学习排序:使用机器学习模型排序
- 交叉编码器:使用交叉编码器评分
- LLM 排序:使用 LLM 进行排序
- 多维排序:综合多个维度排序
3.4 上下文组织
- 串联方式:简单地拼接检索结果
- 摘要方式:先对检索结果摘要
- 分层方式:按重要性分层组织
- 图谱方式:按关系组织成图
四、RAG 的变体与改进
4.1 Naive RAG vs Advanced RAG
| 方面 | Naive RAG | Advanced RAG |
|---|---|---|
| 查询处理 | 直接检索 | 查询理解、扩展、改写 |
| 检索方法 | 单一方法 | 混合检索、多步检索 |
| 排序 | 基于相似度 | 学习排序、多维排序 |
| 上下文构建 | 简单拼接 | 摘要、分层、图谱 |
| 反馈 | 无 | 用户反馈、自我反馈 |
4.2 关键改进
- 多跳检索:多次迭代检索以获得更相关的信息
- 自适应检索:根据查询动态调整检索策略
- 融合检索:融合多个检索结果
- 迭代生成:在生成过程中进行检索
- 反馈优化:基于反馈不断优化
五、RAG 的应用
5.1 问答系统
- 企业知识库问答
- 学术文献问答
- 客服知识库问答
5.2 内容生成
- 新闻生成
- 报告生成
- 摘要生成
5.3 信息检索
- 搜索引擎
- 推荐系统
- 相关性查询
六、评估指标
6.1 检索质量
| 指标 | 说明 | 计算方法 |
|---|---|---|
| Precision@K | 前K个结果中相关的比例 | 相关数 / K |
| Recall@K | 前K个结果中召回的相关文档比例 | 检索到的相关数 / 总相关数 |
| MRR | 第一个相关结果的排名倒数 | 1 / 第一个相关结果的排名 |
| NDCG | 归一化折扣累计增益 | DCG / IDCG |
6.2 生成质量
- 准确性:答案是否准确
- 完整性:答案是否完整
- 可信度:答案是否可信
- 流畅性:答案是否流畅
6.3 端到端评估
- 用户满意度:用户对系统的满意度
- 任务完成率:系统完成任务的成功率
- 响应时间:系统的响应速度
七、挑战与解决方案
7.1 检索挑战
- 检索错误:检索不到相关文档
- 排序不当:相关文档排名太靠后
- 噪声干扰:检索到无关文档
- 性能瓶颈:检索速度慢
7.2 生成挑战
- 幻觉问题:生成不存在的信息
- 上下文遗忘:忽略检索结果
- 矛盾问题:生成相互矛盾的内容
7.3 解决方案
- 改进检索方法和排序算法
- 优化上下文构建方式
- 使用更强大的生成模型
- 加入验证和纠正机制
- 持续优化和微调
八、最佳实践
8.1 系统设计
- 选择合适的向量数据库
- 优化文本分块策略
- 选择高质量的 Embedding 模型
- 建立有效的索引机制
8.2 优化策略
- 实施混合检索提高准确率
- 使用重排提高相关性
- 优化上下文窗口大小
- 定期评估和改进系统
九、未来方向
- 多模态 RAG:支持文本、图像、音频等多模态
- 动态知识库:实时更新知识库
- 个性化 RAG:根据用户偏好定制
- 可解释 RAG:提高系统的可解释性
- 自适应 RAG:自动调整策略