五厂面经真题集腾讯面经高频腾讯真题向量检索ANN速答 · 约 5 分钟更新 2026-09-29

海量向量查 Top-K 近邻,精确检索和近似检索怎么取舍?

一句话结论

精确检索结果完美,但延迟随数据量线性增长;百万级以上通常选 HNSW 或 IVF,再根据延迟 SLA 和召回率调参数。

先这样答

精确检索和近似检索的取舍,主要看数据量和延迟 SLA。精确检索会暴力扫描全部向量,结果完美,但数据量变大后,延迟会线性增长。千万级以下的数据,通常可以考虑精确检索。

数据量继续增大时,可以使用近似检索。常见方案有 HNSW 和 IVF。它们可以把查询延迟降到亚线性,但要接受一定的召回率损失。召回率可以在 95 到 99 之间调节,具体取值要看业务对结果质量和延迟的要求。

我的默认选择是:百万级以上优先考虑 HNSW 或 IVF。HNSW 的召回率高,但内存占用大。IVF 更省内存,但需要先训练聚类。在线使用 HNSW 时,可以调大 efSearch 来换取更高召回率。如果 SLA 更严格,就需要控制查询延迟,并接受相应的召回率变化。

面试官会怎么追问

  • 「为什么千万级以下还可以用精确检索?」 精确检索直接暴力扫描向量,结果没有近似误差。千万级以下时,扫描带来的延迟仍可能满足业务要求。数据量继续增大后,延迟会按线性趋势增长,就要结合 SLA 重新选择。

  • 「HNSW 和 IVF 应该怎么选?」 HNSW 的召回率高,但内存占用大。IVF 更省内存,但需要训练聚类。两者都能提供亚线性延迟,具体选择要看内存限制、数据量和延迟 SLA。

  • 「HNSW 的召回率不够时,你会怎么调?」 可以调大 efSearch。这个参数会用更高的查询成本换取更高召回率。线上可以根据延迟 SLA 调整它,不能只追求召回率而忽略延迟。

回答的坑

  • 不要把近似检索说成结果完全正确,它需要用召回率损失换取更低延迟。

  • 不要只说 HNSW 或 IVF 的名称,要同时说明 HNSW 占内存大、IVF 需要训练聚类。

—— 本题完 ——