想象你开了一家“知识餐厅”,客人络绎不绝地点菜——所谓“菜”,是各种信息需求:“地球到月球多远?”“我们公司的报销流程是什么?”“今天股市收盘多少?”。你有三种上菜方式。第一种是自助餐:所有食材都摆在明面上,客人自己翻找、自己取用,看到什么就是什么(传统搜索)。第二种是记忆大厨:不参考任何食材,凭脑中的菜谱直接创作,出菜飞快,但旧菜谱会过时,偶尔还会自信地端上一道根本不存在的菜(纯生成)。第三种是采购主厨:先仔细听需求,去仓库和市场现买新鲜食材,洗切烹饪后上桌,甚至能告诉客人每样食材的产地和发票(RAG,即检索增强生成)。三种方式没有谁绝对最好,只看客人是谁、点什么菜。这篇文章就用这套“餐厅逻辑”,带你把准确性、实时性、成本、可解释性、数据更新这些维度逐个比一遍,最后给你一张实用的选型菜单。

岗位关联

掌握三方案的权衡与混合架构,是搜索系统、问答系统与知识管理平台技术选型的核心决策能力,直接决定产品效果、用户体验与运营成本。

目录
  1. 可视化演示
  2. 三方案原理
  3. 准确性对比
  4. 实时性对比
  5. 成本对比
  6. 可解释性
  7. 数据更新灵活性
  8. 场景选型
  9. 混合架构
  10. AI 应用场景
  11. Python 演示
  12. 常见误区
  13. 面试题

可视化演示

对比RAG检索增强生成、传统搜索与纯LLM生成三种方案的数据流管道与性能指标差异,展示RAG如何融合检索与生成优势。

本节配有交互动效(进入视口后自动加载,约 3KB)。

RAG融合检索与生成优势 传统搜索:精准检索但缺乏理解,返回文档而非答案 纯生成:流畅回答但幻觉率高,知识截止后无法更新 RAG: 检索提供事实依据,生成整合答案,兼顾准确与流畅 RAG = Retriever(query, corpus) + LLM(query, context) → answer

三方案原理

走进“知识餐厅”,先看三位厨师的工作台。自助餐厨师(传统搜索)把全部食材摆上货架,客人报出关键词,货架按匹配度把相关菜品推到面前,但取多少、怎么吃都靠自己,系统只负责“找给你看”。记忆大厨(纯生成)倚在灶台边,不翻菜谱不买菜,全靠大脑里的配方直接“编”出答案。采购主厨(RAG)则分工明确:先根据点单去仓库检索最新食材,再把食材带回后厨烹饪。三者的差别不在“好不好吃”,而在“食材从哪来”。

从技术上讲,传统搜索的核心是“匹配和返回”:系统对文档建立索引,用户输入 query 后,用倒排索引或向量相似度召回 TopK 条结果,把原文或链接原样返回,不做任何改写。纯生成的核心是“回忆和创作”:大语言模型把知识压缩进参数里,给定问题后直接自回归生成答案,速度快、表达流畅,但知识有截止日期,且可能一本正经地编造。

RAG 把两者拼成一条流水线:Query 先生成向量,到向量索引里召回 TopK 个最相关的文本片段,再把“问题+片段”一起喂给生成模型,让模型“看着食材做菜”。这意味着答案由真实文档支撑,又保留了生成式表达的流畅度。三者的关系可以看作“检索能力”与“生成能力”的不同配比:纯生成是纯生成,搜索是纯检索,RAG 是“先买菜、再做菜”。

回到餐厅,三条流水线一目了然:自助餐给“原文”、记忆大厨给“印象”、采购主厨给“有出处的定制菜”。真正的选型,就是根据客人需求决定请哪位厨师掌勺。

