RAG
检索增强生成,先检索相关知识再交给模型生成答案,用于降低幻觉并支持引用来源,是 AI 问数和知识库问答的核心模式。
定义
RAG(Retrieval-Augmented Generation,检索增强生成)是一种把检索与生成结合的模式:先从知识库检索与问题相关的内容,再把检索结果作为上下文交给模型生成答案。
它的核心价值是让模型“有据可查”而不是“凭记忆编造”。模型自身的知识有训练截止日期、有记忆偏差、有幻觉风险,RAG 通过外部检索把事实注入上下文,让生成基于检索到的事实而非模型记忆。
它解决什么问题
- 幻觉:模型凭记忆编造,RAG 让它基于检索到的事实作答
- 时效性:模型训练数据有截止日期,RAG 可以接入最新内容
- 可引用:RAG 可以返回答案来源,便于核对和追溯
这三个问题在企业场景里特别关键。企业知识库的内容模型从没见过,纯生成必然幻觉;企业数据每天都在变,模型记忆早已过时;企业问答必须可追溯,不能“模型说的就是对的”。
RAG 与 AI 问数的区别
很多人把 RAG 和 AI 问数混为一谈,其实它们解决不同问题。RAG 适合“答案在文档里”的场景——模型找到相关段落并组织成答案。AI 问数适合“答案需要实时计算”的场景——模型生成 SQL 查询数据库拿到结果。前者是检索+组织,后者是意图+计算。混淆两者会导致用 RAG 回答数据查询问题(答不了)或用 AI 问数回答知识库问题(杀鸡用牛刀)。
典型流程
- 文本切 chunk——按语义块切分,不是按固定字数
- 生成 embedding 写入向量库——建立检索索引
- 提问时检索相关 chunk——向量相似度+关键词混合检索
- 把 chunk 作为上下文喂给模型生成答案——附引用来源
相关术语
- Embedding(向量化)——RAG 的基础能力
- 向量库——RAG 的存储和检索引擎
- AI Agent——RAG 的上层应用之一
- MCP——比 RAG 更通用的上下文获取协议
相关内容
- 内容平台前后台分离架构记录(第三阶段 AI 索引)
- AI Agent 工程化实践——上下文管理主线
4典型流程
3解决问题
1引用来源
↓幻觉率
| 维度 | 纯生成 | RAG |
|---|---|---|
| 知识来源 | 模型训练记忆 | 外部知识库检索 |
| 幻觉风险 | 高(凭记忆编造) | 低(基于检索事实) |
| 时效性 | 受训练截止日期限制 | 可接入最新内容 |
| 可引用 | 无法追溯来源 | 可返回答案出处 |
| 适用场景 | 创意写作、通用问答 | 知识库问答、企业问数 |
- 文本切 chunk:把知识库文档切成合适大小的语义块。
- 生成 embedding:用向量化模型把每个 chunk 转成向量。
- 写入向量库:把向量存入向量数据库,建立检索索引。
- 提问时检索:把用户问题向量化,检索相关 chunk。
- 上下文拼接:把检索到的 chunk 作为上下文喂给模型。
- 生成答案:模型基于检索上下文生成答案并附引用来源。
type RagPipeline = {
chunk(text: string): string[];
embed(chunk: string): number[];
store(id: string, vec: number[]): void;
retrieve(query: string, topK: number): Chunk[];
generate(query: string, context: Chunk[]): Answer;
};
const answer = pipeline.generate(
userQuestion,
pipeline.retrieve(userQuestion, 5),
);
RAG 不是让模型变聪明,而是让模型有据可查。它把"凭记忆答"变成"查着答",这一步就能把企业知识库问答的可用性从 demo 提升到生产。