
RAGRetrieval-Augmented Generation检索增强生成是当前企业落地大模型应用非常常见的一种技术方案。它的核心思想很简单大模型负责理解和生成外部知识库负责提供实时、准确的知识。RAG 工作流程的内容对一个完整 RAG 系统从离线知识库构建 → 在线问题检索 → 重排序 → Prompt 增强 → LLM 生成 → 答案溯源进行完整拆解。什么是 RAGRAG 的全称是Retrieval-Augmented Generation中文叫检索增强生成简单来说RAG 并不是让大模型重新学习一批知识而是在用户提问的时候用户问题 ↓ 从外部知识库检索相关知识 ↓ 把检索结果作为上下文 ↓ 连同用户问题一起交给 LLM ↓ LLM 根据这些资料生成答案可以把 RAG 理解成给大模型准备了一本可以实时查询的“参考资料”。大模型本身不需要把企业内部文档全部记到参数里而是在回答问题之前先从知识库中找到相关资料再基于这些资料进行回答。这也是 RAG 和传统搜索系统最大的区别传统搜索 用户问题 ↓ 搜索引擎 ↓ 返回文档而 RAG 是用户问题 ↓ 检索知识 ↓ 筛选相关知识 ↓ 构造 Prompt ↓ LLM 理解 ↓ 生成自然语言答案所以RAG Retrieval检索 Augmented增强 Generation生成为什么需要 RAG理解 RAG首先要理解一个问题为什么不能直接让大模型回答因为 LLM 本身存在一个非常明显的问题大模型存在“知识冻结”一个大模型经过训练之后它所掌握的知识主要存在于模型参数中。例如模型训练数据 ↓ 模型训练 ↓ 模型参数 ↓ LLM如果公司内部有一份新的2026 年公司员工手册.pdf大模型并不会因为这份 PDF 出现就自动知道里面的内容。如果企业今天修改了请假制度 报销制度 薪资制度 技术规范 产品文档也不可能每修改一次文档就重新训练一次大模型。这时候 RAG 就非常有价值。RAG 和微调有什么区别这是面试中非常容易被问到的问题。RAGRAG 的思路是知识放在外部知识库里需要的时候检索出来。企业知识 ↓ 知识库 ↓ 用户提问 ↓ 检索知识 ↓ Prompt ↓ LLMRAG 不需要修改 LLM 的核心参数。Fine-tuning微调的思路则不同训练数据 ↓ Fine-tuning ↓ 修改模型参数 ↓ 得到新的模型所以两者可以简单理解成对比项RAGFine-tuning知识存储外部知识库模型参数是否修改模型参数否是知识更新快相对较慢私有知识非常适合可以最新数据非常适合不适合频繁更新可溯源可以较困难成本相对较低相对较高一句话总结微调是让模型“学会”RAG 是让模型“查资料”。一个完整 RAG 系统分成哪两个阶段一个完整的 RAG 系统可以拆成两个核心阶段RAG │ ┌─────────┴─────────┐ │ │ 离线阶段 在线阶段 Indexing Retrieval │ │ 构建知识库 用户提问 │ │ 文档处理 检索知识 │ │ 向量化 Rerank │ │ 数据入库 Prompt │ LLM │ 最终答案简单来说离线阶段负责“把知识整理好”。在线阶段负责“找到知识并回答问题”。RAG 离线阶段知识库是怎么建立的离线阶段也可以叫Indexing / 索引阶段它的核心目标是把原始文档转换成能够被快速检索的知识。整体流程原始文档 ↓ 文档加载 ↓ 文本解析 ↓ 文档清洗 ↓ Chunking ↓ Embedding ↓ 向量数据库下面逐个分析。第一步文档加载 Document Loading企业中的知识来源非常复杂。例如PDF Word Excel PPT Markdown HTML 网页 数据库 接口数据 企业 Wiki 代码仓库 FAQ所以第一步需要做的事情就是把各种数据源统一读取出来。例如员工手册.pdf 产品说明.docx 技术文档.md 公司官网.html 数据库中的 FAQ经过文档加载之后统一转换成系统可以处理的文本数据。可以理解为PDF ──────┐ Word ─────┤ Markdown ─┤ HTML ─────┤ 数据库 ───┤ 网页 ─────┤ ↓ Document ↓ Text在实际开发中可以使用 LangChain、LlamaIndex 等框架提供的 Document Loader也可以根据企业数据源自己开发解析器。第二步文档清洗原始文档通常不能直接拿去做 Embedding。例如 PDF 解析之后可能出现公司员工手册 第 一 页 员工福利 2026 年 xxxxxxxxxxxxx 页码1其中页码 页眉 页脚 重复标题 HTML 标签 无意义符号这些内容实际上没有太大的检索价值。所以通常需要进行数据清洗原始文档 ↓ 去除页眉 ↓ 去除页脚 ↓ 去除重复内容 ↓ 清理特殊字符 ↓ 结构化文本如果是企业级 RAG这一步其实非常重要。因为垃圾进垃圾出。知识库原始数据质量不好后面的 Embedding、检索、Rerank 再强也很难得到理想结果。第三步Chunking 文档切割这是 RAG 中非常核心的一步。为什么因为你不能把一份 100 页的 PDF 整体转换成一个向量。例如员工手册.pdf │ ├── 公司介绍 ├── 入职流程 ├── 考勤制度 ├── 请假制度 ├── 加班制度 ├── 薪资制度 ├── 报销制度 └── 离职流程如果整个 PDF 只生成一个 Embedding员工手册.pdf ↓ Embedding ↓ 一个向量那么这个向量包含的信息太多具体语义容易被“平均掉”。所以需要进行切分完整文档 ↓ Chunk 1 Chunk 2 Chunk 3 Chunk 4 Chunk 5 ...例如Chunk1 公司员工入职需要提交身份证、学历证明…… Chunk 2 员工每月考勤时间为…… Chunk 3 员工请假需要提前提交申请…… Chunk 4 员工报销需要提供发票……这样每个 Chunk 都可以成为一个独立的知识单元。Chunk 为什么不能太大也不能太小这是 RAG 中非常经典的问题。Chunk 太大例如20005000 Token可能包含大量无关内容员工入职 考勤 请假 报销 离职 薪资 福利用户问“公司请假需要什么手续”结果召回整个大文档。这样会导致上下文变长 ↓ Token 增加 ↓ 噪声增加 ↓ LLM 理解难度增加Chunk 太小例如只有 3050 Token又可能导致语义不完整。例如原文员工请假超过三天 需要提交部门负责人审批。如果切成Chunk1 员工请假超过三天和Chunk2 需要提交部门负责人审批那么两个 Chunk 单独看都缺少完整语义。所以需要控制 Chunk 大小实践中通常需要根据具体场景进行测试。一个常见思路是Chunk Size 5001000 Token Overlap 50200 Token但这并不是固定标准。真正合理的 Chunk 大小应该根据文档类型 Embedding 模型 查询类型 上下文长度 检索效果综合确定。什么是 Chunk OverlapChunk Overlap 指的是相邻 Chunk 之间保留一部分重复内容。例如Chunk 1 AB C D E F G H Chunk 2 E F G H I J K L其中E F G H就是 Overlap。为什么需要这样做因为直接切割很容易把一个完整语义拆开。有了 OverlapChunk 1 ↓ AB C D E F G E F G ↓ Chunk 2 E F G H I J K就能够降低语义被切断的概率。第四步Embedding 向量化Chunk 完成之后就进入 RAG 非常核心的一步EmbeddingEmbedding 的作用是把文本转换成一个高维向量。例如“公司年假有多少天”经过 Embedding 模型[ 0.123, -0.234, 0.875, ... ]最终形成一个高维向量。可以简单理解成文本 ↓ Embedding Model ↓ 向量Embedding 到底有什么用它解决的是一个非常关键的问题如何让计算机理解“两个文本的意思是否相近”例如苹果手机怎么截图和iPhone 如何截屏虽然关键词不完全一样苹果手机 ≠ iPhone 截图 ≠ 截屏但是它们表达的语义非常接近。Embedding 模型会尽可能让向量 A ≈ 向量 B而对于苹果手机怎么截图和今天北京天气怎么样这样的文本向量距离就会比较远。因此可以把 Embedding 理解成把自然语言转换成一个可以进行数学计算的“语义坐标”。第五步向量入库完成 Embedding 后需要把数据存储起来。通常会保存Chunk 文本 Embedding 向量 Metadata例如{ ”text”: ”员工请假超过三天需要提交部门负责人审批。”, ”vector”: [0.12, -0.23, 0.87, ”...”], ”metadata”: { ”document”: ”员工手册.pdf”, ”page”: 15, ”department”: ”HR” } }然后存入向量数据库。常见的向量数据库包括Milvus Qdrant Weaviate Chroma实际生产中也可以使用支持向量检索能力的传统数据库或搜索系统。到这里离线阶段完成整个离线流程可以总结成PDF / Word / Markdown / HTML ↓ 文档加载 ↓ 数据清洗 ↓ Chunk 文档切割 ↓ Embedding 向量化 ↓ 向量数据库最终形成知识库 │ ┌────────┼────────┐ ↓ ↓ ↓ Chunk Vector Metadata │ │ │ └────────┼────────┘ ↓ 等待用户查询RAG 在线阶段用户提问之后发生什么真正有意思的部分来了。用户输入“公司年假最多可以累计多少天”RAG 并不会直接把这个问题交给 LLM。它通常需要经过一套完整的检索链路用户问题 ↓ Query 处理 ↓ Query Rewrite ↓ Embedding ↓ 向量检索 ↓ Top-K 召回 ↓ Rerank ↓ Top-N 精排结果 ↓ 构造 Prompt ↓ LLM ↓ 生成答案 ↓ 返回用户这就是 RAG 在线阶段的核心流程。第一步用户输入 Query假设用户输入公司年假最多可以累计多少天这个 Query 看起来已经比较明确。但真实用户可能这样问我去年没休完的假怎么办或者之前说的那个假期政策呢甚至那个最多能留多少这些问题脱离上下文后很难直接检索。所以需要进行 Query 处理。第二步Query Rewrite 查询改写Query Rewrite 的作用就是把用户原始问题改写成更适合检索的问题。例如用户之前说的那个假期最多能留多少经过 LLM 改写公司未使用的年假最多可以累计多少天这样检索系统就更容易找到相关内容。Query Rewrite 可以解决什么问题主要包括1. 口语化那个东西怎么申请 ↓ 公司报销流程如何申请2. 指代问题它什么时候生效 ↓ 2026年员工新考勤制度什么时候生效3. 上下文补全那最多是多少 ↓ 公司年假最多可以累计多少天因此Query Rewrite 的核心目的是把“用户语言”转换成“检索语言”。第三步Query EmbeddingQuery 处理完成之后同样需要经过 Embedding。例如公司年假最多可以累计多少天 ↓ Query Model然后拿这个 Query Vector 去向量数据库中进行搜索。第四步向量检索——粗排向量数据库中已经存在大量 ChunkChunk1 Chunk 2 Chunk 3 ... Chunk 1000000现在系统拿 Query VectorQ去寻找与它最相似的向量Q │ ├── Chunk 102 ├── Chunk 587 ├── Chunk 923 ├── Chunk 1204 ├── Chunk 3288 └── ...这一步叫向量检索 / Semantic Search通常会返回 Top-KTop20 Top50 Top100具体数量根据系统规模和实际效果进行调整。为什么向量检索叫“粗排”因为它的主要任务不是最终判断“这个 Chunk 到底是不是最适合回答问题”而是从海量数据中快速找出一批候选结果。例如100 万个 Chunk ↓ 向量检索 ↓ Top50从 100 万个结果缩小到 50 个。所以它更像第一轮筛选。优点是速度快缺点是精度不一定最高因为单纯依赖向量距离并不一定能完全理解 Query 和 Chunk 之间的复杂关系。第五步Rerank 精排向量检索之后一般还会增加Rerank重排序例如粗排得到Top20然后Query Chunk 1 Chunk 2 Chunk 3 ... Chunk 20交给 Rerank 模型进行进一步判断。Rerank 模型会更加深入地判断Query 和 Chunk 到底相关不相关然后重新打分Chunk8 0.98 Chunk 3 0.95 Chunk 15 0.92 Chunk 2 0.73 Chunk 11 0.52 ...最终只保留Top3 Top5作为真正交给 LLM 的上下文。粗排和精排到底有什么区别可以用招聘来理解。假设公司收到10000 份简历第一轮关键词 / 简历筛选 ↓ 500 人这就是粗排第二轮面试官深入评估 ↓ 10 人这就是精排所以向量检索 ↓ 快速找候选 ↓ Rerank ↓ 精准筛选一句话粗排负责“找得多”精排负责“找得准”。第六步构造增强 Prompt经过 Rerank 之后我们终于拿到了真正有价值的知识。例如Chunk1 员工未使用的年假可以累计到下一年度 最多累计 5 天。 Chunk 2 员工申请年假需要提前提交申请。现在不能只把这些文本直接丢给 LLM。还需要构造一个增强 Prompt。例如你是一名企业 HR 助手。 请根据下面提供的参考资料回答用户问题。 要求 1. 优先依据参考资料回答。 2. 不要编造资料中不存在的信息。 3. 如果参考资料无法回答请明确告诉用户无法确定。 4. 可以对资料进行总结但不要改变原始含义。 参考资料 [资料 1] 员工未使用的年假可以累计到下一年度 最多累计 5 天。 [资料 2] 员工申请年假需要提前提交申请。 用户问题 公司年假最多可以累计多少天这一步就是Prompt Augmentation / 上下文增强第七步LLM 生成最终答案接下来才真正进入大模型。LLM 接收到System Prompt 参考资料 用户问题然后进行理解问题 ↓ 理解参考资料 ↓ 提取相关信息 ↓ 组织语言 ↓ 生成答案最终可能回答根据公司员工手册未使用的年假可以累计到下一年度但最多累计 5 天。注意LLM 并不是直接从知识库里“复制答案”。而是读取检索结果 → 理解上下文 → 根据上下文生成自然语言答案。这就是 RAG 中的Generation。RAG 为什么可以降低幻觉普通 LLM用户问题 ↓ LLM ↓ 根据参数中的知识回答如果模型不知道就可能猜测 推理 编造最终产生幻觉HallucinationRAG用户问题 ↓ 检索真实资料 ↓ 资料作为 Context ↓ LLM ↓ 基于资料回答Prompt 还可以明确要求只能根据参考资料回答。 如果参考资料没有相关内容 请回答“根据现有资料无法确定”。这样能够在一定程度上降低模型胡编乱造的概率。不过需要注意RAG 并不能 100% 消除幻觉。如果检索结果本身就是错误的LLM 依然可能生成错误答案。所以 RAG 的效果不仅取决于 LLM也取决于数据质量 Chunk 策略 Embedding 召回 Rerank Prompt LLM第八步答案溯源一个优秀的企业级 RAG 系统通常不仅返回答案还会返回答案 引用来源例如公司未使用的年假最多可以累计 5 天。来源《公司员工手册》 第 15 页甚至可以做到答案 公司年假最多可以累计 5 天。 参考来源 公司员工手册.pdf 第 15 页这样用户就可以验证答案。因此 RAG 相比单纯 LLM一个非常重要的优势就是答案具备知识来源和一定的可追溯性。把整个 RAG 流程串起来现在把前面的内容全部连接起来。离线阶段原始知识 │ ┌─────────┼─────────┐ ↓ ↓ ↓ PDF Word Markdown │ │ │ └─────────┼─────────┘ ↓ 文档加载 ↓ 文档清洗 ↓ Chunking ↓ Embedding ↓ 向量 文本 Metadata ↓ 向量数据库在线阶段用户问题 │ ↓ Query 处理 │ ↓ Query Rewrite │ ↓ Query Embedding │ ↓ 向量数据库 │ ↓ Top-K 粗排 │ ↓ Rerank 精排 │ ↓ Top-N 相关 Chunk │ ↓ 构造增强 Prompt │ ↓ LLM │ ↓ 生成答案 │ ↓ 引用来源 │ ↓ 返回用户一个完整 RAG 请求到底经历了什么假设用户问“公司的年假最多可以累计多少天”系统实际经历的过程可以理解成① 用户提问 “公司的年假最多可以累计多少天” ↓ ② Query Rewrite “公司未使用的年假最多可以累计多少天” ↓ ③ Query Embedding 转换成向量 [0.123, -0.456, 0.789, ...] ↓ ④ 向量检索 从 100 万个 Chunk 中召回 Top20 ↓ ⑤ Rerank 重新计算 Query 与 Chunk 的相关性 ↓ ⑥ Top-N 最终保留 Top3 ↓ ⑦ Prompt 用户问题 相关知识 系统指令 ↓ ⑧ LLM 理解上下文并生成答案 ↓ ⑨ Citation 返回答案和知识来源这就是一个完整的 RAG 请求。RAG 的核心其实可以浓缩成一句话如果面试官问“你能不能用一句话解释 RAG”可以回答RAG 是一种让大模型在生成答案之前从外部知识库检索相关信息并将这些信息作为上下文提供给 LLM从而让模型基于实时、私有、可追溯的知识生成答案的技术方案。如果继续问“完整流程是什么”直接回答离线阶段 文档加载 → 文档清洗 → Chunking → Embedding → 向量数据库 在线阶段 用户 Query → Query Rewrite → Query Embedding → 向量检索 → Top-K 粗排 → Rerank 精排 → 构造 Prompt → LLM → 生成答案 → 返回引用来源这个回答基本就把 RAG 的主干讲清楚了。RAG 最核心的几个技术点如果准备 RAG 面试建议重点掌握下面这些知识Chunking解决如何把长文档切成适合检索的知识片段Embedding解决如何把文本转换成可以进行语义相似度计算的向量Vector Database解决如何快速从大量向量中找到相似内容Query Rewrite解决如何把用户口语化、模糊的问题转换成更适合检索的 QueryRetrieval解决如何从海量知识中召回可能相关的内容Rerank解决如何从召回结果中进一步筛选真正相关的内容Prompt Augmentation解决如何把检索到的知识正确地交给 LLMLLM Generation解决如何根据用户问题和参考知识生成最终答案Citation解决如何让用户知道答案来自哪里RAG 为什么适合企业应用企业内部有大量产品文档 技术文档 员工手册 规章制度 客户资料 FAQ 知识库 项目文档 API 文档这些知识具有几个特点经常变化 数据量巨大 存在大量私有数据 不适合直接训练到模型里RAG 恰好可以解决这些问题。例如公司修改员工制度 ↓ 更新知识库 ↓ 重新 Chunk ↓ 重新 Embedding ↓ 更新向量数据库 ↓ 用户立即可以查询新知识不需要重新训练大模型。这就是 RAG 的一个非常重要的优势知识和模型解耦。RAG 的核心优势知识可以快速更新新增文档 ↓ 知识库更新 ↓ 立即可以检索不需要重新训练模型。支持企业私有知识例如公司内部技术文档 内部制度 内部 FAQ 客户资料 项目资料都可以放入企业自己的知识库。降低模型幻觉通过检索真实资料 Prompt 约束让模型尽可能基于事实回答。支持答案溯源可以返回答案 文档 章节 页码提高答案可信度。成本相对可控相比为了增加大量私有知识而频繁进行模型训练RAG 通常更加灵活。RAG 并不是简单的“向量搜索”很多初学者会把 RAG 理解成用户问题 ↓ 向量数据库 ↓ 查数据 ↓ LLM实际上生产级 RAG 往往复杂得多。一个更完整的系统可能是用户 Query │ ↓ Query Rewrite │ ┌──────────┴──────────┐ ↓ ↓ 向量检索 关键词检索 │ │ └──────────┬──────────┘ ↓ 多路召回 ↓ 粗排 ↓ Rerank ↓ Context ↓ Prompt 构建 ↓ LLM ↓ Answer Citation也就是说现代 RAG 已经从简单的“检索 生成”逐渐发展成一套完整的知识检索与生成系统。面试时如何完整回答“RAG 工作流程”如果面试官问“请详细讲一下 RAG 的完整工作流程。”可以按照下面这个逻辑回答第一步先解释 RAGRAG 全称 Retrieval-Augmented Generation即检索增强生成。它主要解决 LLM 知识冻结、私有知识无法覆盖以及实时知识更新困难的问题。第二步介绍离线阶段离线阶段主要负责构建知识库。首先通过 Document Loader 加载 PDF、Word、Markdown、HTML 等数据然后进行数据清洗和 Chunking把长文档切成多个语义完整的 Chunk。之后使用 Embedding 模型将每个 Chunk 转换成向量并将文本 向量 Metadata保存到向量数据库中。第三步介绍在线阶段用户提问后系统首先对 Query 进行预处理和 Query Rewrite让问题更加适合检索。然后对 Query 做 Embedding去向量数据库进行相似度搜索召回 Top-K 结果。第四步介绍 Rerank召回结果只是粗排结果因此可以使用 Rerank 模型对候选 Chunk 重新排序筛选出真正相关的 Top-N 内容。第五步介绍 Prompt将用户问题 检索到的相关知识 系统指令组合成增强 Prompt。第六步介绍 LLM最后把增强后的 Prompt 交给 LLM让 LLM 基于检索到的上下文生成最终答案。如果系统设计完善还可以同时返回答案 引用文档 来源位置实现答案溯源。最终总结RAG 最核心的思想其实非常简单不要要求大模型把所有知识都记在脑子里而是在它回答问题的时候先给它找资料。整个 RAG 可以浓缩成下面这张流程图┌──────────────────────┐ │ 离线阶段 | │ 构建企业知识库 | └──────────┬───────────┘ │ ↓ 文档加载 ↓ 数据清洗 ↓ Chunking ↓ Embedding ↓ 向量 文本 Metadata ↓ 向量数据库 │ ═══════════════════════════════╪══════════════════════════════ │ 在线阶段 │ ↓ 用户 Query ↓ Query Rewrite ↓ Query Embedding ↓ 向量检索 ↓ Top-K 粗排 ↓ Rerank 精排 ↓ Top-N 相关知识 ↓ 构造增强 Prompt ↓ LLM ↓ 生成最终答案 ↓ Citation / 溯源 ↓ 返回用户所以真正完整的 RAG 并不是简单的搜索 → LLM而是一条完整的数据处理与生成链路知识进入系统 → 文档解析 → 文档切割 → 向量化 → 建立索引 → 用户提问 → Query 改写 → 向量召回 → 粗排 → Rerank 精排 → Context 构建 → Prompt 增强 → LLM 生成 → 答案溯源一句话记忆离线阶段负责“把知识整理好”在线阶段负责“把正确的知识找出来再让大模型基于这些知识回答问题”。这也是理解 RAG 最重要的一条主线。学AI大模型的正确顺序千万不要搞错了2026年AI风口已来各行各业的AI渗透肉眼可见超多公司要么转型做AI相关产品要么高薪挖AI技术人才机遇直接摆在眼前有往AI方向发展或者本身有后端编程基础的朋友直接冲AI大模型应用开发转岗超合适就算暂时不打算转岗了解大模型、RAG、Prompt、Agent这些热门概念能上手做简单项目也绝对是求职加分王给大家整理了超全最新的AI大模型应用开发学习清单和资料手把手帮你快速入门学习路线:✅大模型基础认知—大模型核心原理、发展历程、主流模型GPT、文心一言等特点解析✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑✅开发基础能力—Python进阶、API接口调用、大模型开发框架LangChain等实操✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经以上6大模块看似清晰好上手实则每个部分都有扎实的核心内容需要吃透我把大模型的学习全流程已经整理好了抓住AI时代风口轻松解锁职业新可能希望大家都能把握机遇实现薪资/职业跃迁这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】