纯生成:y∼Pθ(y∣q),传统搜索:R=arg⁡max⁡d∈Dsim(q,d),RAG:y∼Pθ(y∣q,R)\text{纯生成}: y \sim P_\theta(y \mid q), \qquad\text{传统搜索}: \mathcal{R} = \mathop{\arg\max}_{d \in \mathcal{D}} \text{sim}(q,d), \qquad\text{RAG}: y \sim P_\theta(y \mid q, \mathcal{R})
三条公式分别对应:记忆大厨只凭问题直接作答;自助餐按相似度从文档库挑出原文;采购主厨先取文档集、再把它作为生成答案的依据。
  1. 纯生成从参数记忆中直接采样:模型只根据问题 q 生成答案 y,没有外部资料参与,答案完全来自训练时学到的“菜谱记忆”,可能新鲜也可能过期。
    y∼Pθ(y∣q)y \sim P_\theta(y \mid q)
  2. 传统搜索从文档库中挑最匹配的原文:在全部文档集合 $\mathcal{D}$ 上用相似度函数 $\text{sim}(q,d)$ 打分,取分数最高的若干文档组成结果集 $\mathcal{R}$,把原文端给用户。
    R=arg⁡max⁡d∈Dsim(q,d)\mathcal{R} = \mathop{\arg\max}_{d \in \mathcal{D}} \text{sim}(q,d)
  3. RAG把检索结果作为生成的条件:生成模型不仅要看问题 q,还要“看着”检索回来的文档集 $\mathcal{R}$ 来组织答案,把外部食材压进烹饪条件里,让每句话有据可依。
    y∼Pθ(y∣q,R)y \sim P_\theta(y \mid q, \mathcal{R})

准确性对比

客人最怕的一件事,是厨师端上一盘卖相极好、但食材根本不存在的菜——AI 圈管这叫“幻觉”。幻觉的本质是“自信地编造”:模型用流畅的语言把不存在的事实说得天衣无缝,外行极难分辨,一旦用于医疗、金融、法务,后果不堪设想。

纯生成完全不查资料,答案全凭参数记忆“顺着话头”往外编,一旦问题超出训练分布或知识过期,就会一本正经地胡说八道。传统搜索只做匹配不做创作,返回的一定是库里真实存在的原文,不会虚构事实,但可能因为文档陈旧或排序不佳而答非所问。RAG 让生成只发生在“相关文档已在眼前”的前提下,幻觉大幅下降;但 RAG 的准确性存在天花板——如果检索阶段没召回关键文档,生成再强也是“无米之炊”,答案照样会偏。

衡量检索质量常用精确率(Precision)和召回率(Recall):精确率回答“查得准不准”,召回率回答“查得全不全”,两者常常此消彼长。RAG 的检索需要两者兼顾,因此综合指标 F1 更方便做单一评分。

在餐厅里,F1 就是“采购单的命中率”:既要买到新鲜食材,又不能漏买。纯生成压根没有采购单,压力全在记忆大厨一个人的脑力上,幻觉风险自然最高。

F1=2×Precision×RecallPrecision+RecallF_1 = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}
F1 是精确率和召回率的“调和平均”,任何一方偏科都会把总分拉低,适合衡量 RAG 检索“既要准、又要全”的综合表现。
  1. Precision(查准率)检索返回的结果中真正相关的比例,回答“端上桌的菜里,有几道是客人真正要的”。
    Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP}
  2. Recall(查全率)库中所有相关结果中被成功找出的比例,回答“客人想吃的菜,有几道被端上来了”。
    Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}
  3. F1 调和平均两个指标打架时取一个居中值,偏科越严重 F1 越低,适合作为检索效果的单一评分标准。
    F1=2×Precision×RecallPrecision+RecallF_1 = \frac{2 \times \text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}

实时性对比

客人问“今天收盘的股价”,记忆大厨愣住了——他脑子里的菜谱上个月才“出版”,哪知道今天的行情。所谓实时性,本质是“知识能多快追上现实世界”。

纯生成的知识快照等于训练集截止时间,之后发生的事一律不知道,想更新只能重新训练或微调,周期以周、月计。传统搜索只要爬虫或同步任务把新文档写进索引,新知识立刻可被搜到,最差也只是索引刷新周期(分钟级到天级)。RAG 的实时性同样由索引决定:文档更新后重新切片、向量化、写入向量库,下一次检索就能召回新内容,通常分钟级生效。所以“实时性差”是纯生成的宿命,却是搜索和 RAG 的工程参数。

