上一节从概念层面介绍了 RAG 的基本定义,这一节我们把它拆解成一个用户提问后真实发生的完整链路。整个流程可以概括为五个步骤,每一步都很具体,没有黑箱。
1. 用户提问
用户以自然语言输入问题,比如:“公司差旅标准里,住宿费的上限是多少?”
在这一步,系统接收到的是未经处理的原始问题。除了问题文本本身,可能还会附带一些元信息(如用户身份、部门),用于后续的权限控制,但核心流程的起点就是这句话。
2. 查询向量化
RAG 需要在知识库中“找相似内容”,但计算机不能直接拿两句中文做语义比较。所以这一步会把用户问题转换成向量,也就是一串固定长度的数字,代表这句话的语义。
具体做法是:使用与建库时相同的嵌入模型,将用户问题输入模型,输出一个向量。这步很快,通常只需几十毫秒。
关键约束:查询向量化所用的模型,必须和知识库构建时使用的嵌入模型完全一致。否则向量空间不对齐,检索结果会完全错误。
3. 向量检索
拿到问题向量后,系统在向量数据库中进行相似度搜索。向量数据库里存着所有文档切片的向量,以及每个切片对应的原始文本和元数据(来源、页码等)。
检索过程本质上是计算“问题向量”与“所有切片向量”之间的距离(通常是余弦相似度),然后按相似度从高到低排序,取最前面的几条(比如 top‑5)。这一步通常也能在毫秒级完成。
返回结果不只是向量得分,还包含每个切片完整的文本内容和来源信息。这些内容是下一步生成的基础。
4. 上下文拼接
检索到的几个文本片段还需要“组装”成大模型能够理解的格式,这一步被称为提示词构建。
典型的做法是使用一个预先设计好的模板,比如:
你是一个基于公司内部资料回答问题的助手。请严格根据以下提供的资料回答问题。
如果资料中找不到相关信息,请直接说明“资料中未找到相关内容”。
资料:
[片段1] 来自《差旅政策》第3条:一线城市住宿标准为500元/晚,其他城市400元/晚。
[片段2] 来自《差旅政策补充说明》:经济型酒店不受上述标准限制,可凭票实报实销。
问题:公司差旅标准里,住宿费的上限是多少?
这个过程会把零散的检索结果、问题指令、行为约束整合成一个结构化的提示,直接决定了模型会不会跑偏。
5. 大模型生成答案
拼接好的提示词被发送给大语言模型。模型在阅读提示中的“资料”后,基于这些内容生成回答。
针对上面的例子,模型可能输出:
“根据《差旅政策》第3条,一线城市住宿标准为500元/晚,其他城市为400元/晚。不过补充说明也提到,经济型酒店可以凭票实报实销,不受上述标准限制。建议出差前确认酒店类型。”
生成的回答可以随附资料来源,供用户点击查阅原文。
整条链路的时间消耗
一个优化得当的 RAG 系统,这五步的总耗时通常在 1‑3 秒以内(取决于模型推理速度和检索库规模)。主要时间瓶颈在最后一步大模型生成,前面的向量化和检索几乎可以忽略不计。
这五个步骤串联起来,就是 RAG 回答一个问题的完整过程。后续章节中提到的各种优化(如检索策略调整、重排序、提示词工程),本质上是在这条链路的某个环节上做改进,让最终回答更准、更快、更可控。