RAG 是什么?为什么大模型需要外部知识库?
RAG 是什么?为什么大模型需要外部知识库? - 一句话定位
一句话核心:RAG(检索增强生成)是给大模型装"实时外挂知识库"的技术方案,通过"先检索、后生成"两步走,解决 LLM 知识陈旧和幻觉两大痛点;面试必问是因为 2024-2025 年企业级 AI 应用 80% 以上都基于 RAG 架构。
核心概念(术语表)
- RAG (Retrieval Augmented Generation):检索增强生成,把"信息检索"和"文本生成"结合的 AI 架构方案
- LLM (Large Language Model):大语言模型,离线训练完成后参数冻结,无法主动获取新知识
- Embedding 模型:把文字序列转换为固定维度向量的模型,相似语义对应相近向量
- 向量数据库 (Vector Database):专门存储和检索高维向量的数据库,代表产品 Milvus、Chroma、Qdrant、Pinecone
- Chunk (文本块):把长文档按规则切成的最小检索单元,典型大小 256-512 tokens
- Top-k 检索:从向量库中按相似度排序后取前 k 个最相关片段,k 通常取 3-10
- 幻觉 (Hallucination):模型"编造"看似合理但实际不准确内容的现象,源于概率预测
- 余弦相似度 (Cosine Similarity):衡量两个向量方向相近程度的指标,范围 [-1, 1],与长度无关
- 2020 年由 Meta AI(原 Facebook AI)的 Patrick Lewis 等人在论文《Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks》中首次提出
- 当时为解决开放域问答、知识密集型 NLP 任务中"模型不知道答案"的难题
- 2023 年 GPT-4 引发 LLM 应用浪潮后,RAG 迅速成为企业落地大模型的主流方案
- 2024 年起 LangChain、LlamaIndex 等框架把 RAG 工程化推到新高度,GraphRAG、Self-RAG、Agentic RAG 等新变体陆续涌现
工作原理 / 核心机制
整体思路:RAG = 检索 + 生成,把"模型参数里没有的知识"从外部知识库临时取出来,塞到 Prompt 里,让 LLM 基于这些事实回答,而非依赖参数记忆。
输入/输出:输入 = 用户自然语言问题;输出 = 基于检索事实生成的、可溯源的自然语言回答。
核心 4 步流程:
第 1 步 · 文档索引(离线预处理):把 Word、Excel、PDF、Markdown 等异构文档按规则切成 chunk(典型 256-512 tokens),调用 Embedding 模型把每个 chunk 转成 768/1024/1536 维向量,存入向量数据库。输入:原始文档;输出:chunk 向量 + 原文索引。
第 2 步 · 向量化用户问题(在线):用户提问后,用同一个 Embedding 模型把 query 也转成同维度向量,保证向量空间一致。输入:query 字符串;输出:query 向量。
第 3 步 · 检索 (Retrieval):在向量库中用余弦相似度或欧氏距离做 ANN 近邻搜索(如 HNSW/IVF 索引),找出 Top-k(通常 k=3-10)最相似的 chunk。输入:query 向量;输出:Top-k 文本片段 + 相似度分数。
第 4 步 · 生成 (Generation):把"系统 Prompt + 检索结果 + 用户问题"组装成最终 Prompt 喂给 LLM(如 GPT-4、Qwen-Plus、DeepSeek),模型基于上下文生成回答。输入:上下文 Prompt;输出:自然语言答案。
关键知识点
- RAG = Retrieval(检索)+ Generation(生成),本质是"两阶段流水线"
- LLM 训练完成后参数冻结,无法学习训练数据时间点之后的新事件
- 大模型幻觉的根因:基于训练数据概率预测下一个 token,未知问题也会强行作答
- 文档切块 (Chunking) 策略直接决定 RAG 效果的天花板
- chunk 太大→语义模糊、噪声多;太小→上下文断裂
- 典型 chunk 大小 256-512 tokens 是工程经验最优点
- Embedding 模型决定"语义匹配"能力,常用 BGE、OpenAI text-embedding-3、Qwen Embedding
- 向量数据库做的是 ANN 近邻搜索,时间复杂度约 O(log n),百万级文档 < 50ms 响应
- 余弦相似度只看向量方向,与长度无关,特别适合文本相似度比较
- Top-k 的 k 值是经验参数,k=3~10 在多数场景效果最优
- 完整 RAG 工程链路:文档解析 → 切块 → Embedding → 入库 → 检索 → 重排 → 生成
- 检索结果通常还需 Rerank 模型二次排序,可再提升 10-30% 精度
- RAG 优势是"零训练成本更新知识",企业私有数据无需重新训练模型
- 与 Fine-tuning 相比,RAG 适合知识频繁更新场景,FT 适合改变模型行为模式
- 2024 年起 Advanced RAG 引入 HyDE、Self-RAG、Agentic RAG、GraphRAG 等新变体
- 阿里云百炼、Qwen-Plus 等国内大模型平台均原生支持 RAG 接入
- 阿里云 C3 仓库已用 Qwen3-Coder + RAG 落地代码评审,成功拦截数十次高危缺陷
应用场景
- 企业智能客服:阿里云百炼 + RAG 接入企业自有 FAQ 库,回答准确率从 60% 提升到 90%+,单次响应 < 2s
- 代码评审(C3 仓库):基于 Qwen3-Coder + RAG + Iflow 实现 AI 辅助代码门禁,已成功拦截数十次高危生产缺陷
- 学术分析 AI:Spring AI + 阿里云 Qwen-Plus + 私域文献库,论文问答准确率显著高于纯 LLM 方案
- 私有知识库问答:金融、医疗、法律行业把内部规章、病例、合同灌入向量库,员工用自然语言检索
- 电商导购:商品库 + RAG 让 AI 推荐时引用真实 SKU、价格、库存,避免幻觉推荐不存在商品
常见误区 / 踩坑
- ❌ 误区 1:以为 RAG = 关键词搜索
✅ 正解:RAG 是语义向量检索,能识别"苹果"和"iPhone"的语义关系,召回率远超 BM25 - ❌ 误区 2:chunk 切得越大越好
✅ 正解:chunk 越大语义越模糊、检索噪声越多,256-512 tokens 是平衡点 - ❌ 误区 3:RAG 能完全消除幻觉
✅ 正解:RAG 只能减少幻觉,模型仍可能忽略检索结果,需要 Prompt 工程约束 - ❌ 误区 4:Embedding 模型可以混用
✅ 正解:建库和检索必须用同一个 Embedding 模型,否则向量空间不一致,检索全部失败 - ❌ 误区 5:RAG 不需要重排序
✅ 正解:Top-k 向量相似度 ≠ 答案相关度,Rerank 模型能再提升 10-30% 精度 - ❌ 误区 6:RAG = Fine-tuning
✅ 正解:RAG 是外挂记忆,FT 是改模型权重;更新成本、适用场景完全不同
性能 / 复杂度
- 向量检索时间复杂度:O(log n)(HNSW/IVF 索引),百万级文档单次检索 < 50ms
- 向量库空间复杂度:O(n × d),d 为向量维度(典型 768/1024/1536)
- 与替代方案对比:
- 关键词搜索 (BM25):O(n) 精确匹配,适合专有名词、代码搜索
- Long Context 直接塞:O(n) 文档读取,1M 上下文价格是 RAG 的 10-100 倍
- RAG (向量 + 生成):O(log n) 检索 + O(m) 生成,m 为输出 token 数
- Fine-tuning:一次性 O(训练样本) 成本,但更新知识需重新训练
- 临界点:知识更新频率 > 月级选 RAG;模型行为需根本改变选 FT;文档 < 100K tokens 用 Long Context,> 100K 用 RAG
与相关概念的区别
- vs Fine-tuning (微调)
- 维度 1(更新成本):FT 需 GPU 数小时-数天,RAG 重建库只需分钟级
- 维度 2(数据量):FT 需万级以上标注数据,RAG 几条文档即可
- 维度 3(适用):FT 改"语气/风格/能力",RAG 加"实时知识"
- 怎么选:知识频繁变选 RAG,行为模式要改选 FT
- vs Long Context (长上下文)
- 维度 1(成本):Long Context 按 token 计费,1M 上下文价格是 RAG 的 10-100 倍
- 维度 2(精度):RAG 检索 Top-k 精度通常高于"塞满所有文档"
- 维度 3(适用):文档 < 100K tokens 用 Long Context,> 100K 用 RAG
- 怎么选:预算紧、知识库大→ RAG;预算足、文档小→ Long Context
- vs 传统搜索引擎
- 维度 1(输出):搜索引擎返回链接列表,RAG 直接返回自然语言答案
- 维度 2(理解):搜索引擎靠关键词,RAG 靠语义向量
- 维度 3(适用):需要"链接列表"→ 搜索;需要"最终答案"→ RAG
- 怎么选:人来找信息用搜索,AI 来回答用 RAG
进阶 / 面试加分项
- 最新进展:2024 年 Microsoft 开源 GraphRAG,结合知识图谱处理跨文档关系;Self-RAG 让模型自己判断"是否需要检索";Agentic RAG 引入多步推理 + 工具调用
- 业界争议:RAG 是否会被 Long Context(如 Gemini 1.5 的 1M tokens)取代?目前共识是 RAG 在成本和精度上仍占优,尤其企业级场景
- 金句送给候选人:RAG 不是银弹,但 2025 年它就是企业落地 LLM 的"水电煤"——不做 RAG 就别谈 ToB AI
面试如何回答
🟢 RAG 是什么?它主要解决了 LLM 的哪两大问题?
回答要点:
RAG(Retrieval Augmented Generation,检索增强生成)是一种把信息检索与文本生成结合的 AI 架构方案。它主要解决 LLM 的两大痛点:
- 知识更新滞后:LLM 离线训练完成后参数冻结,无法回答训练数据时间点之后的事件,例如"今天的新闻"、"最新财报"。
- 幻觉现象:模型基于概率预测生成文本,遇到训练中没见过的问题时会"编造"看似合理但实际不准确的内容。
RAG 通过"先查资料、后回答"机制,先从外部知识库检索相关文档,再把检索结果作为上下文喂给 LLM,让回答有据可依。
金句:RAG 就是给大模型装一个"实时百科外挂大脑"。
加分项:RAG 的本质是用工程手段弥补模型"记忆"的不足,无需重新训练即可分钟级更新知识。
🟢 为什么 LLM 会产生幻觉?
回答要点:
大语言模型的本质是基于训练数据的概率分布预测下一个 token,而不是查询"知识库"。具体原因有三:
- 训练数据有边界:模型没见过的领域或事件,必须"猜",概率高的 token 组合不一定是真的。
- 概率预测的局限:模型追求"流畅合理",不追求"事实正确",所以会自信地说错话。
- 缺乏外部知识校验:参数里没有的信息,无法实时联网核对。
解决思路:RAG 注入外部事实 + RLHF 对齐 + 思维链推理都能缓解,但无法 100% 消除幻觉,幻觉率仍是评估 LLM 可靠性的核心指标。
场景:问 GPT-3.5 一个 2024 年的事件,它会一本正经地编造答案。
加分项:企业落地必须配合 RAG + 约束 Prompt,否则幻觉会直接导致用户投诉或法律风险。
🟡 详细说一下 RAG 的工作流程。
回答要点:
RAG 流程分离线索引和在线推理两阶段,共 4 步:
- 文档索引(离线):把 Word、PDF、Markdown 等文档切成 chunk(典型 256-512 tokens),用 Embedding 模型转成向量存入向量数据库。
- 向量化用户问题(在线):用户提问后,用同一个 Embedding 模型把 query 也转成同维度向量,保证向量空间一致。
- 检索 (Retrieval):向量数据库用余弦相似度做 ANN 近邻搜索,返回 Top-k(通常 k=3-10)最相似的 chunk。
- 生成 (Generation):把"系统 Prompt + 检索结果 + 用户问题"组装成最终 Prompt,喂给 LLM 生成答案。
相比直接 prompt LLM,RAG 多了"检索"这一步,但回答准确率通常提升 30%-50%。
金句:检索是 RAG 的天花板,生成是 RAG 的地板。
加分项:生产环境还会在 Top-k 检索后加 Rerank 模型重排,从 Top-50 裁剪最相关 Top-3 给 LLM,精度再升 10-30%。
🟡 Embedding 模型在 RAG 中起什么作用?
回答要点:
Embedding 模型是把文本(词、句、文档)转成固定维度向量(如 768/1024/1536 维)的模型,是 RAG 语义检索的基石。
核心作用:
- 语义编码:让语义相近的文本在向量空间里距离也近,例如"苹果"和"iPhone"的向量距离比"苹果"和"汽车"近得多。
- 数学化检索:文本变成向量后,可以用余弦相似度或欧氏距离做高效近邻搜索,比关键词匹配更"理解"语义。
- 跨语言桥接:好的 Embedding 模型能捕捉同义、改写、上下文关系。
常见模型:OpenAI text-embedding-3、BGE、M3E、Qwen Embedding,BGE-zh 在中文场景通常优于 OpenAI。
陷阱:建库和检索必须用同一个Embedding 模型,否则向量空间不一致,检索全部失败,这是新手最常踩的坑。
加分项:Embedding 模型的中文能力差异巨大,生产选型要基于自家业务数据做 benchmark。
🟡 RAG 和 Fine-tuning 的区别?实际项目怎么选?
回答要点:
RAG 是"外挂知识库",Fine-tuning 是"改模型权重",两者解决不同维度的问题:
| 维度 | RAG | Fine-tuning |
|---|---|---|
| 更新成本 | 分钟级(重建库) | 数小时-数天(GPU训练) |
| 数据量 | 几条文档即可 | 万级以上标注数据 |
| 适用场景 | 加"实时知识" | 改"语气/风格/能力" |
| 可解释性 | 高(可引用原文) | 低(黑盒) |
| 选型原则:知识频繁更新(> 月级)→ 选 RAG,如客服 FAQ;模型行为要根本改变 → 选 FT,如法律文书风格;两者也可结合:先 FT 调整语气,再 RAG 注入知识。 | ||
| 金句:RAG 是给模型配"外接硬盘",FT 是给模型"洗脑"。 | ||
| 加分项:2024 年起出现 RAFT(Retrieval Augmented Fine-tuning)把两者融合,在专业领域效果优于纯 RAG 或纯 FT。 |
🟡 文档切块 (Chunking) 策略有哪些?chunk 太大或太小会怎样?
回答要点:
Chunking 是 RAG 效果的天花板,常见策略有四种:
- 固定长度切分:按 token 数切,简单粗暴但会切断语义(句子从中间砍断)。
- 按段落/章节切:保留自然语义,但块大小不均。
- 滑动窗口 + 重叠:相邻 chunk 重叠 10-20%,避免边界信息丢失,是生产首选。
- 结构化切分:按 Markdown 标题、代码函数、PDF 段落切,适合异构文档。
块太大的后果:向量语义模糊、检索召回多个无关主题、浪费 token 配额。
块太小的后果:上下文不完整、检索召回片段无法独立回答问题。
经验值:通用文本 256-512 tokens,代码块按函数切,FAQ 按问答对切。
加分项:进阶可用 Small-to-Big 策略——先用小 chunk 检索提升精度,再返回大 chunk 给 LLM 补全上下文,兼顾精度与完整性。
🔴 生产环境中如何优化 RAG 的检索精度和响应速度?
回答要点:
RAG 生产优化分两个维度:
检索精度优化:
- Hybrid Search:BM25 关键词 + 向量语义混合检索,互补短板的标配方案。
- Rerank 重排序:用 BGE-Reranker 等模型对 Top-50 重排,裁剪 Top-3 给 LLM,精度再升 10-30%。
- HyDE (Hypothetical Document Embeddings):让 LLM 先生成"假想答案",再用假想答案的向量去检索,提升召回率。
- Query Rewrite:对用户 query 做改写/扩写,处理口语化和歧义问题。
响应速度优化: - 向量库选型:百万级用 Milvus/Qdrant(开源),十亿级用 Pinecone(托管)。
- ANN 索引:HNSW 索引查询 O(log n),单次 < 50ms。
- 缓存机制:高频 query 缓存 embedding 和检索结果。
- 预计算:离线预生成文档 embedding,在线只算 query embedding。
金句:检索是上限,生成是下限,重排是中间桥梁。
加分项:Advanced RAG 引入 Query Classification + Agent 决定是否走 RAG,避免无效检索拖慢响应。
🔴 GraphRAG、Self-RAG、Agentic RAG 这些新变体的核心改进点是什么?
回答要点:
三大新变体解决传统 RAG 的不同痛点:
- GraphRAG (Microsoft, 2024):
- 痛点:传统 RAG 难处理"跨文档关系"和"全局性问题"(如"公司所有季度财报的共性")。
- 改进:先用 LLM 抽取实体和关系建知识图谱,检索时结合图遍历和向量相似度。
- 适用:企业级知识库、复杂推理问答。
- Self-RAG (2023):
- 痛点:传统 RAG 总是检索,不管需不需要,且不验证检索质量。
- 改进:模型自己决定"是否检索"和"检索结果是否有用",生成"反思 token"。
- 适用:开放域问答、显著减少幻觉。
- Agentic RAG (2024-2025):
- 痛点:传统 RAG 是"单次检索→生成"的线性流程,无法处理多跳问题。
- 改进:引入 Agent 多步推理,可多次检索、调用工具、自我反思。
- 适用:复杂研究任务、多跳问答(如"对比 A 公司和 B 公司近三年战略差异")。
金句:传统 RAG 是"一次问一次答",Agentic RAG 是"边想边查"。
加分项:GraphRAG 在 Global QA 任务上比传统 RAG 提升 20-40%,但构建成本高 5-10 倍,适合高价值场景。