实时性可以量化成“知识滞后时间”Lag:查询时刻与知识生效时刻之差,越小越新鲜。对纯生成,Lag 近似等于“训练截止日”至今的天数;对搜索和 RAG,Lag 约等于一次索引刷新周期。

菜单上的“今日特价”必须每天换价签——自助餐和采购主厨随时能换食材;记忆大厨只能等新版菜谱出版,这就是纯生成在实时性上先天吃亏的根本原因。

Lag=tquery−tlast_update\text{Lag} = t_{\text{query}} - t_{\text{last\_update}}
滞后量 Lag 衡量答案所用知识有多“旧”:纯生成的 Lag 以天、月计,搜索和 RAG 的 Lag 就是索引刷新的周期,通常远小于纯生成。
  1. Lag(知识滞后量)答案所用知识的陈旧程度,值越大越“过期”,越小越“新鲜”。
    Lag=tquery−tlast_update\text{Lag} = t_{\text{query}} - t_{\text{last\_update}}
  2. t_query(查询时刻)用户提出问题的当前时间,对应客人点菜的这一刻。
    tqueryt_{\text{query}}
  3. t_last_update(知识最后更新时刻)对纯生成是模型训练截止日,对搜索和 RAG 是文档索引的最后刷新时间。
    tlast_updatet_{\text{last\_update}}

成本对比

餐厅最现实的问题永远是账单。客人一多,三位厨师的经营成本结构完全不同:有人贵在“进货”,有人贵在“创作”,有人两头都花钱。

纯生成没有索引和检索,主要成本是生成 token 的推理费,答案越长越贵;好处是架构最简单、出菜链路最短。传统搜索要建索引、存文档、跑检索,但没有生成环节,单位查询成本极低,结果还可缓存复用。RAG 两端都占:要维护文档库和向量索引,检索要算相似度,生成还要按 token 付费,加上向量化和重排的算力,是三套方案里最“奢侈”的。

从全链路拆解,成本由三部分组成:一次性建设的索引成本、每次查询的检索成本、每次查询的生成成本。假设一段时间内查询总量为 n、平均生成长度为 L,总成本可以写成:

类比餐厅:自助餐后厨最省,只需摆菜;记忆大厨省了买菜钱但贵在“创作工时”;采购主厨既要买菜又要烹饪,账单最厚。预算紧张时,优先考虑搜索,或压缩 RAG 的检索范围与输出长度。

Cost=Cindex+n×(Csearch+Cgen×L)\text{Cost} = C_{\text{index}} + n \times \left( C_{\text{search}} + C_{\text{gen}} \times L \right)
成本公式说明:RAG 和搜索要先付“建索引”的固定账单;生成成本随答案长度线性膨胀;查询量越大,检索单价的微小差异越会被放大成真金白银。
  1. C_index(索引建设成本)对文档解析、切片、向量化并写入索引的一次性开销,搜索和 RAG 需要,纯生成是 0。
    CindexC_{\text{index}}
  2. n × (…)(查询次数放大)总成本随调用量线性增长,日活百万的系统里,每查询贵一厘钱都是巨款。
    n×(Csearch+Cgen×L)n \times \left( C_{\text{search}} + C_{\text{gen}} \times L \right)
  3. C_search 与 C_gen × L(检索与生成单价)检索按次计费、生成按 token 计费;答案越长,生成成本的占比越高、越不可控。
    Csearch+Cgen×LC_{\text{search}} + C_{\text{gen}} \times L

可解释性

客人追问一句“凭什么信你?”——三位厨师给出三种回答:“菜单上写着呢”“我记得”“请看采购单和发票”。可解释性,就是答案能不能经得起追问、能不能让用户自己验证。

传统搜索的可解释性最强:结果就是原文本身,用户能逐字核对,证据链完整,错了也是文档的错,系统不背锅。RAG 次之:答案由生成模型产出,但可以携带引用来源(对应召回的文档片段),用户能回溯到具体章节,不过偶尔会出现“引用与内容不符”的瑕疵。纯生成最弱:一切都藏在神经网络的黑盒里,模型自己都说不清依据是什么,出了问题只能“认栽”。

