news 2026/3/30 1:03:26

什么是 RAG?RAG 的主要流程是什么?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
什么是 RAG?RAG 的主要流程是什么?

RAG(检索增强生成)详解

一、什么是 RAG?

1.定义

RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合了信息检索大语言模型生成的技术,它让 AI 在回答问题时能够先从外部知识库中检索相关信息,然后基于这些信息生成更准确、更可靠的回答。

2.为什么需要 RAG?

传统大语言模型的问题: ┌─────────────────────────────────────┐ │ 问题:2024年苹果公司最新股价是多少?│ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 大模型回答: │ │ "我的训练数据截止到2023年, │ │ 无法提供2024年的信息..." │ └─────────────────────────────────────┘ RAG 的解决方案: ┌─────────────────────────────────────┐ │ 问题:2024年苹果公司最新股价是多少?│ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ 1. 检索:从知识库查找最新股价 │ │ 2. 找到:2024年1月股价为 $185.92 │ │ 3. 生成:基于检索信息回答 │ └─────────────────────────────────────┘ ↓ ┌─────────────────────────────────────┐ │ RAG 回答: │ │ "根据最新数据,2024年1月 │ │ 苹果公司股价为 $185.92" │ └─────────────────────────────────────┘

3.RAG 的核心价值

优势说明
知识更新可以访问最新信息,不受训练数据时间限制
减少幻觉基于真实数据回答,减少编造内容
可解释性可以引用信息来源,提高可信度
领域定制可以接入企业内部知识库
成本效益比重新训练模型更经济

二、RAG 的主要流程

1.整体流程图

┌─────────────────────────────────────────────────────────────┐ │ RAG 完整流程 │ └─────────────────────────────────────────────────────────────┘ 第一阶段:数据准备(离线) ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 原始文档 │ → │ 文档分块 │ → │ 向量化存储 │ │ (PDF/网页) │ │ (Chunking) │ │ (Embedding) │ └──────────────┘ └──────────────┘ └──────────────┘ ↓ ┌──────────────┐ │ 向量数据库 │ │ (Vector DB) │ └──────────────┘ 第二阶段:检索生成(在线) ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ 用户提问 │ → │ 语义检索 │ → │ 提示词构建 │ │ │ │ (Retrieval) │ │ (Prompt) │ └──────────────┘ └──────────────┘ └──────────────┘ ↓ ↓ ┌──────────────┐ ┌──────────────┐ │ 向量数据库 │ │ 大语言模型 │ │ (Vector DB) │ │ (LLM) │ └──────────────┘ └──────────────┘ ↓ ↓ ┌──────────────┐ ┌──────────────┐ │ 相关文档块 │ ← │ 最终回答 │ │ │ │ │ └──────────────┘ └──────────────┘

2.详细步骤解析

阶段一:数据准备(离线处理)
步骤 1:数据收集 ┌─────────────────────────────────────┐ │ 来源: │ │ • PDF 文档 │ │ • Word 文档 │ │ • 网页内容 │ │ • 数据库记录 │ │ • API 数据 │ └─────────────────────────────────────┘ ↓ 步骤 2:数据清洗 ┌─────────────────────────────────────┐ │ 处理: │ │ • 去除格式标签 │ │ • 去除无关内容 │ │ • 统一编码格式 │ │ • 提取纯文本 │ └─────────────────────────────────────┘ ↓ 步骤 3:文档分块(Chunking) ┌─────────────────────────────────────┐ │ 原始文档: │ │ "这是一篇很长的文章,包含很多内容..." │ │ │ │ 分块后: │ │ Chunk 1: "这是一篇很长的文章," │ │ Chunk 2: "包含很多内容," │ │ Chunk 3: "需要合理分块..." │ └─────────────────────────────────────┘ ↓ 步骤 4:向量化(Embedding) ┌─────────────────────────────────────┐ │ 文本 → 向量 │ │ │ │ "苹果公司" → [0.1, -0.2, 0.5, ...] │ │ "水果苹果" → [0.3, 0.1, -0.4, ...] │ │ │ │ 相似文本的向量在空间中距离更近 │ └─────────────────────────────────────┘ ↓ 步骤 5:存储到向量数据库 ┌─────────────────────────────────────┐ │ 向量数据库: │ │ ┌──────────┬──────────────────────┐ │ │ │ 向量 │ 原始文本 │ │ │ ├──────────┼──────────────────────┤ │ │ │ [0.1...] │ "苹果公司是一家..." │ │ │ │ [0.3...] │ "水果苹果很甜..." │ │ │ │ [-0.2...]│ "股价上涨了..." │ │ │ └──────────┴──────────────────────┘ │ └─────────────────────────────────────┘
阶段二:检索生成(在线处理)
步骤 1:用户提问 ┌─────────────────────────────────────┐ │ 用户: │ │ "苹果公司最新的产品是什么?" │ └─────────────────────────────────────┘ ↓ 步骤 2:问题向量化 ┌─────────────────────────────────────┐ │ "苹果公司最新的产品是什么?" │ │ ↓ │ │ [0.15, -0.18, 0.42, ...] │ └─────────────────────────────────────┘ ↓ 步骤 3:语义检索 ┌─────────────────────────────────────┐ │ 在向量数据库中搜索最相似的向量: │ │ │ │ 问题向量:[0.15, -0.18, 0.42, ...] │ │ │ │ 计算相似度: │ │ • [0.1, -0.2, 0.5, ...] → 0.95 ✓ │ │ • [0.3, 0.1, -0.4, ...] → 0.23 │ │ • [-0.2, 0.5, 0.1, ...] → 0.67 │ │ │ │ 返回最相似的 Top-K 个文档块 │ └─────────────────────────────────────┘ ↓ 步骤 4:构建提示词 ┌─────────────────────────────────────┐ │ System Prompt: │ │ "你是一个助手,请基于以下信息回答" │ │ │ │ Retrieved Context: │ │ "苹果公司于2023年发布了iPhone 15, │ │ 配备了A17芯片..." │ │ │ │ User Question: │ │ "苹果公司最新的产品是什么?" │ └─────────────────────────────────────┘ ↓ 步骤 5:大模型生成 ┌─────────────────────────────────────┐ │ LLM 处理: │ │ • 理解上下文 │ │ • 提取关键信息 │ │ • 组织语言 │ │ • 生成回答 │ └─────────────────────────────────────┘ ↓ 步骤 6:返回结果 ┌─────────────────────────────────────┐ │ 回答: │ │ "根据最新信息,苹果公司最新的产品 │ │ 是iPhone 15系列,于2023年发布, │ │ 配备了A17芯片,具有更好的性能..." │ └─────────────────────────────────────┘

