跳到正文

两阶段 vs 端到端怎么选?

先召回后精排与单次生成在检索系统中的适用场景与权衡

原题:在构建基于大模型的信息检索或生成系统时,你会选择‘先召回后精排’的两阶段架构,还是端到端的单次生成方式?各自的适用场景和技术权衡是什么?

重排与优化 · 字节真题

30 秒回答

  1. 明确区分两阶段架构与端到端生成的核心差异
  2. 阐述两阶段架构的优势(可解释性、可控性、成本可控)与劣势(延迟、信息损失)
  3. 阐述端到端生成的优势(简洁、潜在上限高)与劣势(幻觉风险、难调试)
  4. 给出具体的场景选择依据(数据规模、延迟要求、准确性要求、可解释性要求)

回答与解析

答案要点

  • 明确区分两阶段架构与端到端生成的核心差异
  • 阐述两阶段架构的优势(可解释性、可控性、成本可控)与劣势(延迟、信息损失)
  • 阐述端到端生成的优势(简洁、潜在上限高)与劣势(幻觉风险、难调试)
  • 给出具体的场景选择依据(数据规模、延迟要求、准确性要求、可解释性要求)

核心区别

维度 两阶段架构(召回+精排/生成) 端到端单次生成
流程 检索 → 筛选 → 生成 直接生成答案
可控性 高,可干预中间环节 低,黑盒过程
延迟 较高(多轮计算) 较低(单次推理)
成本 检索+生成双重开销 仅生成开销
准确性 依赖检索质量,上限可控 依赖模型能力,幻觉风险高

选择依据

选两阶段架构的场景:

  • 知识库规模大(百万级以上文档),必须靠检索缩小范围
  • 对事实准确性要求高(医疗、法律、金融),需要可追溯来源
  • 需要可解释性,能展示"参考了哪些资料"
  • 预算有限,无法承担全量长上下文推理成本

选端到端生成的场景:

  • 知识库规模小,可直接塞进上下文(<100k tokens)
  • 对延迟极度敏感(实时对话场景)
  • 任务偏向创意生成而非事实问答
  • 有强基座模型(GPT-4级)且幻觉可控

关键权衡

两阶段的隐性成本:

  • 召回-精排之间的信息损失(多轮过滤丢信息)
  • 系统复杂度指数上升(索引维护、版本对齐)

端到端的隐性风险:

  • 参数知识污染(把训练记忆当检索结果)
  • 难以定位错误来源(是检索错了还是生成错了?)

字节场景下的实践倾向

字节业务(抖音搜索、豆包)通常选两阶段为主,端到端为辅

  • 主链路:向量召回 + 重排序 + 生成(保证可控)
  • 快速路径:小知识场景走端到端(降低延迟)
  • 关键优化:用稠密+稀疏混合召回提升首阶段质量,减少后续压力

口语版讲法(约4分钟)

  • 本质是信息密度与可控性的取舍
  • 两阶段架构:可控但复杂
  • 端到端生成:简洁但有幻觉风险
  • 落地权衡:混合架构是常态
  • 延伸点:两阶段的隐性成本

这道题其实问的是,当我们要把大模型用在信息检索或生成上,信息密度和可控性之间怎么取舍。说白了,你是想靠一次生成搞定一切,还是拆成先捞后精再生成。我的观点是,没有银弹,真正落地常常是两阶段为主、端到端为辅,混着上。

先说说两阶段。先做检索,比如用 Hybrid Search 把关键词和向量混着召回,再做 Rerank 精排,最后喂给大模型生成。这么做最大的好处是可控。比如在客服场景里,用户问“我的退款怎么还没到”,我可以先召回退款规则和订单记录,再让模型基于这些材料生成,这样答案有据可查。而且我可以随时调优中间环节,召回不够好就换检索策略,排序不准就调排序模型,不用动生成那一步。但代价也很直接:延迟高,因为多跑了一步检索加排序;还有信息损失,召回阶段丢掉的文档,精排和生成再也看不见了。另外系统复杂度会上去,索引维护、版本对齐都是隐性成本。

反过来,端到端生成就是直接把问题丢给模型,让它凭知识生成答案。这种方式的优势是简洁、延迟低,而且如果基座模型够强,理论上上限比两阶段高,因为模型能利用训练中学到的隐含知识。但风险也很明显:Hallucination 严重,尤其是面对事实性问题时,模型可能编得有模有样。而且一旦答案错了,你很难定位是模型没记住还是推理错了。所以它更适合创意生成、小知识库场景,比如内部知识库就几百篇文档,直接塞进上下文,或者实时对话对延迟极度敏感,等不了检索那一下。

所以落地时,我更倾向把两阶段当主链路,端到端当快速降级路径。举个例子,电商售后系统里,用户问“满减和优惠券能叠加吗”,我会先召回相关的满减规则、优惠券使用说明,再生成答案,确保每条引用都能追溯到文档。但如果用户问的是“今天天气怎么样”这种简单问题,或者检索没找到足够材料,我可以走端到端快速回答,同时监控置信度。这里有个坑:如果召回质量不行,两阶段的上限就被锁死了,所以我会特别关注首阶段召回率,用 Hybrid Search 来兜底。

另外,两阶段还有一个常被忽略的隐性成本,召回和精排之间的信息损失。比如你召回 Top 100 文档,精排只取 Top 5,那剩下的 95 条里可能藏着正确答案。上线时我会特别设计一个回退机制,如果精排后的 Top 1 文档得分低于某个阈值,就额外补充几条召回结果,避免漏掉关键信息。

所以整体上,我会把两阶段看成“保底方案”,端到端看成“加速手段”。两者不是二选一,而是根据场景、成本、质量要求动态组合。如果面试官感兴趣,我可以展开讲讲怎么用 Self-RAG 让模型自己判断是否需要检索,实现更细粒度的混合。

关键一句:两阶段架构中召回与精排之间的信息损失,以及如何通过回退机制缓解

面试官还可能这样问

  1. 问法 1 · 场景切入

    假设我们做个面向电商客服的知识库问答系统,用户问“我的订单咋还没到”,系统得从海量商品和政策文档里找答案。你会走先召回再精排的两步,还是直接让大模型生成?说说你的考虑。

  2. 问法 2 · 层层追问

    你做过信息检索生成系统吧?一般怎么组织流程……那如果知识库特别大,比如几百万文档,你是用两阶段还是直接端到端?……再想想,要是用户要求答案必须可溯源、有引用,你怎么设计?

  3. 问法 3 · 直球架构

    在构建大模型检索生成系统时,先召回后精排的两阶段架构和端到端单次生成,你选哪个?给出它们的适用场景和技术权衡,比如延迟、成本、准确性和可解释性。

同模块相关题目