跳到正文

RAG 基本工作流程是什么?

从检索到生成,覆盖 Embedding 与向量数据库

原题:请描述检索增强生成(RAG)的基本工作流程。

模型微调 · 商汤科技真题

30 秒回答

  1. 明确RAG的核心动机:解决大模型知识截止和幻觉问题
  2. 清晰描述"检索-增强-生成"三阶段流程
  3. 说明向量检索的关键作用
  4. 提及RAG相比微调的优势(成本低、数据更新灵活)

回答与解析

答案要点

  • 明确RAG的核心动机:解决大模型知识截止和幻觉问题
  • 清晰描述"检索-增强-生成"三阶段流程
  • 说明向量检索的关键作用
  • 提及RAG相比微调的优势(成本低、数据更新灵活)

RAG 核心思想

用外部知识库"喂"给大模型,解决知识截止幻觉两大痛点,无需重新训练模型。

三阶段工作流程

1. 索引阶段(离线)

  • 文档切分:按语义/固定长度分块(chunk)
  • 向量化:用 Embedding 模型(如 BGE、M3E)转为稠密向量
  • 存储:写入向量数据库(Milvus、FAISS、Elasticsearch)

2. 检索阶段(在线)

  • 用户查询同样向量化
  • 相似度搜索(余弦相似度/IP),召回 Top-K 相关片段

3. 生成阶段(在线)

  • 将检索结果 + 原始查询拼接为 Prompt
  • 大模型基于"上下文"生成答案,可要求标注来源

关键优势

维度 说明
成本 无需训练,API 调用即可
时效性 知识库实时更新
可解释 答案可溯源到具体文档

一句话总结

"先搜后答"——让大模型在"开卷考试"环境下作答。

口语版讲法(约4分钟)

  • 本质是开卷考试,解决知识截止和幻觉
  • 离线建库:分块、向量化、存库
  • 在线检索:混合检索策略
  • 生成:Prompt拼接与置信度过滤
  • 落地风险与取舍

这道题其实问的是,大模型知识有截止日期还爱胡说,怎么让它基于真实文档来回答。说白了就是给模型一个开卷考试的环境,先搜后答。

具体流程分三段:先离线建个知识库,再在线检索,最后生成答案。

先说建库。原始文档不能直接往里扔,得先切块,按语义或者固定长度。我一般用语义切分,比如按段落或者用 LangChain 的 RecursiveCharacterTextSplitter,这样一块就是一个完整意思。切完用 Embedding 模型转成向量,然后存到 Vector Database 里,比如 FAISS 或者 Milvus。这里有个前提:Embedding 模型要跟你的业务数据匹配。如果拿通用模型去转金融术语,相似度会跑偏。

再说检索。用户问一个问题,同样转成向量,去库里搜最相似的 Top-K 块。相似度计算用余弦或者内积。但这里有个坑:纯向量检索对关键词不敏感,比如搜订单号或者错误码,向量相似度往往不如 BM25。所以实际落地我会用 Hybrid Search,向量和关键词两条路同时走,结果再融合。举个例子,电商客服场景,用户问“我上次买的手机怎么还没到”,向量检索能理解“手机”和“物流”的语义,但如果用户说“订单号 12345 怎么退款”,关键词匹配更准。所以混合检索是标配。

检索完,生成前还有一步:把搜到的文本和原始查询拼成一个 Prompt,扔给大模型。这里有个关键:不是所有搜到的块都有用。如果相似度低于某个阈值,我会直接过滤掉,宁可不答也别乱答。另外,Prompt 里要明确说“请基于以下文档回答,如果文档里没有相关信息,就说不知道”。这样能大幅降低 Hallucination。

跟微调比,RAG 的优势很明显:成本低,不用训练模型;数据更新灵活,换一批文档就行;而且答案可溯源,用户问“你凭什么这么说”,你能指回原始文档。但微调也有它的场景,比如想让模型学会特定语气或者输出格式,RAG 做不到。所以真正落地往往是 RAG 加微调配合,RAG 负责事实性,微调负责风格和指令遵循。

另外,RAG 上线后要持续监控召回质量,比如用 RAGAS 框架评估 Faithfulness 和 Context Recall。如果发现召回不准,可能要调切块大小、换 Embedding 模型,或者加 Rerank 层。

最后说我的判断:我会把 RAG 看成大模型落地的标配能力,而不是锦上添花。因为只要业务需要事实性,RAG 就是最稳的路径。但前提是你得把知识库当工程做,分块策略、检索策略、过滤策略,每一环都可能翻车。

关键一句:RAG上线后需要持续监控召回质量,比如用RAGAS评估Faithfulness和Context Recall。

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设我们在做一个智能客服,用户问“我的订单什么时候发货”,你直接让大模型回答容易胡扯。如果先查一下知识库里的物流规则再生成答案,这个流程你怎么设计?

  2. 问法 2 · 层层追问

    你一般怎么解决大模型知识过时的问题?……用外部知识库是吧,那具体怎么把外部知识和模型结合起来?……从用户提问到最终答案,中间经历了哪些步骤?

  3. 问法 3 · 直球架构

    请描述RAG的完整工作流程,包括离线和在线阶段,以及每个阶段的关键组件。比如文档怎么处理、检索怎么实现、生成时怎么拼接Prompt。

同模块相关题目