三、RAG 核心组件详解

1.文档分块(Chunking)

# 为什么需要分块?# • 向量模型有长度限制# • 提高检索精度# • 便于管理# 分块策略┌─────────────────────────────────────┐ │ 策略1:固定大小分块 │ │ • 每块512tokens │ │ • 简单但可能切断语义 │ └─────────────────────────────────────┘ ┌─────────────────────────────────────┐ │ 策略2:语义分块 │ │ • 按段落、章节分块 │ │ • 保持语义完整性 │ └─────────────────────────────────────┘ ┌─────────────────────────────────────┐ │ 策略3:滑动窗口 │ │ • 块之间有重叠 │ │ • 避免丢失边界信息 │ └─────────────────────────────────────┘

2.向量化(Embedding)

# 常用 Embedding 模型┌─────────────────────────────────────┐ │ OpenAI:text-embedding-ada-002│ │ •1536维向量 │ │ • 支持多语言 │ └─────────────────────────────────────┘ ┌─────────────────────────────────────┐ │ HuggingFace:sentence-transformers │ │ •all-MiniLM-L6-v2 │ │ • 开源免费 │ └─────────────────────────────────────┘ ┌─────────────────────────────────────┐ │ 中文模型: │ │ • text2vec-base-chinese │ │ • m3e-base │ └─────────────────────────────────────┘

3.向量数据库

┌─────────────────────────────────────┐ │ 向量数据库对比 │ ├─────────────────────────────────────┤ │ Pinecone • 云服务,易用 │ │ Milvus • 开源,功能强大 │ │ ChromaDB • 轻量级,易集成 │ │ Weaviate • 语义搜索 │ │ Qdrant • 高性能,开源 │ │ FAISS • Meta 开发,纯向量 │ └─────────────────────────────────────┘

4.检索策略

# 检索方式┌─────────────────────────────────────┐ │1.向量相似度检索 │ │ • 计算余弦相似度 │ │ • 返回 Top-K 结果 │ └─────────────────────────────────────┘ ┌─────────────────────────────────────┐ │2.混合检索(Hybrid Search) │ │ • 向量检索+关键词检索 │ │ • 结合语义和精确匹配 │ └─────────────────────────────────────┘ ┌─────────────────────────────────────┐ │3.重排序(Reranking) │ │ • 先检索更多结果 │ │ • 用更精确的模型重新排序 │ └─────────────────────────────────────┘

四、RAG 实际应用场景

1.企业知识库问答

场景:员工查询公司政策 用户:"公司的报销流程是什么?" ↓ RAG 检索:从员工手册中找到报销流程 ↓ 回答:"根据公司政策,报销流程如下: 1. 填写报销单 2. 附上发票 3. 部门经理审批 4. 财务审核 5. 5-7个工作日到账"

