我的判断是,这道题本质上在问质量、延迟和成本怎样权衡。Cross-Encoder 会联合编码 query 与每个候选文档,文档侧表示通常不能像双塔向量那样预计算复用。若对全库 N 个候选逐一精排,就要做 O(N) 次前向计算和对应的数据读取,大规模在线服务通常承受不了。
比如企业知识库有大量文档时,我会先用 BM25、稠密 ANN 或规则召回取得高召回候选;需要时再用双塔分数、轻量特征或业务模型做粗排;最后用 Cross-Encoder 对小候选集精细排序。粗排是可选层,召回和精排也可以在小语料或轻模型场景合并,不存在必须三层的固定架构。
候选规模没有统一的千万、几万、几百或 Top-50 标准,召回索引的复杂度也不统一是 O(1) 或 O(logN)。我会在目标硬件上测模型 batch 吞吐、数据读取、并发和延迟分位数,再决定各层预算,而不是用固定毫秒数替代 profile。
这里最大的失败风险是召回漏掉关键证据,因为精排只能重排已召回内容,无法把漏掉的内容补回来。所以要分别看 Recall@K、排序指标、端到端答案质量、P50/P95/P99 延迟、吞吐和成本,联合调整候选规模。上线前还要做压测和监控;如果延迟或成本超过预算,就降级到轻量模型、缩小候选集或限制并发,并验证降级后的质量护栏。
如果语料很小、精排模型足够轻,或者使用 late interaction 等可索引结构,可以减少层级。结论不是“永远不能全量精排”,而是用实测证明在质量门槛和 SLA 下是否划算。