先这样答
查询里同时有精确标识符和自然语言时,不要通过调整权重来做混合检索。正确的做法是分层处理。精确标识符包含SKU和规则编号。这类信息要求绝对精确。它们必须走关键词与倒排索引。面试者把权重调得再高,也不如直接进行结构化过滤可靠。自然语言描述部分则走向量召回。
融合阶段采用过滤加排序的策略。系统首先提取查询中的SKU和规则编号。检索引擎利用这些精确标识符进行前置过滤。这一步要求必须命中。它直接缩小了候选集范围。接着,系统处理查询里的自然语言部分。模型计算自然语言描述与候选集内容的语义相似度。相似度得分只用来在刚才过滤出的候选集内部进行排序。
面试时答调整两路召回的权重比例属于浅层回答。真实的业务场景要求结构化先行、语义兜底。精确标识符决定结果的下限。它保证召回内容不偏离明确的目标。自然语言语义决定结果的上限。它负责把最符合用户意图的结果排到前面。分层架构比单纯的加权融合更符合这种查询特征。
面试官会怎么追问
-
「为什么说把精确标识符的权重调高不够可靠?」 权重融合本质上还是概率计算。只要是概率计算,其他特征就会稀释分数。结构化过滤是布尔逻辑。它强制要求必须命中。它能从根本上杜绝召回结果缺失关键SKU的问题。
-
「如果候选集经过标识符过滤后,自然语言排序的分数都很低怎么办?」 这说明用户的自然语言描述与精确标识符存在意图冲突。系统应该信任结构化过滤的结果。语义相似度只在候选集内做相对排序。分数低不影响系统最终返回包含正确SKU的候选内容。
-
「这种结构化先行、语义兜底的策略在工程实现上有什么好处?」 它降低了向量检索的计算量。前置的结构化过滤会剔除大量不相关的文档。向量模型只需要在很小的候选集内计算相似度。这能有效降低检索系统的整体延迟。
回答的坑
- 沉迷于设计复杂的公式去动态计算两路召回的权重。
- 误以为向量模型可以完美理解SKU这种精确标识符并直接给出正确排序。
同系列的题