2.客户服务智能助手

场景:客户咨询产品问题 用户:"这个产品保修期多长?" ↓ RAG 检索:从产品文档中找到保修信息 ↓ 回答:"该产品保修期为2年, 覆盖非人为损坏的故障"

3.法律文档检索

场景:律师查找相关法条 用户:"合同违约的法律责任是什么?" ↓ RAG 检索:从法律数据库中找到相关条款 ↓ 回答:"根据《民法典》第577条, 当事人一方不履行合同义务..."

4.医疗健康咨询

场景:患者查询疾病信息 用户:"高血压的饮食注意事项?" ↓ RAG 检索:从医学指南中找到建议 ↓ 回答:"高血压患者饮食应注意: 1. 低盐饮食 2. 控制脂肪摄入 3. 多吃蔬菜水果..."

五、RAG 的优化策略

1.数据质量优化

┌─────────────────────────────────────┐ │ • 清洗噪声数据 │ │ • 去除重复内容 │ │ • 标准化格式 │ │ • 添加元数据 │ └─────────────────────────────────────┘

2.检索优化

┌─────────────────────────────────────┐ │ • 调整分块大小 │ │ • 优化 Embedding 模型 │ │ • 使用混合检索 │ │ • 添加重排序步骤 │ └─────────────────────────────────────┘

3.生成优化

┌─────────────────────────────────────┐ │ • 优化提示词设计 │ │ • 添加引用来源 │ │ • 控制回答长度 │ │ • 添加置信度评分 │ └─────────────────────────────────────┘

六、RAG vs 其他方法对比

对比项纯 LLM微调模型RAG
知识更新困难中等容易
幻觉问题严重中等较少
可解释性
实现成本中等
领域适配困难容易容易
数据依赖训练数据领域数据外部知识库

七、总结

RAG 核心要点

┌─────────────────────────────────────┐ │ RAG = 检索 + 生成 │ └─────────────────────────────────────┘ 主要流程: 1. 数据准备 → 分块 → 向量化 → 存储 2. 用户提问 → 向量化 → 检索 → 生成 核心优势: • 知识实时更新 • 减少幻觉 • 可解释性强 • 成本较低 适用场景: • 企业知识库 • 客户服务 • 文档问答 • 领域咨询

快速记忆

RAG 就像开卷考试: • 考试时可以查阅资料(检索) • 基于资料回答问题(生成) • 比闭卷考试更准确(减少幻觉)

RAG 是目前大语言模型应用中最实用的技术之一,它让 AI 能够利用外部知识,提供更准确、更可靠的回答!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/28 2:54:50

大模型训练全周期详解:从预训练到RLHF的完整技术路径

本文系统梳理了大语言模型训练全周期的四个核心阶段:预训练、有监督微调、奖励建模和强化学习。预训练阶段通过海量数据构建基础语言能力;SFT阶段使模型学会遵循人类指令;奖励建模和RLHF阶段则将人类价值观编码到模型中,提升输出的…

作者头像 李华
网站建设 2026/3/27 19:35:37

构建AI Agent的自适应学习系统

构建AI Agent的自适应学习系统 关键词:AI Agent、自适应学习系统、机器学习、强化学习、神经网络 摘要:本文旨在深入探讨构建AI Agent的自适应学习系统这一前沿技术领域。通过详细阐述自适应学习系统的核心概念、算法原理、数学模型,结合项目实战案例,展示如何实现一个高效…

作者头像 李华
网站建设 2026/3/28 18:35:26

搭建终身学习系统时,AI应用架构师容易犯哪些错?(避坑指南)

AI应用架构师搭建终身学习系统的10个常见坑与避坑指南 副标题:从数据管道到模型部署的实践教训 摘要/引言 在AI从“静态工具”转向“动态系统”的今天,终身学习(Lifelong Learning) 已成为企业保持AI竞争力的核心能力——它让模型…

作者头像 李华
网站建设 2026/3/27 14:06:23

前端萌新别慌!30分钟搞懂CSS阴影:text-shadow和box-shadow实

前端萌新别慌!30分钟搞懂CSS阴影:text-shadow和box-shadow实 前端萌新别慌!30分钟搞懂CSS阴影:text-shadow和box-shadow实战指南先别急着写代码,咱先吐槽五分钟先整点能跑的,把士气提上来text-shadow&#…

作者头像 李华
网站建设 2026/3/27 13:17:34

指针进阶:二级指针与指针的指针的应用场景

指针进阶:二级指针与指针的指针的应用场景 在C指针学习中,二级指针(又称指针的指针)是从基础指针迈向进阶的关键节点。前文我们了解到,一级指针存储的是普通变量的内存地址,而二级指针的核心是“存储一级指…

作者头像 李华