跳到正文

RAG 端到端工作流程

从查询到答案的数据流及可靠性边界,补充适用边界与工程取舍

原题:请详细解释检索增强生成(RAG)的基本原理、系统架构、工作流程以及相比纯生成模型的优势。

模型微调 · 百度真题

30 秒回答

  1. RAG核心原理:检索+生成的两阶段架构
  2. 系统组件:索引模块、检索模块、生成模块
  3. 工作流程:查询向量化、相似度检索、上下文拼接、LLM生成
  4. 核心优势:缓解幻觉、知识实时更新、可溯源、降低微调成本

回答与解析

答案要点

  • RAG核心原理:检索+生成的两阶段架构
  • 系统组件:索引模块、检索模块、生成模块
  • 工作流程:查询向量化、相似度检索、上下文拼接、LLM生成
  • 核心优势:缓解幻觉、知识实时更新、可溯源、降低微调成本

基本原理

RAG(Retrieval-Augmented Generation)将外部知识检索大模型生成结合,解决纯生成模型的知识截止和幻觉问题。

核心思想:不依赖模型参数记忆知识,而是动态检索相关文档作为上下文,让模型基于检索结果生成回答。


系统架构

模块 功能
索引模块 文档切分 → Embedding编码 → 向量数据库存储
检索模块 查询向量化 → 相似度搜索(Top-K召回)
生成模块 检索结果+原始查询 → 拼接Prompt → LLM生成

工作流程

  1. 离线准备:文档分块 → 向量化(如BGE、OpenAI Embedding)→ 入库(Milvus/Faiss/Elasticsearch)
  2. 在线查询:用户问题向量化 → 向量相似度检索 → 取Top-K相关文本块
  3. 增强生成:将检索结果作为上下文,与问题一起输入LLM,生成最终回答

核心优势

对比维度 纯生成模型 RAG
知识时效性 训练数据截止,无法更新 知识库实时更新,无需重训
幻觉问题 容易编造事实 基于检索文档生成,可控可溯源
成本 全量微调昂贵 只需更新知识库,零训练成本
可解释性 黑盒生成 可展示引用来源,便于审计

典型变体

  • Naive RAG:基础检索+生成
  • Advanced RAG:查询重写、重排序(Rerank)、混合检索(向量+关键词)
  • Modular RAG:引入路由、多跳检索、主动选择等复杂流程

口语版讲法(约4分钟)

  • 一句话定位:RAG本质是给大模型配外挂知识库
  • 核心模块:索引、检索、生成,重点讲检索的工程取舍
  • 工作流程:离线建库、在线召回、拼接生成,注意切分和排序的坑
  • 优势对比:和微调划清边界,RAG负责实时和可溯源
  • 风险与收尾:知识质量决定上限,我更倾向混合检索加重排

这道题其实问的是,怎么让大模型在不重训的情况下,能回答实时、专业、可溯源的问题。RAG的核心思路很简单:不把知识全塞进模型参数里,而是动态拉取相关文档作为上下文,让模型基于检索结果来生成。你可以把它理解成给模型配了个外挂知识库,模型负责推理和表达,知识库负责提供事实。

具体架构分三块:索引模块、检索模块、生成模块。先说索引,离线阶段要把原始文档切成小块,然后用 Embedding 模型转成向量存到 Vector Database 里。这里有个关键取舍:切分策略直接影响召回质量。固定长度切分最简单,但容易把完整语义砍断;语义切分虽然准,但计算成本高。我一般先按段落切,对超长段落再用滑动窗口重叠处理,这样既能保留上下文,又控制单块长度。另外,纯向量检索对关键词不敏感,比如搜“退款政策”可能因为语义偏差召不回“退货流程”,所以生产上我倾向 Hybrid Search,把向量检索和 BM25 关键词检索结合起来,再通过 Rerank 模型做最终排序。

工作流程分两步走。离线准备阶段,文档切分、向量化、入库,这部分可以离线跑。在线查询时,用户问题先向量化,到向量库做近似最近邻搜索,取 Top-K 块,然后把这些块和原始问题拼成一个 Prompt,喂给大模型生成答案。这里有个常见失败场景:检索回来的文档质量差,或者和问题不相关,模型就会基于错误上下文胡编。所以我会在检索后加一道置信度过滤,如果 Top-K 的相似度分数普遍低于阈值,就降级处理,比如告诉用户“知识库没有相关答案”,而不是硬生成。

相比纯生成模型,RAG 的优势很明显。最核心的是知识实时更新,知识库改一条记录,下次查询就生效,不需要重新训练。其次是可溯源,模型引用了哪几段文档能展示给用户,方便审计和调试。但和微调比,RAG 不是万能的。微调适合让模型学会特定风格或复杂推理模式,比如把公司内部术语的表达方式固化下来;而 RAG 适合高频更新、需要引用外部事实的场景,比如客服的退款政策、电商的满减规则。真正落地往往是 RAG 加微调一起上,RAG 负责事实,微调负责表达。

不过 RAG 也有前提和风险。知识库本身的质量决定天花板,如果文档本身有错、过期、或者切分不合理,检索结果就会带偏模型。另外,检索延迟和精度要平衡,Top-K 取太多会让 Prompt 过长,影响模型推理速度和效果。上线我会特别关注 RAGAS 评估指标,比如上下文精度和召回率,定期用一批标注 query 做回归。

还有一个进阶方向是 Self-RAG,让模型在生成过程中自己判断是否需要检索、检索结果是否可信,而不是每次都无脑拼接。这能进一步减少噪声引入,但实现复杂度也更高。

所以整体上,我把 RAG 看作一个工程系统,核心是在检索质量和生成质量之间做取舍。我更倾向先用混合检索加重排保证召回精度,再通过置信度过滤和降级策略兜底,而不是一味堆高检索召回率。

关键一句:Self-RAG让模型自判断是否需要检索,减少噪声引入

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设你在做一个智能客服,用户问“我的订单什么时候到”,你直接让大模型回答,结果它瞎编了一个物流信息。如果换成RAG,你会怎么设计来避免这种问题?

  2. 问法 2 · 层层追问

    大模型生成答案容易胡说八道,你一般怎么缓解?……那如果让模型先去查资料再回答呢?……具体怎么查、怎么把资料喂给模型,你觉得这个流程的关键是什么?

  3. 问法 3 · 直球架构

    讲讲RAG的基本原理和系统架构,从索引、检索到生成整个链路怎么设计,以及它相比纯生成模型的核心优势体现在哪些方面?

同模块相关题目