两阶段 vs 端到端怎么选?
先召回后精排与单次生成在检索系统中的适用场景与权衡
原题:在构建基于大模型的信息检索或生成系统时,你会选择‘先召回后精排’的两阶段架构,还是端到端的单次生成方式?各自的适用场景和技术权衡是什么?
重排与优化 · 字节真题
30 秒回答
- 明确区分两阶段架构与端到端生成的核心差异
- 阐述两阶段架构的优势(可解释性、可控性、成本可控)与劣势(延迟、信息损失)
- 阐述端到端生成的优势(简洁、潜在上限高)与劣势(幻觉风险、难调试)
- 给出具体的场景选择依据(数据规模、延迟要求、准确性要求、可解释性要求)
回答与解析
答案要点
- 明确区分两阶段架构与端到端生成的核心差异
- 阐述两阶段架构的优势(可解释性、可控性、成本可控)与劣势(延迟、信息损失)
- 阐述端到端生成的优势(简洁、潜在上限高)与劣势(幻觉风险、难调试)
- 给出具体的场景选择依据(数据规模、延迟要求、准确性要求、可解释性要求)
核心区别
| 维度 | 两阶段架构(召回+精排/生成) | 端到端单次生成 |
|---|---|---|
| 流程 | 检索 → 筛选 → 生成 | 直接生成答案 |
| 可控性 | 高,可干预中间环节 | 低,黑盒过程 |
| 延迟 | 较高(多轮计算) | 较低(单次推理) |
| 成本 | 检索+生成双重开销 | 仅生成开销 |
| 准确性 | 依赖检索质量,上限可控 | 依赖模型能力,幻觉风险高 |
选择依据
选两阶段架构的场景:
- 知识库规模大(百万级以上文档),必须靠检索缩小范围
- 对事实准确性要求高(医疗、法律、金融),需要可追溯来源
- 需要可解释性,能展示"参考了哪些资料"
- 预算有限,无法承担全量长上下文推理成本
选端到端生成的场景:
- 知识库规模小,可直接塞进上下文(<100k tokens)
- 对延迟极度敏感(实时对话场景)
- 任务偏向创意生成而非事实问答
- 有强基座模型(GPT-4级)且幻觉可控
关键权衡
两阶段的隐性成本:
- 召回-精排之间的信息损失(多轮过滤丢信息)
- 系统复杂度指数上升(索引维护、版本对齐)
端到端的隐性风险:
- 参数知识污染(把训练记忆当检索结果)
- 难以定位错误来源(是检索错了还是生成错了?)
字节场景下的实践倾向
字节业务(抖音搜索、豆包)通常选两阶段为主,端到端为辅:
- 主链路:向量召回 + 重排序 + 生成(保证可控)
- 快速路径:小知识场景走端到端(降低延迟)
- 关键优化:用稠密+稀疏混合召回提升首阶段质量,减少后续压力
口语版讲法(约4分钟)
- 本质是信息密度与可控性的取舍
- 两阶段架构:可控但复杂
- 端到端生成:简洁但有幻觉风险
- 落地权衡:混合架构是常态
- 延伸点:两阶段的隐性成本
这道题其实问的是,当我们要把大模型用在信息检索或生成上,信息密度和可控性之间怎么取舍。说白了,你是想靠一次生成搞定一切,还是拆成先捞后精再生成。我的观点是,没有银弹,真正落地常常是两阶段为主、端到端为辅,混着上。
先说说两阶段。先做检索,比如用 Hybrid Search 把关键词和向量混着召回,再做 Rerank 精排,最后喂给大模型生成。这么做最大的好处是可控。比如在客服场景里,用户问“我的退款怎么还没到”,我可以先召回退款规则和订单记录,再让模型基于这些材料生成,这样答案有据可查。而且我可以随时调优中间环节,召回不够好就换检索策略,排序不准就调排序模型,不用动生成那一步。但代价也很直接:延迟高,因为多跑了一步检索加排序;还有信息损失,召回阶段丢掉的文档,精排和生成再也看不见了。另外系统复杂度会上去,索引维护、版本对齐都是隐性成本。
反过来,端到端生成就是直接把问题丢给模型,让它凭知识生成答案。这种方式的优势是简洁、延迟低,而且如果基座模型够强,理论上上限比两阶段高,因为模型能利用训练中学到的隐含知识。但风险也很明显:Hallucination 严重,尤其是面对事实性问题时,模型可能编得有模有样。而且一旦答案错了,你很难定位是模型没记住还是推理错了。所以它更适合创意生成、小知识库场景,比如内部知识库就几百篇文档,直接塞进上下文,或者实时对话对延迟极度敏感,等不了检索那一下。
所以落地时,我更倾向把两阶段当主链路,端到端当快速降级路径。举个例子,电商售后系统里,用户问“满减和优惠券能叠加吗”,我会先召回相关的满减规则、优惠券使用说明,再生成答案,确保每条引用都能追溯到文档。但如果用户问的是“今天天气怎么样”这种简单问题,或者检索没找到足够材料,我可以走端到端快速回答,同时监控置信度。这里有个坑:如果召回质量不行,两阶段的上限就被锁死了,所以我会特别关注首阶段召回率,用 Hybrid Search 来兜底。
另外,两阶段还有一个常被忽略的隐性成本,召回和精排之间的信息损失。比如你召回 Top 100 文档,精排只取 Top 5,那剩下的 95 条里可能藏着正确答案。上线时我会特别设计一个回退机制,如果精排后的 Top 1 文档得分低于某个阈值,就额外补充几条召回结果,避免漏掉关键信息。
所以整体上,我会把两阶段看成“保底方案”,端到端看成“加速手段”。两者不是二选一,而是根据场景、成本、质量要求动态组合。如果面试官感兴趣,我可以展开讲讲怎么用 Self-RAG 让模型自己判断是否需要检索,实现更细粒度的混合。
关键一句:两阶段架构中召回与精排之间的信息损失,以及如何通过回退机制缓解
面试官还可能这样问
- 问法 1 · 场景切入
假设我们做个面向电商客服的知识库问答系统,用户问“我的订单咋还没到”,系统得从海量商品和政策文档里找答案。你会走先召回再精排的两步,还是直接让大模型生成?说说你的考虑。
- 问法 2 · 层层追问
你做过信息检索生成系统吧?一般怎么组织流程……那如果知识库特别大,比如几百万文档,你是用两阶段还是直接端到端?……再想想,要是用户要求答案必须可溯源、有引用,你怎么设计?
- 问法 3 · 直球架构
在构建大模型检索生成系统时,先召回后精排的两阶段架构和端到端单次生成,你选哪个?给出它们的适用场景和技术权衡,比如延迟、成本、准确性和可解释性。