拿下技术面上传简历

你有 100 万条 128 维向量构成的向量库,要在线查询 top-10 最近邻,延迟预算 10ms。你用 sklearn 的 KDTree 建索引,实测单次查询大约 200ms。请说明 KDTree 为什么在这里失效,并给出一个能落进 10ms 预算的方案。

机器学习基础监督学习1-3 年知识点 1 个

面试官在考什么

考察对维度灾难的机理理解,以及在延迟/内存/召回三者之间做工程取舍的能力,而不是只会说“用 faiss”。

KNN

回答框架 · 前两步

  1. KDTree 失效的机理是维度灾难,不是内存不够:它靠坐标轴对齐的划分做剪枝,维度升高后几乎所有点到查询点的距离都趋于接近,超球与节点的相交判断几乎排除不掉任何子树,查询退化成近似全量扫描;经验上维度超过 20 左右树索引的优势基本消失。
  2. 先算清楚底数:100 万 × 128 float32 约 512MB,一次暴力扫描约 1.28e8 次乘加,CPU 上就是几十毫秒量级。所以问题的关键是减少实际比较的候选数,而不是换一个更“聪明”的树结构。

还有 3 条答案要点、 3 层追问、 4 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

延伸阅读

想看这个方向的整体准备路线? 进入「机器学习基础」方向页

同一能力域的其他题