RAG 入门与实践
学完 Prompt Engineering 和 Context Engineering 之后,最自然的下一步就是 RAG。
因为很多真实场景里,模型不是“凭空回答”,而是需要:
- 查文档
- 查知识库
- 查网页
- 查企业内部资料
- 再基于查到的内容回答
而这件事,正是 RAG 最核心的价值。
1. RAG 是什么
RAG 是 Retrieval-Augmented Generation 的缩写,中文一般叫“检索增强生成”。
它的核心思想很简单:
- 用户先提问
- 系统先去检索相关资料
- 把资料放进上下文
- 再让模型基于这些资料生成答案
所以 RAG 不是让模型“更会背知识 ”,而是让模型“回答前先查资料”。
一句话理解:
RAG = 先检索,再生成
2. 为什么需要 RAG
只靠模型自身参数里的知识,通常会遇到这些问题:
- 知识不是最新的
- 不知道企业私有资料
- 容易产生幻觉
- 回答缺少依据
- 难以处理大量文档
RAG 的意义就在于补上这些短板。
2.1 RAG 最常见的价值
- 回答最新信息
- 回答私有知识库
- 给回答提供依据
- 降低幻觉
- 让回答更可控
3. RAG 的基本流程
一个最基础的 RAG 流程通常长这样:
用户提问Query 处理检索相关文档挑选最相关片段把片段拼进 prompt/context模型生成答案可选:引用来源或做结果验证
可以把它拆成两大阶段:
Retrieval:把相关资料找出来Generation:基于资料组织回答
4. 一个直观例子
假设用户问:
公司的报销流程里,差旅住宿费报销上限是多少?
如果没有 RAG,模型可能:
- 根本不知道
- 乱猜一个数字
- 用通用经验回答
如果有 RAG,系统会:
- 去知识库里检索“报销流程”“住宿费”“差旅”
- 找到公司制度文档中的相关条款
- 把条款片段放进上下文
- 让模型只根据这些资料回答
最终它就能更可靠地回答:
- 上限是多少
- 依据在哪一条
- 如果文档没写,明确说未提及
这就是 RAG 的典型价值。
5. RAG 的核心组件
一个完整的 RAG 系统,通常包括下面这些部分。
5.1 文档源
也就是知识从哪里来,比如:
- Markdown 文档
- 网页
- 帮助中心
- 数据库记录
- Notion、Confluence、飞书文档
- 企业内部知识库
5.2 文档切分
原始文档通常不能整篇直接拿去检索,所以要先切成更小的片段,也就是 chunk。
比如把一篇很长的文档切成:
- 每段 300 到 800 token
- 或按标题、段落、表格结构切分
5.3 向量化
把文本变成向量表示,也就是 embedding。
有了向量之后,系统就可以做语义相似度检索,而不是只靠关键词匹配。
5.4 向量索引 / 检索库
把所有 chunk 的向量存起来,供后续检索使用。
常见实现包括:
- 向量数据库
- 搜索引擎
- 混合检索系统
5.5 Retriever
也就是检索器。它负责根据用户问题找出最相关的文档片段。
5.6 Reranker
有时候检索出的前几十条不够准,这时会再加一个排序器,对候选结果重新打分排序。
5.7 Generator
也就是最终生成答案的模型。它会结合:
- 用户问题
- 检索结果
- 输出要求
来组织最终回答。
6. RAG 的关键概念
6.1 Chunk
Chunk 是文档切分后的片段。
RAG 的效果很大程度上取决于 chunk 切得好不好。
如果 chunk 太大:
- 噪音多
- 检索不精准
- 容易把无关内容带进去
如果 chunk 太小:
- 上下文断裂
- 关键信息被拆散
- 模型读不到完整语义