工程上常用“引用覆盖率”来量化可解释性:答案中能被检索片段支撑的句子占比。覆盖率越高,答案越经得起追问,也越便于人工审计和用户信任建设。

采购主厨的菜再好看,付账时也能掏出每样食材的进货单;记忆大厨的菜再香,追问一句就只有沉默。面向金融、医疗、政务等强监管场景,可解释性往往具有一票否决权。

Support=有引用支撑的句子数答案总句子数\text{Support} = \frac{\text{有引用支撑的句子数}}{\text{答案总句子数}}
Support 引用覆盖率像“进货单齐全度”:每句话都有采购发票,客户才敢放心吃。覆盖率越接近 1,答案越可审计。
  1. 分子(有引用支撑的句子数)答案中每一句话都能在检索文档里找到对应出处的数量,对应“能拿出进货单的食材”。
    有引用支撑的句子数\text{有引用支撑的句子数}
  2. 分母(答案总句子数)生成答案的全部句子数量,对应整道菜用到的所有食材。
    答案总句子数\text{答案总句子数}
  3. 比率(引用覆盖率)越接近 1 越可审计,越接近 0 越像“空口无凭”;强监管场景通常要求逼近 1。
    Support∈[0,1]\text{Support} \in [0, 1]

数据更新灵活性

餐厅要换季更新菜单:加一道新菜、撤掉一道下架菜、标注某食材的过敏源——哪种厨师改起来最快?数据更新灵活性,说的是“知识体系换血”的成本与速度。

纯生成的知识和参数绑定,新增知识要重新训练或微调,一次动辄数周时间和高额算力账单;删除某条知识更麻烦,模型训练完就“忘不掉”,无法精确抹去单个事实。传统搜索改文档、触发重建索引即可,删除即时生效,还能用权限控制谁搜得到什么。RAG 更是“换汤不换药”的典范:知识全部外置在文档库里,新增等于加文档并刷新索引,删除等于移除文档,权限等于检索前的过滤条件。

RAG 的更新链路是:解析新文档 → 切块 → 向量化 → 写入向量索引 → 缓存失效。链条虽长但每一环都是自动化流水线,分钟级就能让新知识生效;而纯生成的更新链路只有一条——重训加对齐,成本差距是几个数量级。

自助餐换菜只需换标签,采购主厨换菜只需换货源,而记忆大厨换菜要把整本菜谱重背一遍——如果你的业务文档每周都在变,RAG 几乎是唯一现实的选择。

T更新RAG=T解析+T切片+T向量化+T索引≪T更新纯生成=T训练+T对齐T_{\text{更新}}^{\text{RAG}} = T_{\text{解析}} + T_{\text{切片}} + T_{\text{向量化}} + T_{\text{索引}} \quad \ll \quad T_{\text{更新}}^{\text{纯生成}} = T_{\text{训练}} + T_{\text{对齐}}
公式对比了“换食材”和“重背菜谱”的时间差距:RAG 的更新是增量流水线,纯生成是推倒重来的重训,两者相差几个数量级。
  1. RAG 更新链路(增量流水线)解析、切片、向量化、写索引四步都只针对新增或变更的少量文档,边际成本极低。
    T解析+T切片+T向量化+T索引T_{\text{解析}} + T_{\text{切片}} + T_{\text{向量化}} + T_{\text{索引}}
  2. 纯生成更新链路(全量重训)训练加对齐等于把整本“菜谱”重背一遍,耗时耗钱,还伴随模型退化风险。
    T训练+T对齐T_{\text{训练}} + T_{\text{对齐}}
  3. 远小于符号 ≪强调两种方案在“知识换血”上的数量级差距,RAG 分钟级、纯生成周月级。
    TRAG≪T纯生成T^{\text{RAG}} \ll T^{\text{纯生成}}

场景选型

选厨师要看客人:证据党、赶时间党、还是猎奇党?工程选型也一样,先问清场景最看重什么,再决定方案。没有任何方案在所有维度上全胜,只有“最合适”。

