你大概率已经遇到过下面这些瞬间。
▪你把公司文档全喂给 AI,它回答得一本正经,但偏偏答错最新版流程。
▪你明明知道答案就在那份 PDF 里,模型就是死活找不到。
▪你把上下文窗口拉到很大,成本上去了,效果却没稳定变好。
▪你以为做RAG就是接个向量数据库,结果上线后发现真正难的是切分、排序、权限和评测。
▪你看别人 demo 一切正常,自己一落地就开始出现答非所问、引用错文档、版本串线。
如果用一句不完美但够用的话来定义,RAG就是让大模型在回答之前,先去外部知识库里翻资料,再带着资料回来作答。
这个知识点最常见的误解是,很多人把RAG理解成给模型外挂一个搜索框。其实不是。搜索只是其中一步,真正值钱的是你如何把资料切开、存好、找到、重排、塞回 prompt,并保证它在生产环境里稳定工作。
我更喜欢把RAG想成给一个很聪明但记忆不可靠的实习生配了一套外脑系统。这个实习生脑子很好,推理也不错,但他不一定记得你公司昨天刚更新的报销制度。你不能只跟他说,自己想。你得先告诉他资料放在哪,哪些资料可信,查到后怎么引用,引用冲突时怎么处理,最后怎么把答案写成用户能看懂的话。
再换一个类比,RAG不是给模型加肌肉,而是给模型装图书馆、目录卡、分拣台和引用规则。图书馆没有目录,藏书再多也没用。
- 定义与本质
1.1 一句话本质定义
RAG,Retrieval-Augmented Generation,检索增强生成,是一种在推理时临时引入外部知识的系统架构,让大模型不只依赖训练时记住的内容,而是能基于最新、私有、可追溯的资料回答问题。
1.2 它在更大技术体系中的坐标
从技术栈看,RAG位于模型能力和业务数据之间。
▪上游依赖,文档解析、清洗、分块、Embedding、索引、权限模型、数据更新机制
▪中间核心,查询理解、召回、过滤、重排、上下文组装、答案生成
▪下游依赖,客服问答、企业知识库、代码助手、研究助手、报表分析、Agent 工具调用
如果把整个LLM应用栈看成一条流水线,RAG干的是把对的资料,在对的时机,以对的顺序,放到模型眼前。
1.3 它到底解决什么问题
没有RAG之前,世界更像这样。
▪模型知识停在训练截止日
▪模型不知道你的私有文档
▪模型会把相似但不正确的内容脑补成答案
▪你很难给出引用来源,很难审计,很难追责
有了RAG之后,世界变成这样。
▪模型可以回答最新知识,不必每次更新都微调
▪模型可以利用企业内部资料、产品文档、会议纪要、代码库
▪模型回答能尽量贴着证据走,而不是只靠参数记忆
▪系统可以返回引用、版本、来源和权限边界
1.4 RAG 不是孤立选项,它总在和别的方案比较
| 方案 | 知识更新 | 一次性成本 | 单次调用成本 | 可解释性 | 适合什么问题 |
|---|---|---|---|---|---|
| 纯 Prompt | 手工改提示词 | 低 | 低 | 低 | 简单格式化、固定任务 |
| RAG | 更新文档并重建索引 | 中 | 中 | 高 | 知识密集型问答、企业资料问答 |
| 微调 | 重新训练或继续训练 | 高 | 中 | 中 | 风格、结构、行为稳定化 |
| 长上下文直塞 | 直接把大量资料丢进 prompt | 低 | 高 | 中 | 小规模、一次性、深度整文分析 |
这里面最容易想明白的一点是,RAG主要解决知识接入问题,微调主要解决行为塑形问题。两者不是敌人,很多生产系统是一起用的。
1.5 不同流派对 RAG 的理解差异
今天业内对RAG至少有三种常见理解。
▪狭义RAG,只要是检索相关片段再拼到 prompt 里,就算RAG
▪工程RAG,强调完整链路,包括索引、重排、权限、评测、监控
▪Agentic RAG,把检索看成一个动态决策过程,模型会主动改写查询、拆子问题、多轮找证据
狭义理解适合入门,工程理解适合落地,Agentic 理解适合复杂任务。很多争论,其实不是谁对谁错,而是大家讨论的根本不是同一个层级。
- 端到端流程
RAG 真正难的地方,不在你知道有多少组件,而在你明白每一步错了会带来什么连锁反应。
2.1 一条完整链路
| 步骤 | 输入 | 输出 | 关键决策点 | 常见误区 |
|---|---|---|---|---|
| 1. 数据接入 | PDF、网页、数据库、代码仓库 | 可解析内容 | 用什么解析器,保留哪些结构 | 只抽正文,丢掉标题、表格、版本等上下文 |
| 2. 内容清洗 | 原始文本 | 结构化文本 | 去噪程度、保留元数据 | 把页码、标题、来源、更新时间一并清掉 |
| 3. 分块 Chunking | 长文档 | 若干 chunk | 块大小、重叠比例、按结构还是按长度切 | 固定按字符切,导致句子和语义断裂 |
| 4. 向量化Embedding | chunk | 向量 | 选什么 embedding 模型,是否分域 | 拿通用 embedding 硬打专业语料 |
| 5. 建索引 | 向量和元数据 | 可检索知识库 | 向量库选型、是否加BM25、元数据字段 | 只有向量,没有关键词和过滤条件 |
| 6. 查询预处理 | 用户问题 | 检索查询 | 改写、拆问题、时间过滤、权限过滤 | 把用户原话直接拿去查,完全不做理解 |
| 7. 召回与重排 | 查询 + 索引 | Top-K 证据 | 相似度、混合检索、rerank、去重 | 只看相似度分数,不看证据是否真的可回答 |
| 8. 上下文组装 | 检索结果 | prompt context | 顺序、压缩、截断、引用格式 | 一股脑塞 20 段,关键证据埋在中间 |
| 9. 生成与校验 | query + context | 最终答案 | 引用、拒答、置信度、事实校验 | 生成后不做 groundedness 检查 |
| 10. 反馈与评估 | 用户反馈、日志 | 迭代信号 | 评测集、线上反馈、错误归因 | 只盯最终满意度,完全不知道哪一层出了错 |
2.2 一步做错,后面会发生什么
▪数据接入错了,后面检索再聪明也只能在坏资料里选最像的错答案
▪分块错了,最常见的后果是证据被切碎,模型拿到的是半句话和半段上下文
▪Embedding选错了,召回会看起来相关,实际答不对
▪没有元数据过滤,系统很容易把 2023 版制度答成 2026 版
▪没有重排,最关键的一段可能排在第 7 个位置,然后被大模型忽略
▪没有评测闭环,你只能知道用户不满意,但不知道是切块、检索还是生成的问题
2.3 一个极简伪代码
def answer(query):
query_v2 = rewrite(query)
candidates = hybrid_retrieve(query_v2, top_k=20, filters={“tenant”: “A”})
ranked = rerank(query_v2, candidates)[:5]
context = pack_context(ranked)
response = llm.generate(query=query, context=context, require_citations=True)
return validate(response, ranked)
这个伪代码看着简单,但里面已经藏了RAG的四个核心动作,找什么、从哪找、按什么顺序给、答完怎么兜底。
- 底层原理
3.1 先讲直觉,不先讲公式
RAG的直觉非常朴素。
大模型像一个读过很多书的人,但不是一个随时都记得精确页码的人。你问他一个问题,他可能有印象,也可能模模糊糊。RAG做的事,就是先帮他从资料堆里翻到几页可能有答案的证据,再让他基于这些证据整理成自然语言。
所以RAG的关键不是让模型知道更多,而是让模型在有限注意力里看到更相关的东西。
3.2 为什么不是所有资料都直接塞给模型
因为上下文窗口再大,也不等于利用率就高。
在当前公开实践里,有几个很有代表性的信号。
▪Anthropic 在介绍Contextual Retrieval时提到,如果知识库小于约 200,000 tokens,大约 500 页左右材料,很多时候可以直接整库放进 prompt,再配合 prompt caching,速度可提升到原来的 2 倍以上,成本最多可下降约 90%
▪但一旦知识库变大,纯长上下文就会遇到成本高、延迟高、噪音多的问题
▪一些 2025-2026 年的工程讨论里,RAG相对长上下文在典型问答负载下常被估算为便宜一个数量级,个别案例给到 8-82 倍的成本差
这就像考试时开卷。你把整本书都摊开,不代表你就更容易答对。真正有用的是先翻到可能的章节,再定位关键段落。
3.3 三个最常见的数学工具
3.3.1 向量相似度
向量检索最常见的是余弦相似度。
cos(q, d) = (q · d) / (||q|| * ||d||)
▪q是查询向量
▪d是文档向量
▪分数越接近 1,通常表示语义越接近
它解决的是,用户明明没说文档里的原词,但意思很像,也能找出来。
3.3.2 BM25
BM25更像关键词老将,擅长精确词匹配。
score(D, Q) = Σ IDF(q_i) * (f(q_i, D) * (k1 + 1)) / (f(q_i, D) + k1 * (1 - b + b * |D| / avgdl))
你不用死记公式,知道两件事就够了。
▪它更擅长错误码、产品名、SKU、专有名词、时间编号这种精确匹配
▪它会考虑词频和文档长度,不是简单的出现次数统计
3.3.3 MMR 重排
如果只按相似度取前 5 条,常常会取回 5 段非常像的内容,信息高度重复。MMR的直觉是,既要相关,也要多样。
MMR = argmax [lambda * Sim(query, doc) - (1 - lambda) * max Sim(doc, selected)]
它做的事像组会邀请人,既要请最懂这个话题的人,也别请五个讲同一件事的人。
3.4 为什么用 A,不用 B
| 比较项 | A | B | 为什么经常选 A |
|---|---|---|---|
| 检索方式 | 混合检索 | 纯向量检索 | 混合检索同时照顾语义相似和精确关键词 |
| 分块方式 | 按结构切块 | 固定长度硬切 | 结构化切块更少断义,尤其适合文档、Wiki、手册 |
| 结果顺序 | 原文顺序重排 | 纯按相似度排序 | 原文顺序更连贯,长上下文阅读效果更稳 |
| 生成方式 | 带引用回答 | 无引用自由回答 | 更易审计,也更容易发现错在哪 |
3.5 真懂 RAG 的人最在意的细节
细节 1,检索正确,不等于答案正确
你把对的 chunk 取回来,只说明召回可能没问题,不代表模型会用,也不代表它不会混着自己的先验乱答。
细节 2,召回率和精确率要平衡
RAG不是永远追求更准。有时你得先保证把答案所在片段放进来,也就是先保召回,再靠重排和压缩去降噪。
细节 3,顺序真的很重要
Stanford 在 2025 年一篇对比多阶段RAG的研究里指出,简单的 DOSRAG,也就是先检索再按原文顺序重排,在多个长文问答基准上能稳定匹配甚至超过更复杂的多阶段方法。一个典型数字是,在 InfinityBench 的 30K token 预算下,DOSRAG达到 93.1%,高于 VanillaRAG的 87.8%
这个结论特别有意思。它告诉你,复杂不一定更强,很多时候只是更贵、更慢、更难调。
- 分层次展开
RAG不是一个点,而是一个从微观到宏观逐层展开的系统。
4.1 第一层,Chunk 层
这里关心的是一小段文本到底怎么切。
▪定义,把长文拆成适合检索和拼接的最小工作单元
▪实例,FAQ 常从 200-500 tokens 起步,技术文档常从 400-800 tokens 起步,重叠通常在 10%-20%
▪优势,命中更精确,成本更低
▪局限,切太碎会丢上下文,切太大又会引入噪音
▪适用条件,问题答案通常集中在局部片段
4.2 第二层,Document 层
这里关心的是一整篇文档怎样被表示。
▪定义,不只保存 chunk 文本,还保存标题、章节、来源、更新时间、版本、租户、权限
▪实例,一条 chunk 记录里除了正文,还会带doc_id、section_title、updated_at
▪优势,便于过滤、版本控制和引用回溯
▪局限,元数据设计差会导致检索虽快但不准
▪适用条件,多版本、多团队、多租户知识库
4.3 第三层,Retriever 层
这里关心的是怎么找。
▪定义,从索引里把候选证据召回出来
▪实例,向量检索、BM25、混合检索、图检索
▪优势,能针对不同查询类型做差异化策略
▪局限,错误往往隐蔽,看起来像相关,实际上答不出
▪适用条件,知识库规模大于单次上下文窗口
4.4 第四层,Context 层
这里关心的是怎么喂。
▪定义,把召回结果整理成模型最容易用的上下文
▪实例,去重、重排、压缩、保留原始顺序、在前后放最关键证据
▪优势,直接影响最终回答质量
▪局限,太贪心会塞满噪音,太保守又会漏证据
▪适用条件,大模型上下文敏感且有 lost in the middle 风险
4.5 第五层,Product 层
这里关心的是怎么让用户可用。
▪定义,RAG不再是检索实验,而是一个产品能力
▪实例,客服机器人返回引用来源,代码助手返回文件路径,知识库机器人按权限过滤
▪优势,更可信,更可审计
▪局限,牵扯权限、日志、反馈闭环,复杂度上升
▪适用条件,真的要上线给用户用
4.6 层级对比表
| 层级 | 主要对象 | 核心问题 | 做好了的表现 | 做差了的表现 |
|---|---|---|---|---|
| Chunk 层 | 单段文本 | 怎么切 | 召回精准,信息完整 | 断句、断义、错过答案 |
| Document 层 | 文档与元数据 | 怎么组织 | 过滤准确,引用清晰 | 版本串线,权限混乱 |
| Retriever 层 | 召回器 | 怎么找 | 相关内容能被找回 | 找得像,但答不对 |
| Context 层 | prompt 上下文 | 怎么喂 | 证据顺序合理,模型能用 | 关键证据埋没在中间 |
| Product 层 | 用户体验与治理 | 怎么上线 | 可追踪、可回放、可迭代 | 只有 demo,没有系统 |
如果你只在某一层努力,RAG很容易看起来做了很多,最后还是不稳定。真正成熟的系统,五层都得看。
- 主流方案与实现对比
5.1 架构方案对比
| 方案 | 核心思路 | 适用规模 | 优势 | 劣势 | 什么时候不该选 |
|---|---|---|---|---|---|
| Naive Vector RAG | 向量召回后直接拼 prompt | 小到中型知识库 | 快速起步,工程量小 | 对精确词、版本、噪音处理差 | 文档版本多、关键词很重要时 |
| Hybrid RAG | 向量 +BM25+ 过滤 | 中到大型知识库 | 兼顾语义和关键词 | 调参更多 | 语料非常单一、问题极简单时 |
| Contextual Retrieval | 给 chunk 补上下文再做检索 | 复杂长文档 | 召回更稳 | 预处理成本高 | 文档简单短小、召回已足够时 |
| Agentic RAG | 多轮拆问题、改写、验证 | 复杂任务、多跳推理 | 复杂问题表现更好 | 延迟和成本明显上升 | 低延迟客服、预算极紧时 |
| Long Context + Retrieve | 先检索缩小范围,再长上下文深读 | 大文档深分析 | 兼顾召回和整文推理 | 编排复杂 | 高频短问答场景 |
这里面一个特别值得注意的数据是,Anthropic 在Contextual Retrieval的介绍里给出过非常醒目的提升。
▪只做 contextual embeddings,失败检索率可下降约 35%
▪contextual embeddings 加 contextualBM25,失败检索率可下降约 49%
▪再叠加 reranking,可下降约 67%
这个数字不是说你一上来就必须做Contextual Retrieval,而是提醒你,很多所谓模型不会答,问题其实出在检索前的表示方式。
5.2 向量存储与实现工具对比
| 工具/方案 | 部署方式 | 优势 | 劣势 | 适合谁 |
|---|---|---|---|---|
| pgvector | PostgreSQL 扩展 | 和现有业务库整合方便,权限和事务模型熟 | 大规模纯向量性能不如专业库 | 已有 Postgres 团队 |
| Qdrant | 自建或托管 | 过滤和 payload 设计友好,生态成熟 | 需要额外维护 | 中大型业务 |
| Pinecone | 托管 | 上手快,运维轻 | 供应商绑定感更强 | 想快速上线的团队 |
| Weaviate | 自建或托管 | 向量 + schema + 搜索能力完整 | 学习成本稍高 | 做复杂语义搜索的团队 |
| Chroma | 本地或轻量部署 | 简单,适合原型 | 生产能力有限 | Demo、PoC、个人项目 |
5.3 一个很实用的选型判断
▪先做原型,用Chroma或本地 FAISS 都行,目标是跑通链路
▪要和现有业务权限、审计、事务深度结合,pgvector很顺手
▪要做中大型线上服务,Qdrant、Pinecone、Weaviate更常见
5.4 正向选型与反向排除
▪如果你的问题里有大量错误码、型号、合同编号,别只上纯向量,混合检索几乎是默认项
▪如果你的知识库只有几十篇文档,而且单次问答低频,先别急着建复杂RAG,长上下文直塞可能更省事
▪如果你的业务强依赖权限边界,别用一个只会相似搜索、不会做严肃过滤的轻量方案
▪如果你的任务大量涉及多跳推理,别指望单轮 top-k 检索就永远够用,至少准备 query rewrite 和 subquery 能力
5.5 一个最小实现骨架
retriever = HybridRetriever(
dense_index=vector_db,
sparse_index=bm25_index,
metadata_filters=[“tenant”, “version”, “doc_type”],
)
pipeline = (
QueryRewriter()
retriever
Reranker(top_k=5)
ContextPacker(max_tokens=6000)
GroundedGenerator(citations=True)
)
你会发现,真正决定上限的往往不是最后那个GroundedGenerator,而是前面几层。
- 局限性与常见陷阱
RAG绝对不是装上就灵。
6.1 常见坑点总表
| 陷阱 | 典型场景 | 为什么会出现 | 实际后果 | 缓解方案 |
|---|---|---|---|---|
| 切块太机械 | 50 页 PDF 直接每 500 字切一刀 | 只图简单,忽略语义边界 | 答案上下文断裂 | 按标题、段落、表格结构切块 |
| 缺失元数据 | 多版本制度文档共存 | 只存正文,不存版本时间 | 答到旧政策 | 存version、updated_at、source |
| 只做向量,不做关键词 | 查询含报错码、SKU、专有名词 | 误以为向量万能 | 找到相似概念,错过精确答案 | 加BM25或 exact match |
| Top-K 太贪心 | 一次塞 20 个 chunk | 想提高召回,忽视噪音 | 模型答非所问,lost in the middle | 先召回更多,再重排压缩到 3-8 段 |
| 只看最终答案,不测检索 | 团队只盯满意度 | 缺乏阶段化评测 | 出错不知道该修哪 | 分开测 recall、precision、groundedness |
| 权限没收紧 | 多租户知识库 | 检索层没做权限过滤 | 串租户泄露资料 | 过滤前置,不要只在生成后遮盖 |
6.2 五个最容易被低估的问题
问题 1,检索像,不等于可回答
很多 chunk 和问题语义接近,但没有回答所需的关键事实。这会让系统看起来很聪明,实际上只是在拿边缘信息糊用户。
缓解方式,给检索结果做 answerability 判断,至少做 rerank,不要只盯 cosine score。
问题 2,重叠不是越多越好
很多人听说 overlap 能保上下文,于是一路加到 30%、40%。结果索引体积暴涨,重复召回严重,最后 prompt 里充满长得差不多的段落。
工程上更常见的起点是 10%-20%,不够再调。
问题 3,版本漂移比幻觉更要命
幻觉是胡编,版本漂移更阴。它答的每句话都像真的,甚至引用也是真的,只不过引用的是旧版本。
这种错比胡说更难被发现。
问题 4,RAG 不是数据库
RAG很适合问文本证据型问题,但不适合所有精确计算型问题。比如精确库存、实时报表、余额这类问题,很多时候更应该走 SQL、API 或工具调用,而不是让RAG硬答。
问题 5,复杂方案不一定更好
Stanford 那篇 DOSRAG研究给人的提醒特别强,很多时候保留原文顺序、用更强 embedding、控制好上下文预算,比引入多层摘要树和多轮 agent 更划算。
所以别迷信花活,先把强基线打稳。
- 优化策略与最佳实践
下面这些策略,基本都是真正能拉开线上效果差距的点。
7.1 优化策略表
| 策略 | 核心思路 | 具体做法 | 预期效果 | 适用条件 | 成本级别 |
|---|---|---|---|---|---|
| 结构化切块 | 先尊重文档结构,再考虑 token | 按标题、段落、表格、代码块切 | 召回更完整,断义更少 | 文档有明显结构 | 🟢 低成本 |
| 混合检索 | 语义和关键词一起查 | 向量 +BM25+ metadata filter | 精确词召回明显变好 | 错误码、型号、版本多 | 🟡 中等成本 |
| Rerank + 压缩 | 先多找,再精选,再压缩 | Top20 召回,重排到 Top5,再做压缩 | 降噪,减少 lost in the middle | 中大型知识库 | 🟡 中等成本 |
| Contextual Retrieval | 给 chunk 补局部背景 | 为每个 chunk 生成上下文摘要并联合检索 | 复杂长文档召回更稳 | 语义依赖强,chunk 易失真 | 🔴 高成本高回报 |
| Query Rewrite / HyDE | 先把问题改写成更好检索的形态 | 扩缩写、补实体、生成假想答案向量 | 模糊问题更好找 | 用户问题口语化、歧义多 | 🟡 中等成本 |
| 评测闭环 | 不只看最终回答 | 建 gold set,线上回放,分阶段打分 | 能定位问题层 | 需要长期迭代 | 🟡 中等成本 |
7.2 哪些优化最先做
如果你资源有限,优先级我会这么排。
结构化切块 + 元数据
混合检索
Rerank
评测闭环
Query rewrite
Contextual Retrieval或Agentic RAG
这个顺序的逻辑很简单。先修地基,再修路,再谈自动驾驶。
7.3 几个很值钱的经验
▪技术文档里,标题和小节名经常比正文还重要,别在清洗阶段扔掉
▪FAQ、政策制度、帮助中心这类内容,parent-child 或 Small2Big 往往很有效,小块召回,大块补全
▪对代码和配置文件问答,纯 semantic search 往往不够,lexical 检索非常重要
▪对多轮对话类RAG,先处理会话摘要,不然旧上下文会慢慢腐烂
7.4 一个很多团队都会踩的错觉
很多团队会觉得,Embedding模型升级一版,效果就该明显提升。实际常常不是这样。RAG的瓶颈可能根本不在 embedding,而在切块、过滤、顺序、权限、评测。
就像厨房里做菜不好吃,你换一把更贵的刀,不一定先解决问题。
- 工程落地与生产实践
RAG一旦进入生产,问题会从模型效果,迅速转向延迟、成本、权限、更新和可观测性。
8.1 性能与延迟
简单RAG的体验目标通常不是绝对最强,而是足够快。
▪问答型应用,首 token 常希望控制在 2-5 秒内
▪如果加入 query rewrite、rerank、多轮搜索,延迟很容易上升数百毫秒到数秒
▪高频场景下,比模型参数更重要的常常是缓存命中率和检索层效率
很现实的一点是,用户能容忍一个偶尔答得一般但 2 秒出结果的系统,不一定能容忍一个 15 秒后才给高质量答案的客服机器人。
8.2 成本控制
RAG的成本大头通常分成三类。
▪离线成本,Embedding和建索引
▪在线成本,查询 embedding、检索、rerank、LLM生成
▪隐性成本,重建索引、日志、评测和人工标注
一个很实用的成本判断是。
▪文档小,更新少,查询低频,可以考虑长上下文直塞
▪文档大,查询高频,更新频繁,RAG更容易摊薄成本
8.3 更新与迭代策略
Microsoft 的生产RAG指南里把更新策略讲得很明确,真实系统不能只做全量重建。
▪增量更新,适合每天都有少量新增
▪触发式更新,适合文档修改后立即生效
▪选择性重建,适合局部变更
▪版本快照,适合需要回溯和审计
如果你问我一句最朴素的建议,就是别把索引当一次性产物,要把它当持续演进的数据资产。
8.4 监控与兜底
| 监控项 | 说明 | 常见阈值或观察方式 | 兜底思路 |
|---|---|---|---|
| 检索命中率 | gold evidence 是否进入 Top-K | 看 Top3、Top5、Top10 | 调 chunk、query rewrite、混合检索 |
| 引用覆盖率 | 最终回答是否给出来源 | 按回答类型分桶看 | 无法引用时主动拒答 |
| Groundedness | 回答是否真的基于证据 | LLM-as-judge + 人工抽检 | 低分触发重答或退回搜索 |
| 延迟 | 检索和生成各层耗时 | P50、P95、P99 | 缓存、降级、少一步 rerank |
| 权限过滤命中 | 是否发生越权候选被召回 | 审计日志 | 过滤前置,严格 tenant isolation |
| 用户反馈 | 点踩、追问、复制率 | 线上埋点 | 回放失败请求,补评测集 |
8.5 安全与权限
这块真的不能偷懒。
▪权限过滤要前置到检索阶段,不要等答案生成后再挡
▪多租户环境必须把 tenant id 当成第一层过滤条件
▪文档中涉及敏感字段时,建议在入库前做脱敏或分级
▪记录引用来源时,也要确保来源本身对当前用户可见
8.6 高可用与扩展性
大多数RAG系统真正的压力点不是大模型,而是索引服务和更新链路。
▪热点知识库可以做分片和缓存
▪查询高峰时要有降级策略,比如关闭昂贵 rerank,只保留混合召回
▪更新链路和在线检索最好解耦,避免重建索引拖慢在线查询
一句话总结生产实践,RAG不只是让模型答对,还要让它持续、稳定、合规地答对。
- 进阶形态与相关延伸
RAG这两年最有意思的变化,不是它消失了,而是它分化了。
9.1 常见进阶版本
▪Multimodal RAG,不只检索文字,也检索图片、图表、版面和表格
▪Graph RAG,把实体关系和图结构引入检索
▪Agentic RAG,让模型主动规划检索策略和多轮求证
▪Contextual Retrieval,给 chunk 添加局部上下文再检索
▪Hybrid Memory,用RAG先缩小范围,再用长上下文做深读
9.2 对比表
| 版本 | 解决什么痛点 | 优势 | 劣势 | 什么时候值得上 |
|---|---|---|---|---|
| 基础RAG | 私有知识接入 | 简单、稳定、成熟 | 对复杂多跳问题有限 | FAQ、帮助中心、制度问答 |
| Multimodal RAG | 图表/版面/截图无法纯文本理解 | 能处理图文混合资料 | 成本高,解析复杂 | 财报、论文、技术手册、UI 文档 |
| Graph RAG | 实体关系复杂 | 对关系推理更强 | 图构建昂贵 | 法务、风控、知识图谱类场景 |
| Agentic RAG | 多跳问题、模糊问题 | 复杂问题更强 | 延迟和成本高 | 研究助手、复杂分析 |
| Hybrid Memory | 大库 + 长文深读 | 平衡范围和深度 | 编排复杂 | 代码库、报告深分析 |
9.3 基础版什么时候就够了
下面这些场景,基础RAG往往已经很能打。
▪帮助中心
▪内部制度查询
▪售后知识库
▪产品文档问答
▪中小规模企业内部助手
9.4 什么时候该上进阶版
▪文档里大量答案藏在表格、图片和版面关系里,上Multimodal RAG
▪问题需要跨实体、跨文档、跨层级关系推理,上Graph RAG
▪用户问题非常模糊,还经常要分解、追问、验证,上Agentic RAG
▪需要读整段长文逻辑,又不能每次把全库塞进上下文,上Hybrid Memory
9.5 什么情况下属于过度设计
▪你还没做基本评测,就先上多 agent 检索
▪你 FAQ 只有 200 篇,却上图检索、树摘要、知识图谱三件套
▪你的主要问题是版本没过滤,却试图靠更复杂的 embedding 去解决
这类过度设计,本质都一样,问题还没定位,方案已经失控了。
- 核心 Takeaways 与深度追问
10.1 如果只记住三句话
RAG不是搜索外挂,而是一整套把证据送到模型眼前的系统工程。
生产RAG的瓶颈通常不在模型本身,而在切块、过滤、重排、权限和评测。
更复杂的RAG不一定更强,先把强基线打稳,很多时候已经能赢过花哨架构。
10.2 深度追问
概念理解类
- 为什么RAG不能彻底消灭幻觉
RAG只是提高证据供给质量,不保证模型一定正确使用证据,也不保证检索永远无误。
- 为什么很多RAG系统答错,不是因为模型笨
常见根因在检索层,尤其是切块、版本过滤和上下文组织。
- 为什么长上下文没有杀死RAG
长上下文解决的是装得下,不是一定用得好。成本、延迟、噪音和注意力稀释仍然存在。
技术选型类
- 什么时候优先用RAG,什么时候优先微调
知识更新和可追溯需求强时优先RAG,风格和行为稳定化时优先微调。
- 什么时候必须做混合检索
用户问题里常出现错误码、产品号、专有名词、版本号时,混合检索几乎是默认项。
- pgvector、Qdrant、Pinecone怎么选
看团队基础设施、权限要求、规模和运维能力,不存在统一最优。
工程实践类
- chunk size 到底怎么定
没有银弹,通常从 300-800 tokens 起步,结合文档类型、问题粒度和评测结果迭代。
- Top-K 是不是越大越好
不是。一般是先多召回,再重排压缩。直接给太多 chunk 容易噪音淹没证据。
- RAG该怎么评测
分阶段评测,至少拆成 retrieval、rerank、grounded generation 三层,不要只看最终答案满意度。
边界场景类
- RAG能回答实时数据库问题吗
不推荐只靠RAG。精确实时值更适合走 API、SQL 或工具调用。
- RAG能处理图片和表格吗
纯文本RAG很有限,需要 OCR、版面理解或Multimodal RAG。
- Agent 一定要配RAG吗
不一定。小范围任务、明确上下文、低频一次性分析时,长上下文也可能够用。但一旦涉及大知识库、私有资料、重复查询,RAG的价值会快速变大。
如果把这部分再压缩成一句特别接地气的话,就是,RAG的核心不是查,而是查得到、查得准、查得起、查完还能稳定地答。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~