返回 RAG 工程实战目录

RAG 基础概念与整体架构

理解离线入库和在线查询两条核心链路

生命周期 · 阶段一 概念与立项 | 上游:业务痛点 | 下游:需求分析(02)

一、什么是 RAG

RAG(Retrieval-Augmented Generation,检索增强生成)= 信息检索 + 大模型生成

先从知识库中检索出与用户问题最相关的文档片段,再将其作为上下文交给大模型,让模型"看着资料回答问题"。

为什么需要 RAG(解决 LLM 三大痛点)

LLM 痛点RAG 的解法
幻觉:生成内容可能没有事实依据提供可引用证据,并配合忠实度校验与拒答策略降低风险
知识时效:模型训练知识存在时间边界更新知识库并完成索引切换后,可以检索新资料
私有数据不可见将获准使用的私有文档纳入索引,并在检索前执行权限过滤

RAG vs 微调(Fine-tuning)

维度RAG微调
知识更新文档重新入库并完成索引发布后生效通常需要重新准备数据并训练或适配
成本取决于解析、索引、检索和模型调用规模取决于训练方式、算力与数据准备
可解释性可提供引用,但仍需验证引用是否支持主张通常不能直接给出训练样本级依据
适用场景知识问答、文档检索风格模仿、特定任务格式
两者关系常结合使用:微调管"怎么答",RAG 管"答什么"

二、整体架构

RAG 系统分为离线入库侧在线查询侧两条链路:

flowchart TB subgraph OFF["离线 · 入库侧"] direction LR A["文档接收"] --> B["解析"] --> C["OCR"] --> D["切片 Chunking"] --> E["向量化 Embedding"] --> G[("向量数据库 写入索引")] end subgraph ON["在线 · 查询侧"] direction LR U["用户提问"] --> R["查询改写"] --> H{"检索 向量+关键词"} H --> RR["重排序 Rerank"] RR --> P["组装 Prompt 问题+相关切片+指令"] P --> L["LLM 生成答案"] L --> ANS["回答 (附引用来源)"] end G -.- H style OFF fill:#f0f7ff,stroke:#4a9eff style ON fill:#fff7f0,stroke:#ff8c4a

三、核心组件

组件作用常见选型
文档解析器PDF/Word/HTML → 结构化文本PyMuPDF、Unstructured、Apache Tika
OCR 引擎图片/扫描件 → 文本PaddleOCR、Tesseract、商用 OCR API
Embedding 模型文本 → 语义向量BGE、M3E、text-embedding-3、Qwen-Embedding
向量数据库向量存储与相似度检索Milvus、Qdrant、PGVector、Elasticsearch
重排模型对粗排结果精排BGE-Reranker、Cohere Rerank
LLM生成最终答案GPT 系列、Qwen、DeepSeek、GLM
编排框架串联整条链路LangChain、LlamaIndex、RAGFlow、Dify

四、常见 RAG 产品形态

  • 开源自部署:RAGFlow / Dify / MaxKB / FastGPT — 开箱即用,适合企业私有化
  • 自研代码链路:LangChain / LlamaIndex + 向量库 + 模型 API — 灵活可控,定制性强
  • 云端一体化:各类云厂商知识库服务 — 运维负担较低,数据位置与处理边界需按供应商条款核验

五、一条数据的完整旅程(示例)

  • 上传一份 50 页 PDF《不良资产处置操作手册》(接收)
  • 解析提取出正文、表格、图片说明(解析)
  • 第 30-35 页是扫描合同,OCR 转文字(OCR)
  • 全文按语义切成约 300 个切片,每片 500 字左右(切片)
  • 每个切片经 Embedding 模型转为 1024 维向量(向量化)
  • 向量 + 原文 + 元数据(文档名、页码、部门、密级)写入 Milvus(索引)
  • 用户提问"抵押物处置流程是什么" → 检索命中第 12 页相关切片 → LLM 生成带引用的回答

本篇交付与下一步

读完本篇,应能画出目标场景的离线入库链路与在线查询链路,并说明 RAG 能降低哪些风险、仍保留哪些风险。下一步进入 02-需求分析与技术选型,把概念转成可验证的需求与约束。