什么是RAG
RAG(Retrieval-Augmented Generation,检索增强生成)是让大语言模型能够利用外部知识的技术。它结合了检索和生成的优势,成为构建企业知识库应用的标配方案。
学习难度:入门·阅读时间:约10分钟
什么是RAG
定义
RAG是一种结合信息检索和文本生成的技术:
- Retrieval(检索):从知识库中检索相关信息
- Augmented(增强):用检索到的信息增强提示词
- Generation(生成):LLM基于增强的上下文生成回答
核心思想
让模型在回答问题时可以"查阅资料":
- 模型不需要记住所有知识
- 需要时从知识库中检索
- 基于检索结果生成准确的回答
类比
RAG就像是开卷考试:
- 学生(LLM)不需要背下所有内容
- 遇到问题时可以翻书(检索)
- 基于书本内容回答问题
为什么需要RAG
大模型的局限
大语言模型存在固有问题:
- 知识截止:训练数据有截止时间,不知道最新信息
- 幻觉问题:可能编造不存在的事实
- 领域知识不足:对企业内部知识不了解
- 无法更新:更新知识需要重新训练
RAG的解决方案
- ✅ 知识可实时更新(更新知识库即可)
- ✅ 减少幻觉(基于真实文档回答)
- ✅ 支持私有知识(企业内部文档)
- ✅ 可追溯来源(引用原始文档)
成本优势
- 无需重新训练模型
- 只需维护知识库
- 更新成本低、速度快
工作流程
基本流程
- 文档预处理:
- 解析文档(PDF、Word等)
- 切分成小块(Chunk)
- 生成嵌入向量
- 索引存储:
- 将向量存入向量数据库
- 查询处理:
- 将问题转换为向量
- 在向量数据库中检索相似文档
- 生成回答:
- 将检索结果作为上下文
- 构造提示词发送给LLM
- LLM生成最终回答
核心组件
文档处理
- 文档解析器:处理各种格式
- 文本切分器:将长文档切分成小块
- 嵌入模型:将文本转换为向量
向量数据库
- 存储文档向量
- 支持相似度检索
- 主流选择:Pinecone、Milvus、Chroma、Qdrant
检索模块
- 查询向量化
- 相似度计算
- 结果排序和过滤
生成模块
- 提示词模板
- 上下文组装
- LLM调用
RAG vs 微调
对比
| 特性 | RAG | 微调 |
|---|---|---|
| 知识更新 | 容易(更新知识库) | 困难(需重新训练) |
| 成本 | 低 | 高 |
| 知识溯源 | 支持 | 不支持 |
| 领域适应性 | 知识层面 | 行为层面 |
| 实时性 | 支持 | 不支持 |
何时选择RAG
- 知识频繁更新
- 需要引用来源
- 私有知识库应用
- 预算有限
何时选择微调
- 需要改变模型行为方式
- 特定任务格式
- 需要风格适配
结合使用
实践中两者可以结合:
- 微调:适配特定任务和风格
- RAG:提供最新知识和事实
应用场景
企业知识库
- 内部文档问答
- 员工培训助手
- 制度查询
客服系统
- 智能问答
- 产品咨询
- 技术支持
专业领域
- 法律咨询:基于法律条文回答
- 医疗问答:基于医学文献
- 金融分析:基于研报数据
个人助手
- 个人知识管理
- 笔记问答
- 学习助手