这道题其实问的是,当我们要把大模型用在信息检索或生成上,信息密度和可控性之间怎么取舍。说白了,你是想靠一次生成搞定一切,还是拆成先捞后精再生成。我的观点是,没有银弹,真正落地常常是两阶段为主、端到端为辅,混着上。
先说说两阶段。先做检索,比如用 [[Hybrid Search]] 把关键词和向量混着召回,再做 [[Rerank]] 精排,最后喂给大模型生成。这么做最大的好处是可控。比如在客服场景里,用户问“我的退款怎么还没到”,我可以先召回退款规则和订单记录,再让模型基于这些材料生成,这样答案有据可查。而且我可以随时调优中间环节,召回不够好就换检索策略,排序不准就调排序模型,不用动生成那一步。但代价也很直接:延迟高,因为多跑了一步检索加排序;还有信息损失,召回阶段丢掉的文档,精排和生成再也看不见了。另外系统复杂度会上去,索引维护、版本对齐都是隐性成本。
反过来,端到端生成就是直接把问题丢给模型,让它凭知识生成答案。这种方式的优势是简洁、延迟低,而且如果基座模型够强,理论上上限比两阶段高,因为模型能利用训练中学到的隐含知识。但风险也很明显:[[Hallucination]] 严重,尤其是面对事实性问题时,模型可能编得有模有样。而且一旦答案错了,你很难定位是模型没记住还是推理错了。所以它更适合创意生成、小知识库场景,比如内部知识库就几百篇文档,直接塞进上下文,或者实时对话对延迟极度敏感,等不了检索那一下。
所以落地时,我更倾向把两阶段当主链路,端到端当快速降级路径。举个例子,电商售后系统里,用户问“满减和优惠券能叠加吗”,我会先召回相关的满减规则、优惠券使用说明,再生成答案,确保每条引用都能追溯到文档。但如果用户问的是“今天天气怎么样”这种简单问题,或者检索没找到足够材料,我可以走端到端快速回答,同时监控置信度。这里有个坑:如果召回质量不行,两阶段的上限就被锁死了,所以我会特别关注首阶段召回率,用 Hybrid Search 来兜底。
另外,两阶段还有一个常被忽略的隐性成本,召回和精排之间的信息损失。比如你召回 Top 100 文档,精排只取 Top 5,那剩下的 95 条里可能藏着正确答案。上线时我会特别设计一个回退机制,如果精排后的 Top 1 文档得分低于某个阈值,就额外补充几条召回结果,避免漏掉关键信息。
所以整体上,我会把两阶段看成“保底方案”,端到端看成“加速手段”。两者不是二选一,而是根据场景、成本、质量要求动态组合。如果面试官感兴趣,我可以展开讲讲怎么用 [[Self-RAG]] 让模型自己判断是否需要检索,实现更细粒度的混合。