什么是 RAG?为什么 AI 能够查询自己的知识库?

2 阅读8分钟

什么是 RAG?为什么 AI 能够查询自己的知识库?

你有没有遇到过这样的情况:

你问 AI:“我们公司今年最新的产品价格是多少?”

AI 却回答:“抱歉,我没有相关信息。”

但实际上,这些价格明明就保存在公司的 Excel、PDF 和内部文档中。

为什么 AI 不能直接读取这些资料?

因为大语言模型虽然拥有大量训练知识,但它并不天然知道你电脑里的文件,也无法自动获取最新的内部数据。

那么,有没有办法让 AI 在回答问题之前,先去查询指定的知识库?

这就是今天要介绍的技术:RAG(Retrieval-Augmented Generation),检索增强生成。

一、什么是 RAG?

RAG 全称 Retrieval-Augmented Generation,中文通常称为检索增强生成。

简单理解:

RAG 就是在 AI 回答问题之前,先从外部知识库中检索相关资料,再把检索到的内容交给大模型,让模型根据这些资料生成答案。

传统的大模型问答流程:

用户提问
   ↓
大语言模型
   ↓
生成回答

RAG 问答流程:

用户提问
   ↓
检索知识库
   ↓
找到相关资料
   ↓
将资料和问题一起交给大模型
   ↓
生成回答

两者最大的区别在于:

传统方式主要依赖模型已有的训练知识,而 RAG 可以在回答问题时引入外部资料。

例如:

你上传了一份公司的产品说明书,里面记录了产品型号、价格和功能。

当用户询问某款产品的价格时,RAG 会先从知识库中找到相关内容,再将这些内容提供给大模型。

这样,模型就可以根据实际资料回答,而不必完全依赖训练阶段学到的知识。

二、RAG 的核心技术是什么?

想要理解 RAG,需要先认识三个关键概念:

1. Embedding:把文字转换成向量

计算机并不能像人一样直接理解文字的语义。

因此,RAG 通常会使用 Embedding(向量嵌入)模型,将文本转换成一组数字,也就是向量。

例如:

文本 A:如何学习 Python?
文本 B:Python 入门教程
文本 C:今天的天气怎么样?

经过 Embedding 模型处理后,会得到对应的向量表示。

概念上可以理解为:

文本 A → [0.12, 0.35, 0.78, ...]
文本 B → [0.15, 0.32, 0.81, ...]
文本 C → [0.92, 0.11, 0.24, ...]

这里的数字仅用于演示,并非真实模型输出。

为什么要这样做?

因为语义相近的文本,经过合适的 Embedding 模型处理后,通常会在向量空间中表现出较高的相似度。

例如:

“如何学习 Python?”

“Python 入门教程”

虽然两个句子的文字不同,但表达的意思比较接近。

通过向量相似度计算,系统就有机会找到它们之间的语义联系。

这就是语义检索的基础。

2. 向量数据库:存储和检索向量

有了向量之后,还需要一个地方存储它们。

这时候就需要向量数据库。

常见的向量数据库和检索系统包括:

  • Milvus
  • Qdrant
  • Weaviate
  • Chroma
  • Elasticsearch(支持向量检索)

它们可以存储文本向量及其关联信息,并根据查询向量寻找相似内容。

例如:

知识库里有 10 万条文档。

用户提出问题后,系统先将问题转换成向量,再通过向量检索找到与问题最相关的几条内容。

这样就不需要每次把 10 万条文档全部交给大模型。

需要注意,向量检索通常还会结合关键词检索、元数据过滤和重排序等技术,以提高检索准确率。

3. Prompt:把检索结果交给大模型

找到相关资料之后,下一步就是将资料和用户问题组合起来,交给大模型。

例如:

你是一名企业知识库助手。

请根据下面提供的资料回答问题。
如果资料中没有相关信息,请明确说明不知道。

参考资料:
公司产品 A 的售价为 199 元。
产品 A 支持蓝牙连接。

用户问题:
产品 A 的售价是多少?

模型根据检索到的资料,就可以生成:

产品 A 的售价是 199 元。

这一步非常重要。

RAG 并不是让模型重新训练一遍,而是在生成回答时,为模型提供额外的参考信息。

