RAG 检索增强生成:架构、向量库、分块策略(与微调对比)

RAG 是让大模型'会查资料'的技术。讲清架构、向量检索、分块策略,以及它和微调到底该怎么选。

#RAG#向量数据库#检索#Embedding更新于 2026-08-12
📑 本页目录

RAG(Retrieval-Augmented Generation)让大模型在回答前先去“查资料”,把检索到的相关内容塞进上下文再生成。它不改变模型权重,改变的是模型的“输入”

为什么需要 RAG

大模型有三大硬伤:

  1. 知识截止:训练完就停在那个时间点,不知道新事
  2. 幻觉:不知道就编,一本正经胡说
  3. 没有私有数据:你的公司文档、你的笔记,它没见过

RAG 用“外挂知识库”同时缓解这三个问题:答案不再是模型“背”出来的,而是“查”出来的。

核心架构(四步)

文档 → 切块(Chunking) → Embedding(向量化) → 存入向量库

用户提问 → Embedding → 向量相似度检索(召回 Top-K)

           相关片段 + 问题 → 拼进 Prompt → LLM 生成答案

关键三要素:

  1. Embedding 模型:把文本变成向量,语义相近的文本向量距离近
  2. 向量数据库:存向量并支持相似度检索(faiss、Milvus、Qdrant、Chroma、pgvector……)
  3. LLM:基于检索到的上下文生成最终答案

分块策略:质量的分水岭

检索质量 80% 由“怎么切块”决定。常见策略:

策略 说明 适用
固定长度切块 按 token 数硬切 简单但会切碎语义
按段落/标题切 尊重文档结构 大多数场景推荐
父子分块 小块检索 + 大块喂给 LLM 兼顾命中率与上下文
滑动窗口重叠 相邻块留重叠 避免切断语义
结构化切片 按表格/列表/章节切 代码、JSON、表格类文档

经验:块太小→上下文割裂;块太大→检索噪声多、浪费 token。一般 300-800 token 起步,配合重叠 10-20%。

RAG vs 微调:到底选谁

维度 RAG 微调
本质 改输入(外挂知识) 改权重(内化知识)
更新知识 秒级,改向量库即可 重训,慢
成本 低(无训练) 高(要算力)
幻觉 有效缓解(有依据) 无法根治
改变风格/能力
引用溯源 ✅ 可给出来源

决策铁律:

  • 回答“事实/知识”类问题 → RAG
  • 改变模型的“说话方式/能力” → 微调
  • 事实 + 风格都要 → RAG + 微调组合

用第一性原理理解:RAG 是“外挂硬盘”,微调是“写入固件”。查资料靠硬盘,改性格靠固件,两者不冲突。

进阶方向(了解即可)

  • GraphRAG:在向量检索之上构建知识图谱,更好处理跨文档、多跳关系问题
  • 混合检索:向量 + 关键词(BM25)+ 重排序(Rerank)组合,提升召回精度
  • Agentic RAG:让 Agent 自主决定何时检索、检索什么、追问什么