什么是 RAG?RAG 的主要流程是什么?
- 标签:AI、大模型、RAG、编程导航
🏛 业务架构师
RAG(Retrieval-Augmented Generation,检索增强生成):回答前先从知识库检索相关内容,把"问题 + 检索到的知识"一起交给模型生成答案——用外部知识补模型训练数据的缺口。
主流程四步:
- 离线建库:文档加载 → 清洗切分 → 向量化 → 存入向量库(带元数据);
- 在线检索:用户问题 → (可选:重写/扩展)→ 向量化 → 相似度检索 topK 片段 →(可选:重排过滤);
- 增强生成:问题 + 检索片段组装进 prompt → 模型基于给定内容回答(提示"仅根据以下资料回答,没有依据就说明");
- 溯源:答案标注引用来源。
业务视角,为什么 RAG 是企业落地第一站(对比另两条路的账):
- vs 直接用大模型:模型不知道你的私有知识(内部制度、产品文档),且训练数据有截止日期——RAG 让答案有"依据",幻觉率大幅下降;
- vs 微调:微调贵(数据准备 + 训练 + 每次知识更新重训)、周期长;RAG 知识更新=重新入库,小时级生效——企业知识"变化频繁 + 需要溯源"两个特性决定了 RAG 是正解,微调更适合改变"风格与技能"而非注入"知识"。
它能支撑的业务:智能客服(答案有据可查)、内部知识助手(制度/流程问答)、专业领域咨询(法律条款、医疗指南)——凡是答案错了有代价、答案需要出处的场景,RAG 都是基础架构。
一句话:RAG = 给模型一本开卷考试的教材——不改变脑子,改变可用的资料。
🏗 系统架构师
RAG(Retrieval-Augmented Generation,检索增强生成)= 生成前先检索相关知识,把"参考资料"拼进上下文再让 LLM 作答。解决的问题:LLM 知识截止、领域知识缺失、私有数据不可见、幻觉——把"参数记忆"升级为"外部记忆 + 生成"。
主要流程(离线 + 在线两条管道):
离线建库(Indexing):
- 文档加载(PDF/Word/网页/DB);
- 切分成 chunk(500~1000 token,语义边界对齐);
- Embedding 模型向量化;
- 向量库 + 元数据存储。
在线问答(Retrieval + Generation):
- 查询预处理:重写(多轮指代消解)、多查询扩展;
- 检索:问题向量化 → ANN 相似度 Top-K(可混合 BM25 + 向量)→ 元数据过滤;
- 后处理:重排序(Rerank)、去重、压缩;
- 生成:Prompt = 系统指令 + 检索到的 chunk(带来源)+ 用户问题 → LLM 生成答案(要求引用来源、资料不足时声明)。
关键认知:RAG 效果 = 切分质量 × 检索精度 × 生成遵循度,短板在检索而非生成(模型够强,喂错了资料照样错)。对比微调:RAG 适合知识频繁更新的场景(改文档即生效、可溯源),微调适合风格/格式/领域能力内化——两者可组合,不互斥。
💻 全栈开发专家
RAG(Retrieval-Augmented Generation,检索增强生成)= 回答前先从知识库检索相关内容,把"查到的资料 + 问题"一起给模型生成。解决三个痛点:模型知识过期、私有知识不知道、纯生成容易幻觉。
主流程分离线在线两段:
离线建库:
text
文档 → 解析 → 清洗 → 切分(chunk + overlap)
→ 元信息标注 → 向量化(Embedding)→ 向量库在线问答:
text
用户问题
→ ① 预处理:查询重写(消指代)、多查询扩展
→ ② 向量化:问题转 embedding
→ ③ 检索:向量相似度 top-k(可 + BM25 混合)+ 元数据过滤(权限/分类)
→ ④ 重排:rerank 模型精排,取 top3~5
→ ⑤ Prompt 组装:system(角色+引用规范) + 检索片段 + 问题
→ ⑥ LLM 生成:基于片段回答,标注来源Spring AI 里的最简形态:
java
String answer = chatClient.prompt()
.advisors(new QuestionAnswerAdvisor(vectorStore,
SearchRequest.builder().topK(5).build()))
.user(question).call().content();效果的本质(一句话总结):RAG 的上限由知识库质量决定(切分/元信息),下限由检索质量决定(召回/重排),模型只负责"临门一脚"的表达与综合——所以优化 RAG 八成精力应该花在检索链路而不是换模型。