第 52 篇 · 检索与知识增强

RAG:让AI能查资料的魔法

AI会编故事?给它一个知识库,让它先"查资料"再回答

你有没有遇到过这样的情况:问ChatGPT一个问题,它给你一个听起来很真实但其实是编的答案?

比如你问:"2024年世界杯冠军是谁?"它可能自信地告诉你一个队伍,但实际上2024年没有世界杯。这就是AI的幻觉(Hallucination)。

怎么办?一个办法是给它一个知识库。当它要回答问题时,先从知识库里检索相关信息,然后基于这些信息回答。

这就是RAG(Retrieval-Augmented Generation,检索增强生成)。

RAG是什么?

1
从"闭卷考试"到"开卷考试"

没有RAG vs 有RAG

❌ 没有RAG:闭卷考试

问题

"OpenAI的CEO是谁?"

↓ AI只能靠记忆

回答

"OpenAI的CEO是Sam Altman。"

(可能是对的,也可能已经变了)

问题

• AI的训练数据可能过时

• AI可能记错或编造

• 无法验证答案真实性

✓ 有RAG:开卷考试

问题

"OpenAI的CEO是谁?"

↓ 先检索知识库

检索结果

找到相关文档:

"2024年11月,Sam Altman担任OpenAI CEO..."

↓ 基于检索结果回答

回答

"根据2024年11月的报道,OpenAI的CEO是Sam Altman。"

(有据可查,可信度高)

💡 类比

传统AI就像学生闭卷考试——只能靠记忆,可能记错。RAG就像学生开卷考试——可以翻书查阅,答案更准确。这就是RAG的威力。

RAG怎么工作?

2
RAG的核心流程

RAG分两个阶段:知识库构建(离线)和检索增强生成(在线)。

RAG完整流程

📚 阶段一:知识库构建(离线)

1

文档分块

把长文档切成小块(如每块500字)

2

向量化

把每个文档块变成向量(用Embedding模型)

3

存入向量数据库

Pinecone、Milvus、Chroma等

🔍 阶段二:检索增强生成(在线)

1

问题向量化

把用户问题变成向量

2

相似度搜索

在向量数据库中找最相似的Top-K个文档块

3

构建Prompt

问题 + 检索到的文档块 → 组成Prompt

4

LLM生成回答

基于检索到的信息生成答案

RAG的优势

3
为什么RAG这么受欢迎?

✅ 减少幻觉

AI基于检索到的真实文档回答,不再是"瞎编"。答案有据可查,可信度高。

✅ 知识可更新

不用重新训练模型,只需更新知识库。新知识可以立即生效,成本低、速度快。

✅ 可溯源

可以告诉用户"这个答案来自哪些文档",用户可以验证。增加了透明度和信任度。

✅ 领域适配

给AI加上企业内部文档、专业知识库,就能让通用AI变成领域专家,无需微调。

✅ 成本低

不需要微调大模型(很贵),只需要向量化文档(便宜)。适合中小企业和个人。

✅ 数据隐私

知识库可以本地部署,敏感数据不离开企业。满足数据合规要求。

RAG的挑战

4
RAG有哪些坑?

⚠️ 挑战1:检索质量

如果检索不到相关文档,或者检索到无关文档,AI的回答质量会很差。

解决:优化分块策略、使用混合搜索、重排序

⚠️ 挑战2:上下文窗口限制

LLM有上下文窗口限制(如GPT-4是128K token),不能检索太多文档。

解决:只检索Top-K最相关文档、文档压缩、摘要

⚠️ 挑战3:文档分块策略

分块太小:丢失上下文;分块太大:包含太多噪声。没有万能方案。

解决:根据文档类型调整分块大小、重叠分块

⚠️ 挑战4:延迟

检索 + 生成,比纯生成慢。用户可能要等几秒才能看到答案。

解决:缓存热门查询、异步检索、流式生成

⚠️ 挑战5:知识冲突

检索到的文档可能互相矛盾,或者与AI的预训练知识冲突。AI该信哪个?

解决:提示AI"优先使用检索到的知识"、多源验证

RAG进阶技巧

5
如何让RAG更好?

🔄 查询改写

把用户问题改写成更适合检索的形式

原问题:"怎么修?"

改写:"iPhone无法开机如何维修"

📚 多轮对话记忆

记住对话历史,结合上下文检索

用户:"它多少钱?"

系统:结合上文"iPhone 15"→ 检索"iPhone 15价格"

🎯 重排序

先用向量检索Top-100,再用更精确的方法重排序

向量检索:快但不够准

交叉编码器:慢但准

结合:又快又准

📊 文档压缩

检索到文档后,只保留与问题相关的部分

长文档(5000字)→ 提取相关段落(500字)→ 喂给LLM

🔀 多查询检索

把一个问题拆成多个子问题,分别检索再合并

"比较iPhone和华为的优缺点"

→ "iPhone优点" + "iPhone缺点" + "华为优点" + "华为缺点"

🧠 知识图谱增强

不仅检索文档,还检索实体关系

文档:"Sam Altman是OpenAI CEO"

知识图谱:Sam Altman --CEO--> OpenAI --开发--> GPT-4

总结

核心总结

🎓 一句话总结

  • 定义:RAG = 检索增强生成,让AI先"查资料"再回答
  • 流程:问题向量化 → 检索相关文档 → 构建Prompt → LLM生成
  • 优势:减少幻觉、知识可更新、可溯源、成本低、保护隐私
  • 挑战:检索质量、上下文限制、分块策略、延迟、知识冲突

下一篇预告

RAG需要知识库,知识库从哪来?

RAG的核心是知识库。但知识库怎么构建?如何把各种文档(PDF、Word、网页、数据库)变成向量?如何保证知识库的质量?

下一篇,我们就讲讲知识库——AI的"参考书"。

✏️ 手绘图解 · AI Catch 出品

第 52 篇 / 共 84 篇 · 第六阶段:检索与知识增强