归纳出四类典型场景。高频客服问答与企业知识库:答案要准、要能溯源,首选 RAG。合规审查、原文取证、日志检索:不容许任何改写,只能信原文,用传统搜索。创意文案、头脑风暴、开放闲聊:没有标准答案、不需要事实约束,纯生成性价比最高。实时舆情与新闻聚合:既要新又要可读,用“搜索召回最新内容 + 生成模型汇总摘要”的混合方式。

更严谨的做法是给方案打分:把准确性 A、新鲜度 F、可解释性 E 视为正向指标,把成本 C 视为负向指标,按业务权重代入效用函数,选分最高的方案。权重体现业务优先级——比如医疗问答把准确性和可解释性调得很高,海量日志检索则把成本权重压到极致。

把这张“评分菜单”贴在餐厅后厨墙上:证据党去自助餐窗口,熟客找记忆大厨,讲究品质与出处的贵客,交给采购主厨。

U(方案)=wa⋅A+wf⋅F+we⋅E−wc⋅C\text{U}(\text{方案}) = w_a \cdot A + w_f \cdot F + w_e \cdot E - w_c \cdot C
这是选型的“评分公式”:准确、新鲜、可解释都是加分项,成本是减分项,权重由业务场景决定,分数最高的方案胜出。
  1. 权重 w(业务优先级)每个维度的系数代表业务对它的看重程度,比如强监管场景把 w_e 调大,海量检索把 w_c 调大。
    wa, wf, we, wcw_a,\ w_f,\ w_e,\ w_c
  2. 正向项 A、F、E(加分项)准确性、新鲜度、可解释性越高,效用分越高。
    wa⋅A+wf⋅F+we⋅Ew_a \cdot A + w_f \cdot F + w_e \cdot E
  3. 负向项 C(减分项)成本越高扣分越多,体现预算约束对方案的否决作用。
    −wc⋅C- w_c \cdot C

混合架构

聪明的餐厅从不只依赖一位厨师,而是请一位“调度总管”——根据点单内容,把每一单派给最合适的厨师。混合架构的核心就是路由:先判断问题类型,再选择处理通道。

路由的具体分工是:常识性开放问题走纯生成通道,图快图省;需要新知识或私有知识的问题走 RAG 通道,给足上下文;需要原文证据或结构化检索的问题走传统搜索通道,直接返回原文。更进一步,搜索和 RAG 不是互斥的——搜索召回的结果可以作为 RAG 的食材来源(搜索给 RAG 供料),RAG 的答案也可以附上搜索的原文链接,两种能力在管道层面融合。

工程实现上,路由可以用关键词规则、意图分类或轻量模型打分完成;检索侧可以做混合检索——关键词 BM25 与向量检索双路召回,再经重排器(reranker)合并去重,保证“既要查得全,又要排得准”。这就是广义上“搜索+生成”融合的完整形态。

有了调度总管,餐厅既能用记忆大厨的“快”、也能用自助餐的“透明”、还能用采购主厨的“稳”。三种方案从来不是“三选一”,而是“按单派菜”的最优组合。

route(q)=arg⁡max⁡m∈{search, gen, RAG}Um(q)\text{route}(q) = \mathop{\arg\max}_{m \in \{\text{search},\ \text{gen},\ \text{RAG}\}} \text{U}_m(q)
路由公式像“点单派单”:每张单子分别计算走纯生成、搜索、RAG三条通道的效用分,谁分高就派给谁。
  1. 候选方案集合(三位厨师)search(传统搜索)、gen(纯生成)、RAG 三条通道并列,各有所长。
    m∈{search, gen, RAG}m \in \{\text{search},\ \text{gen},\ \text{RAG}\}
  2. U_m(q)(通道效用分)每种通道对当前查询 q 的适配程度,综合准确、时效、成本、可解释性计算。
    Um(q)\text{U}_m(q)
  3. argmax(路由决策)调度总管选择得分最高的一条通道处理该查询,实现“按单派菜”。
    arg⁡max⁡m\mathop{\arg\max}_{m}

AI 应用场景

企业知识库智能客服

阶段:检索增强生成(RAG 应用工程)

