五厂面经真题集快手面经高频网易面经高频快手真题大模型面试检索增强速答 · 约 5 分钟更新 2026-09-29

为什么引入父子索引和 BM25?怎么和向量检索融合?

一句话结论

父子索引用小块向量匹配保精度,命中后取完整父块补齐语义;BM25补专名、型号、代码标识,再把两路召回取并集,用RRF或加权融合排序,最后重排精排。

先这样答

引入父子索引,是为了同时保住向量匹配的精度和上下文的完整性。子块负责做向量匹配。子块更适合定位相关内容。命中子块后,再取它对应的父块,也就是完整段落,放进上下文。这样能解决“检得准但拼不全”的问题。模型拿到的不是零散小块,而是语义更完整的段落。

BM25用来补向量检索对精确词的覆盖。专名、型号、代码标识这类词,需要按词面匹配。向量检索和BM25可以各自召回一批结果,再取两路结果的并集。之后用RRF或加权方式融合排序。最后再做重排和精排,把更适合回答当前问题的内容放在前面。面试里可以把重点说清楚:父子索引解决上下文组织,BM25补精确词,融合排序负责合并两路结果。

面试官会怎么追问

  • 「为什么不直接把完整父块拿去做向量匹配?」 子块负责向量匹配,可以保留更细的定位粒度。命中后再取完整父块,既保留命中位置,也补足上下文。这样能同时处理“检得准”和“拼不全”两个要求。

  • 「BM25和向量检索分别解决什么问题?」 向量检索负责匹配语义相关内容。BM25补充专名、型号、代码标识等精确词匹配。两路结果取并集,减少只依赖一种检索方式带来的遗漏。

  • 「两路召回结果具体怎么合并?」 先分别得到向量检索和BM25的召回结果。然后取并集,用RRF或加权方式融合排序。融合后再进行重排和精排,确定最终进入上下文的内容。

回答的坑

  • 只说子块做向量匹配,不说命中后取父块,会遗漏父子索引对完整上下文的作用。
  • 只说BM25能补召回,不说它针对专名、型号和代码标识,回答就不够具体。

这家公司的面经实录

—— 本题完 ——