已完成

RAG:给模型“外挂知识库”

RAG 让大模型不再死记硬背,而是像工程师一样“查资料”,随时拥有最新知识。

RAG 是什么?

检索增强生成(RAG, Retrieval-Augmented Generation)让大语言模型(LLM, Large Language Model)从“内置知识”升级为“可挂载外部知识”。逻辑上,它就像给 LLM 挂上一个“外接硬盘”。

如果没有 RAG,大模型只能依赖预训练期间学到的知识,无法实时更新。引入 RAG 后,模型可以访问动态数据、私有文档、数据库、日志甚至 API,从一个“语言模型”升级为“知识增强型 Agent”。

为什么需要 RAG?

机器学习模型的本质是“统计压缩”:

  • 预训练模型 ≈ 一个巨大的概率分布
  • 内置知识 = 预训练语料当时的状态
  • 无法实时更新
  • 无法访问业务知识
  • 无法访问结构化数据或实时信息

用工程师的话说:

预训练模型就像一个只读的“镜像文件”,生成时无法临时挂载额外的数据卷。

RAG 解决了以下问题:

  • 业务知识经常更新
  • 模型必须访问实时信息
  • 私有数据不能放到训练集
  • 长期来看训练成本太高
  • 模型无需记住所有内容,只需能“找”

一句话总结:

RAG = 在大模型前加一层“可检索知识层”,让模型随时看见它未训练过的知识。

云原生类比:RAG = 外挂知识库,是给 LLM 的“CRD + etcd + Controller”

下表用云原生工程视角类比 RAG 的核心组件:

RAG 组件云原生类比含义
EmbeddingCRD 索引 / Tag 索引把文档“结构化”成可检索向量
Vector DBetcd + 高级检索 + 倒排索引存储特征向量,实现相似度检索
RetrieverController / Informer根据查询找到最相关的文档
Rerank精排器 / Admission Webhook对结果进行更精细排序
Generator (LLM)业务逻辑层根据检索结果生成最终答案
表 1: RAG 组件与云原生工程类比

一句话类比:

RAG = 模型不再全靠自己推理,而是能查询外部“知识 API”。

RAG 标准流程

下图展示了 RAG 的标准工作流程,清晰分为“检索、精排、生成”三大环节:

图 1: RAG 标准工作流
图 1: RAG 标准工作流

在这个流程中,用户问题经过向量化、检索、精排、上下文构建,最终由 LLM 生成有依据的答案。

RAG 的关键技术点

RAG 涉及多个关键技术环节,下面逐一介绍。

Embedding:把文本变向量

Embedding 的本质是将任意文本转为语义向量(如 768/1024 维),便于后续的相似度计算。

工程师类比:

Embedding = 文档的结构化标签,是 CRD 的 schema + index。

注意事项:

  • 业务场景不同,Embedding 必须调优(如金融、法律、代码)
  • 选择合适的模型很关键(如 bge-m3、jina-embeddings、GTE、E5 等)

Vector Database:向量数据库

向量数据库用于存储和检索高维向量,支持高效的相似度搜索。

主要能力包括:

  • 向量存储
  • 高维检索(ANN:HNSW、IVF、PQ)
  • Meta 数据过滤
  • 分片、高可用、多租户

工程类比:

像 etcd,但它不是做一致性,而是做“最近邻搜索”。

常用系统有 Milvus、Qdrant、Weaviate、Elastic + dense_vector、PgVector(Postgres 扩展)等。

Retriever:召回最可能的文档

Retriever 决定用什么方式匹配内容、Top-K 取多少、是否加 metadata filter。

常见检索策略:

  • 向量检索
  • BM25(关键词检索)
  • 混合检索(Hybrid Search)
  • 多路召回

Hybrid Search(embedding + BM25)是当前最稳的生产方式。

Rerank:精排器

Rerank 负责对召回结果进行更精细的语义相关性排序,通常采用 cross-encoder 结构(如 bge-reranker)。

工程师类比:

Rerank = Admission Controller,最后把关,决定哪些文档进上下文。

Rerank 能显著提升答案准确度、上下文相关性,并减少幻觉。

Context Assembly:上下文构建

上下文构建常用策略包括 chunk 合并、文档摘要、文档压缩(Distillation)、基于 Token 限制做裁剪。

工程挑战:

  • 太长会增加成本和延迟
  • 太短可能找不到信息
  • 乱拼接易导致上下文冲突

LLM Generator:有依据地回答

最终,LLM 不再“凭记忆胡思乱想”,而是根据检索到的证据给出 grounded 回答。这是减少幻觉的关键。

RAG 全流程架构图

下图展示了 RAG 的完整工程架构,适合工程型读者理解各层次关系:

图 2: RAG 全流程架构图
图 2: RAG 全流程架构图

我们将在后续章节深入 RAG 流程的每个环节。

RAG 的工程挑战与最佳实践

RAG 在实际工程落地中面临诸多挑战,下表总结了常见问题及说明:

问题说明
Chunk 切片策略太大太小都影响效果
Query 改写用户提问往往不完整
混合检索单一方式不稳定
精排必须带 Rerank,否则召回噪音太大
上下文冲突多文档合并会互相矛盾
支持长上下文vLLM、PagedAttention 等技术必备
表 2: RAG 工程挑战与最佳实践

这些问题的解决方案和最佳实践我会单独成文深入探讨。

总结

RAG 本质上是给大语言模型(LLM, Large Language Model)加一个“外挂知识库”,让模型能访问外部文档、实时信息和私有数据。

RAG 的核心流程包括:

  1. Embedding(把文本向量化)
  2. Vector DB(存储与检索)
  3. Retrieve(召回)
  4. Rerank(精排)
  5. Context Assembly(构建上下文)
  6. Generation(生成 grounded 回答)

工程本质:

  • 让模型不再死记硬背,而是会“查资料”
  • 减少幻觉
  • 降低训练成本
  • 支持私有数据 / 实时数据
  • 是 AI 应用的核心基础设施之一

文章导航

章节内容

这是章节的内容页面。

章节概览