解决的问题:传统客服靠关键词搜索 FAQ,长句问法召回差、答非所问;纯生成又会把公司制度“编”得煞有介事,员工误信后引发纠纷。RAG 把企业文档切片建索引,用户提问先检索再生成,答案附带出处,显著提升答疑准确率和用户信任度。

具体案例:某银行内部“报销助手”,员工问“出差住宿报销上限是多少”,系统从《财务报销制度》文档库检索到对应条款,生成百余字答复并附上条款原文链接。制度更新当天,新规则即可被检索并回答,全程无需重新训练模型。

舆情监测与实时资讯

阶段:数据管道与信息检索

解决的问题:纯生成不知道今天的热点,传统搜索返回一堆标题需要人自己读。混合方案先周期性抓取新闻并写入索引,查询时用搜索召回最新相关文章,再交给生成模型汇总成简报,每句话都可回溯源 URL,兼顾实时与可读。

具体案例:某品牌舆情系统每天清晨自动生成《竞品动态日报》:搜索近 24 小时新闻库中的竞品文章,由大模型归纳为“产品发布、政策影响、负面舆情”三类摘要,运营团队五分钟读完,决策效率大幅提升。

营销文案创意生成

阶段:内容生成(纯生成)

解决的问题:创意任务没有标准答案,检索来的素材反而压制发散思维。纯生成零上下文、零检索成本,三十秒给出十条 slogan 候选,人类只需挑选润色,极大压缩创意试错成本。

具体案例:电商大促前夕,运营用纯生成产出“618 家电会场”的二十条广告语,从中挑三条投放,A/B 测试选出转化率最高的一条,全程没有涉及任何文档检索,成本几乎可以忽略。

Python 演示

