【AI应用开发】 RAG篇(一):概述与核心架构

【AI应用开发】 RAG篇(一):概述与核心架构

前言

现在大模型落地业务,90% 的企业场景都会优先上 RAG(检索增强生成)。不管是知识库问答、智能客服还是私有文档助手,RAG 都是绕不开的核心方案。

本文作为系列第一篇,通俗易懂讲清:什么是 RAG、为什么必须用 RAG、完整双阶段架构流程。新手程序员看完就能搭建最简 RAG Demo。


目录

  1. [什么是 RAG](#什么是 RAG)
    • 1.1 基础定义
    • 1.2 RAG 解决大模型三大原生痛点
  2. [为什么要用 RAG](#为什么要用 RAG)
    • 2.1 两种给大模型注入新知识的方案:微调 vs RAG
    • 2.2 RAG 主流落地场景
  3. [RAG 的核心完整架构](#RAG 的核心完整架构)
    • 3.1 阶段一:离线索引阶段(数据预处理入库)
    • 3.2 阶段二:在线查询阶段(用户实时问答)
    • 3.3 RAG 核心底层逻辑:Embedding 语义对齐

1. 什么是 RAG

1.1 基础定义

RAG(Retrieval-Augmented Generation,检索增强生成)

简单说:大模型回答用户问题前,先去外部私有知识库检索相关原文,再拿着检索到的真实资料生成答案,而非仅依靠模型自身训练记忆。

生活化比喻,快速理解

我们可以把整套系统拆成三个角色,很好理解:

角色 对应组件 职责
用户 提问方 提出业务问题的员工 / 客户
检索器(Retriever) 资料库管理员 在海量文档里快速筛选相关片段
LLM 大模型 领域专家 只记住训练数据的专家,需要管理员提供资料才能准确作答

1.2 RAG 解决大模型三大原生痛点

原生大模型存在无法规避的短板,RAG 针对性解决:

问题 具体表现 RAG 解决方案
知识截止问题 模型训练数据固定,无法获取最新业务、实时资讯 知识库可随时新增 / 更新文档,检索实时生效
模型幻觉 遇到陌生知识凭空编造虚假内容,误导业务 生成答案强制绑定检索原文,有据可溯源,大幅降低胡说
私有领域知识缺失 企业内部文档、行业专业内容不在训练数据内 自有文档向量化入库,推理时调取内部资料

三个痛点的本质是同一个问题:大模型的"记忆"是训练时固化的,无法动态获取外部信息。RAG 给大模型装了一个"搜索引擎",让它回答问题前先查资料,从根本上改变了模型的运作方式。


2. 为什么要用 RAG

2.1 两种给大模型注入新知识的方案:微调 vs RAG

想要让大模型掌握企业私有知识,行业只有两条主流路线,两者互补而非对立:

对比维度 微调(Fine-tuning) RAG(检索增强)
底层原理 训练更新模型权重,永久修改模型认知 不改动模型权重,推理阶段动态注入外部文档
知识更新成本 新增文档需重新训练,耗时耗算力 文档上传入库即可生效,实时更新
答案溯源能力 无法定位回答来源,难以校验真实性 每条回答可绑定对应原始文档段落,方便审计
硬件成本 需要高显存 GPU,训练成本高 仅推理算力,向量库开销低,中小企业友好
适用场景 统一输出格式、优化对话风格、统一语气 事实类问答、动态知识库、频繁更新文档场景
工程最佳实践

两者组合使用,而非二选一:

  • RAG 负责提供真实业务知识,确保答案准确
  • 微调 统一模型输出规范、对话风格,让回答更符合业务调性

实际落地顺序:先上 RAG 解决"能不能答对"的问题,再考虑微调优化"答得好不好看"。


2.2 RAG 主流落地场景

场景 说明 典型例子
企业内部知识库问答 员工查询制度、文档、规范 人事制度、产品接口文档、技术规范
行业智能客服 匹配产品手册、FAQ、历史工单 电商售后、金融咨询、运营商客服
专业辅助系统 法条/病例/政策检索辅助决策 法律法条检索、医疗病例辅助、政务政策问答
科研写作助手 检索论文文献辅助写作 撰写综述、实验报告、文献调研
个人知识库 本地笔记、文档私有问答 个人笔记检索、学习资料问答

这些场景的共同特点是:知识量大、更新频繁、对准确性要求高------恰好是 RAG 最擅长的领域。


3. RAG 的核心完整架构

整套 RAG 系统分为两大独立流程:

  • 离线索引构建阶段:一次性或定时执行,把文档处理好存起来
  • 在线查询问答阶段:用户实时请求,检索 + 生成同步完成

3.1 阶段一:离线索引阶段(数据预处理入库)

作用:把企业海量原始文档,处理成向量数据库可检索的数据。离线提前执行,不占用线上问答耗时。

流程链路
复制代码
原始文档 → 文档解析 → 文本切分 (Chunking) → Embedding 向量化 → 存入向量数据库
分步拆解

① 文档解析

  • 解析 PDF、Word、Markdown、HTML 等多种格式文件
  • 提取纯文本内容
  • 过滤水印、空白行、无效页眉页脚、乱码字符

这一层的质量直接决定后续所有的效果------垃圾进,垃圾出。建议根据实际文档格式选用专业的解析库(PyPDF2、python-docx、Unstructured 等),必要时针对企业特有格式做定制解析。

② 文本切分(Chunking)

  • 将超长文档拆分为固定长度的文本块(Chunk)
  • Chunk 是检索的最小单元,每个 Chunk 独立被检索和召回
  • Chunk 长度直接影响召回效果------太长引入噪声,太短丢失上下文

切分策略的选择将在第三篇《文档切分与多路检索》中详细展开,包括固定长度、语义切分、递归切分等多种方案。

③ Embedding 向量化

  • 使用嵌入模型,将每一段 Chunk 文本转为低维数字向量(通常 768 或 1536 维)
  • 核心原理:语义相近的文本,在向量空间中距离更近
  • 同一套系统必须使用同一个 Embedding 模型
python 复制代码
# 概念示意(非完整代码)
chunk_text = "年假申请需要提前三个工作日提交..."
vector = embedding_model.encode(chunk_text)
# 结果: [0.023, -0.451, 0.891, ..., 0.132]  ← 1536 维向量

④ 向量入库

  • 向量 + 对应原文 + 元数据(文档名称、页码、分类、更新时间)一并存入
  • 向量数据库负责持久化存储和高效相似度检索
  • 元数据留作后续过滤条件(如"只检索技术文档")

3.2 阶段二:在线查询阶段(用户实时问答)

用户发起提问后,实时执行检索 + 生成,完整链路:

复制代码
用户提问 → 查询处理 → Query向量化 → 向量库相似度检索 TopK → (Re-rank重排) → 拼接Prompt → LLM生成回答
分步讲解

① 查询处理(Query Processing)

可选但强烈推荐的优化步骤,直接决定了检索质量的上限:

  • 清洗口语化问题:用户输入"那个什么,就是上次说的请假怎么搞来着?"→ 清洗为"请假申请流程"
  • 多意图拆分:"年假怎么申请?病假需要什么材料?" → 拆分为两个独立查询分别检索
  • 同义扩展:为关键词补充同义词,提升召回覆盖面
  • 指代消解:多轮对话中,"它有什么限制?" → 补全为"年假申请有什么限制?"

② Query Embedding

  • 和离线阶段使用同一个嵌入模型,保证向量空间一致
  • 将用户问题转为与文档 chunk 相同的向量格式

③ 向量相似度检索

  • 在向量库中计算距离(余弦相似度、欧氏距离等)
  • 召回相似度最高的 Top-K 个文本块
  • K 值选择需要权衡:太小丢信息,太大引入噪声。典型范围 3~10

④ 【进阶优化】Re-rank 重排序

  • 对粗召回的 K 个候选片段进行精细化二次打分
  • 使用更强但更慢的重排序模型(如 Cohere Rerank、BGE-Reranker)
  • 过滤无关内容,最终只保留最相关的 3~5 个片段送入 LLM
  • 效果提升显著:相同召回基础下,重排后答案准确率可提升 10%~30%

Re-rank 是 RAG 系统从"能用"到"好用"的关键跨越,第四篇将详细展开。

⑤ Prompt 构造

将用户原始问题 + 筛选后的高质量文档片段拼接成提示词:

复制代码
基于以下参考资料回答用户问题:

【参考资料 1】(来源:员工手册-第3章,第2页)
年假申请需提前三个工作日提交OA系统,经直属上级审批...

【参考资料 2】(来源:考勤制度-请假章节,第5页)
年假天数按工龄计算:1-10年5天,10-20年10天...

【用户问题】
公司年假怎么申请?我能休几天?

请基于上述资料回答,注明引用来源。如资料不足,明确说明。

⑥ LLM 生成答案

  • 大模型仅基于提供的检索文档作答
  • 输出完整回答,附带原文引用来源
  • 如果资料不足,模型应诚实说明"依据现有资料无法回答",而非编造

3.3 RAG 核心底层逻辑:Embedding 语义对齐

整套检索能生效的根本,在于 Embedding 模型的语义编码能力

情况 说明 举例
语义相近,表达不同 向量空间距离近,能被检索匹配 "如何申请公司年假" 和 "年假申请流程是什么" → 向量高度相似
语义无关 向量距离很远,不会被误召回 "年假申请" 和 "办公电脑维修流程" → 向量差距大,不会匹配

这个"语义相近 → 向量相近"的数学性质,是整个 RAG 检索能力的物理基础。Embedding 模型的质量,决定了 RAG 系统的检索天花板。

下一篇将深入拆解:向量相似度到底怎么算?有哪些高效的近似检索算法?7 款主流向量数据库怎么选?Embedding 模型怎么评估?敬请期待《Embedding 与向量数据库》。


本篇小结

知识点 一句话总结
RAG 是什么 先检索外部文档,再基于文档生成答案
解决什么问题 知识截止、模型幻觉、私有知识缺失
RAG vs 微调 RAG 管"答得准",微调管"答得好看",组合使用
离线阶段 文档 → 切分 → 向量化 → 入库,提前执行
在线阶段 提问 → 向量检索 → 重排 → 拼 Prompt → LLM 回答
底层原理 Embedding 把语义相近的文本映射到相近的向量

下一篇将深入 Embedding 与向量数据库,从数学原理到工程选型一次讲透。


下一篇文章第二篇《Embedding 与向量数据库》 --- 深入讲解向量相似度计算、ANN 近似检索算法、主流向量库选型对比、Embedding 模型选择标准。

相关推荐
DigitalOcean2 小时前
Kimi K3 现已上线 DigitalOcean 无服务器推理
llm·agent·ai编程
tkevinjd2 小时前
MiniCode 项目详解7:Memory 记忆系统
大数据·python·搜索引擎·llm·agent
玉鸯3 小时前
旧概念还是新范式?Agent 框架集体"图化"背后的矛盾与必然
后端·llm·agent
爱昏羔6 小时前
上篇:从PDF到向量库 — 物流行业RAG系统的知识库构建全解析
python·langchain·pdf·agent·rag
京东云开发者7 小时前
拆解海博 AI-Native 落地保障:Harness、双 Loop、知识库与技能自主迭代实践
llm·ai编程·前端工程化
jack_zhou.7 小时前
RAG与向量数据库介绍
rag
得物技术8 小时前
推荐系统体验的数字化突破:得物自动化评测平台的技术实践|AICon 文章整理
算法·架构·llm
武子康8 小时前
1M Context 也会失忆:Coding Agent 为什么需要 Context Ledger
人工智能·llm·agent
mapengfei8 小时前
LangChain学习背景
langchain·llm