三、RAG 的完整工作流程

理解了三个核心技术之后,我们把整个流程串起来。

一个典型的 RAG 系统可以分为两个阶段。

第一阶段:构建知识库

这一步通常在用户提问之前完成。

步骤 1:导入数据

将 PDF、Word、TXT、网页、数据库等资料导入系统。

步骤 2:文档解析

提取文档中的文字、表格和其他可用信息。

步骤 3:文本切分

将较长的文档切分成多个小文本片段,也叫 Chunk。

为什么要切分?

因为文档可能有几百页,如果直接把整份文档交给模型,不仅成本高,还可能超过模型的上下文窗口。

所以需要按照一定规则拆分。

例如:

原始文档
   ↓
切分文本
   ↓
Chunk 1:产品介绍
Chunk 2:产品价格
Chunk 3:售后政策
Chunk 4:使用说明

实际切分时,还需要考虑段落边界、语义完整性和相邻片段重叠等问题。

步骤 4:生成向量

将每个文本片段交给 Embedding 模型,转换成向量。

步骤 5:存入向量数据库

保存向量、原始文本和文档元数据。

至此,知识库就构建完成了。

第二阶段:用户提问和检索

步骤 1:用户提出问题

例如:

“产品 A 的售后政策是什么?”

步骤 2:问题向量化

使用 Embedding 模型将用户问题转换成向量。

步骤 3:相似度检索

到向量数据库中查找与问题最相关的文本片段。

步骤 4:整理参考资料

选出相关内容,必要时进行重排序和过滤。

步骤 5:交给大模型

将用户问题和检索到的资料组合成 Prompt。

步骤 6:生成最终答案

大模型根据参考资料生成回答,并可以附带资料来源。

整个过程可以概括为:

            知识库构建
原始文档 → 文本切分 → Embedding
                         ↓
                    向量数据库
                         ↑
用户提问 → 问题向量化 → 相似度检索
                         ↓
                    相关资料
                         ↓
                    大语言模型
                         ↓
                      最终答案

四、RAG 和微调有什么区别?

这是很多初学者容易混淆的问题。

RAG 和微调(Fine-tuning)都可以改善 AI 应用的表现,但它们解决的问题并不一样。

对比维度RAG微调
核心思路检索外部资料使用数据调整模型
是否修改模型参数通常不修改会修改
知识更新更新知识库即可通常需要重新训练或微调
适合场景企业知识库、文档问答特定任务、表达风格、行为模式
数据来源外部知识库训练数据集

举个例子:

如果你希望 AI 知道公司最新的产品价格,使用 RAG 通常更合适。

因为价格可能经常变化,只需要更新知识库中的资料即可。

如果你希望 AI 学会特定的客服回答风格,或者更稳定地执行某种任务,那么微调可能更合适。

当然,两者也可以结合使用。

五、RAG 是不是可以彻底解决 AI 幻觉?

不能。

RAG 可以通过提供外部参考资料,降低模型因为缺少相关信息而产生错误回答的概率,但不能保证答案百分之百准确。

主要有几个原因:

  1. 检索错误: 系统没有找到真正相关的资料。
  2. 切分不合理: 文档被切分后丢失了必要的上下文。
  3. 资料过时: 知识库中的内容本身就不准确。
  4. 模型理解错误: 大模型可能错误理解检索到的内容。
  5. 生成偏差: 模型可能加入参考资料中不存在的信息。

因此,一个可靠的 RAG 系统不仅需要优秀的大模型,还需要做好文档解析、文本切分、检索优化和答案验证。

六、总结

RAG 是目前 AI 应用开发中非常重要的一项技术。

它让大模型不再只能依赖训练阶段学到的知识,而是能够在回答问题时查询外部知识库。

整个过程可以简单记成:

文档切分 → 向量化 → 存储 → 检索 → 大模型生成。

如果你正在开发企业知识库、智能客服、文档问答或者 AI 助手,RAG 都是值得掌握的技术方向。

未来,随着大模型应用越来越深入,如何让 AI 准确获取外部信息、理解私有数据,并基于可靠资料完成任务,将会成为 AI 应用开发的重要能力。