python72 行
# -*- coding: utf-8 -*-"""三种方案对比演示: 传统搜索 / 纯生成 / RAG"""import re # 文档库: 相当于餐厅的食材仓库DOCS = {    "苹果公司2024年三季度财报": "苹果公司2024财年Q3营收858亿美元, 服务收入创新高。",    "地球到月球距离": "地球到月球的平均距离约为38.4万公里。",    "RAG技术介绍": "RAG先检索相关资料, 再让大模型基于资料生成答案, 可减少幻觉。",} # 大模型参数记忆: 相当于记忆大厨的旧菜谱, 注意数值已过时MEMORY = {    "地球到月球距离": "月球离地球大约30万公里。",    "苹果公司2024年三季度财报": "苹果公司2024年Q3营收920亿美元。",}  def tokenize(text):    return set(re.findall(r"[\w\u4e00-\u9fa5]+", text))  def search(query):    """传统搜索: 返回相关性最高的文档原文, 不做任何改写"""    qw = tokenize(query)    scored = []    for title, body in DOCS.items():        score = len(qw & tokenize(title + body)) / max(len(qw), 1)        scored.append((score, title, body))    scored.sort(key=lambda x: -x[0])    if scored and scored[0][0] > 0:        return scored[0]    return (0.0, "", "未找到相关文档")  def pure_generate(query):    """纯生成: 只靠模型参数记忆作答, 不查任何外部资料"""    if query in MEMORY:        return MEMORY[query] + "(来自记忆, 可能已过时)"    return "印象中" + query + "与我的旧知识有关, 但我记不清了。"  def rag(query):    """RAG: 先检索再生成, 答案有出处、可溯源"""    score, title, body = search(query)    if score <= 0:        return "未检索到相关资料, 拒绝瞎编。"    return "根据《" + title + "》中的资料: " + body  def main():    queries = ["地球到月球距离", "苹果公司2024年三季度财报", "RAG技术介绍"]    cost = {"搜索": 0, "纯生成": 0, "RAG": 0}    for q in queries:        print("问题:", q)        _, _, body = search(q)        gen = pure_generate(q)        rag_ans = rag(q)        print("  传统搜索:", body)        print("  纯生成  :", gen)        print("  RAG     :", rag_ans)        cost["搜索"] += len(body) / 10.0        cost["纯生成"] += len(gen) / 10.0        cost["RAG"] += (len(body) / 10.0 + len(rag_ans) / 10.0)        print()    print("成本模拟(输出字数越多越贵):")    for k, v in cost.items():        print("  %s: %.1f" % (k, v))  if __name__ == "__main__":    main()
目的:用一个小型文档库模拟三种方案的完整问答流程,直观对比“原文直达、记忆作答、检索后生成”的差异,并粗略模拟成本。
  1. DOCS = {文档库相当于餐厅的食材仓库,是搜索和 RAG 的知识来源。
  2. MEMORY = {参数记忆相当于记忆大厨的旧菜谱,里面的数值故意写错,模拟幻觉。
  3. def tokenize(text):把文本拆成词集合,供后续相似度匹配使用。
  4. scored.sort(key=lambda x: -x[0])按匹配得分降序排列,取最相关的文档。
  5. def pure_generate(query):只查 MEMORY,不碰 DOCS,纯生成方案的完整缩影。
  6. score, title, body = search(query)RAG 的第一步:先检索,再进入生成环节。
  7. if __name__ == "__main__":可执行入口,依次跑三个问题并统计成本。

常见误区

误区RAG 检索文档再生成,又准又能引用,肯定比纯生成强,所有问答需求都上 RAG 准没错。

正解RAG 不是银弹。它有检索召回失败的风险,链路更长、延迟更高,每次查询都要多付检索和上下文两份开销;对常识性、创意性、无标准答案的问题,纯生成更流畅省事。就像客人点一杯白开水,采购主厨还要跑一趟菜市场就离谱。选型要按场景打分,而不是迷信某一种方案。

为何常见:因为 RAG 近期曝光多,被包装成“解决幻觉的万能药”,大家看到优势就忽略了它的代价和适用边界。

误区大模型这么强,关键词搜索那套老古董迟早没人用,应该赶紧全部换成生成式方案。

正解传统搜索的透明、零幻觉、低成本至今不可替代,而且 RAG 的“检索”环节本质上就是搜索技术(倒排索引、向量索引、重排)的延续。搜索不是被淘汰,而是从“终端”退化为“组件”——从直接给用户结果,变成给生成模型供料。自助餐的食材,照样是采购主厨的货源。

为何常见:新闻总在讲生成模型的惊艳表现,很少有人关注背后支撑它的检索基础设施。

误区RAG 有什么难的?把搜到的文档拼在提示词前面丢给大模型,不就行了?

正解RAG 是一条完整链路:文档解析、切片策略、向量化、建立索引、混合检索、重排、上下文截取、生成、引用标注。只在 prompt 塞资料,相当于把食材全倒进锅里,既不挑选也不控火候,还可能让无关内容挤爆上下文窗口,质量和成本都不可控。

为何常见:RAG 的入口和出口看起来都只是“多了一段文本”而已,中间过程对用户不可见,容易被误以为只是拼接。

误区让模型背资料多贵啊,RAG 不用微调,肯定比纯生成省钱。

正解省掉的只是训练费,但 RAG 增加了持续运营成本:文档库存储、向量化算力、索引重建、检索服务,以及每次查询多出的检索链路和上下文 token 开销。查询量一大,RAG 的单位成本通常是纯生成的 2~3 倍。“不用训练”换来的是长期账单,选型时必须算总账。

为何常见:人们习惯只对比“训练 vs 不训练”,忽略了在线推理、存储和索引维护这些隐性成本,就像只看了买菜钱、没看后厨水电煤。

面试题

Q1. 传统搜索相比纯生成最不可替代的优势是?

单选题 · easy

  • A.回复速度更快更流畅
  • B.结果可溯源且没有幻觉← 正确答案
  • C.上下文理解能力更强
  • D.完全不需要任何维护成本

答案:B。传统搜索返回原文,用户可逐字核对,天然零幻觉;纯生成是黑盒,可能编造。速度和流畅性并非搜索的强项,维护成本也不可能为零。就像自助餐的“菜”都是看得见摸得着的真食材。

Q2. RAG 的标准处理流程是?

单选题 · easy

  • A.生成之后再检索补充
  • B.先检索再拼接生成← 正确答案
  • C.只检索而不进行生成
  • D.只生成而不做检索

答案:B。RAG 先召回相关文档片段,再与问题一起交给生成模型组织答案,顺序不能颠倒、环节不能省略。C、D 都只做了半个流程,像采购主厨只买了菜却不做,或者做了菜却不买菜。

Q3. 以下哪个场景最适合纯生成方案?

单选题 · easy

  • A.法律条文精确查找
  • B.新品广告语创作← 正确答案
  • C.企业内部制度问答
  • D.股票实时行情查询

答案:B。广告语没有标准答案、不需要事实约束,纯生成发散性强且成本低。其他三项都要求事实准确、知识新鲜,更适合搜索或 RAG。

Q4. 纯生成“知识保质期”差,根本原因是?

单选题 · mid

  • A.模型训练截止后参数不再更新← 正确答案
  • B.模型推理速度慢无法实时
  • C.生成答案超过上下文限制
  • D.模型无法理解长问题语义

答案:A。知识被固化在参数里,训练一结束知识就“定格”,之后发生的事一概不知,只能靠重新训练更新。B、C、D 是工程层面的问题,不是知识过期的根源,好比记忆大厨的菜谱出版后就不会自动增补。

Q5. 在可解释性上,传统搜索强于 RAG 之处在于?

单选题 · mid

  • A.RAG 从未给答案标注过引用
  • B.搜索直接返回原文不改写← 正确答案
  • C.RAG 检索结果一定有错误
  • D.搜索匹配算法天然更公平

答案:B。传统搜索把原文原样交给用户,证据链最完整;RAG 经过生成加工,即便带引用也可能出现“引用与内容不符”。A、C 说法过于绝对,都是错误选项。

Q6. RAG 效果翻车最典型的环节是?

单选题 · mid

  • A.生成阶段模型表达能力不足
  • B.检索阶段遗漏了关键文档← 正确答案
  • C.推理阶段显存不足而崩溃
  • D.输出阶段引用格式出错

答案:B。RAG 的瓶颈往往在“召回”,TopK 没把关键文档捞出来,生成再强也是无米之炊,就像采购主厨买错了菜,手艺再好也白搭。C 是环境问题,D 只是小瑕疵,都不影响答案本身的准确性。

Q7. 混合架构中“路由模块”的核心职责是?

单选题 · hard

  • A.训练一个更大的生成模型
  • B.按查询特征分派合适通道← 正确答案
  • C.对检索结果进行最终重排
  • D.把答案翻译成多种语言

答案:B。路由类似餐厅的调度总管,根据问题特征决定走纯生成、搜索还是 RAG 通道。C 是重排器的职责,A、D 与路由无关。

Q8. 相比纯生成,RAG 的优势有哪些?

多选题 · mid

  • A.显著降低答案幻觉风险← 正确答案
  • B.更新知识只需重建索引← 正确答案
  • C.一定降低每次查询成本
  • D.答案附带可追溯的引用← 正确答案

答案:ABD。检索提供事实锚点可减少幻觉;知识外置后换文档即可更新;答案可回溯到具体文档。C 错误,RAG 多出检索链路和上下文 token 开销,成本通常更高。

Q9. 适合继续用传统搜索的场景特征有哪些?

多选题 · hard

  • A.要求一字不改的原始证据← 正确答案
  • B.检索量大且预算极有限← 正确答案
  • C.需要天马行空的内容创意
  • D.用户愿意自己阅读原文← 正确答案

答案:ABD。原文取证、海量日志检索、预算敏感场景都离不开搜索的透明和低成本。C 是创意任务,不需要事实约束,用纯生成更合适。

Q10. 关于选型评分公式 U=wₐA+w_fF+w_eE−w_cC,下列哪些理解正确?

多选题 · extreme

  • A.权重 w 表示业务优先级← 正确答案
  • B.F 代表数据新鲜程度← 正确答案
  • C.C 越大说明方案越优
  • D.E 代表答案的可解释性← 正确答案

答案:ABD。A、F、E 是加分项,C 是减分项,权重由场景决定。因此 C 越大方案越差,选 C 的同学是把减号看丢了——就像把采购主厨更贵的账单当成了优点。