← 返回题库
第 173 题 · RAG · 困难

向量检索中如何选择 Flat、HNSW、IVF 和 PQ?

岗位专项 这代表什么?
✓ 资料核验 来源说明:公开 RAG 面试题整理;答案依据原论文和官方实现文档原创整理
ANNHNSWFaiss
评论与补充 ↓
口述训练

先用自己的话答,再看参考说法

60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。

别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。

面试时怎么答

先用数据规模和准确率需求排除选项:Flat 是精确基线;HNSW 以较高内存换低延迟高召回;IVF 先做粗聚类以减少扫描;PQ 再用量化压缩向量。讲清这一层,答案就不会沦为参数表。

追问参数时可谈 efSearch、nprobe 和码长,但强调要在目标硬件与真实查询分布上画 Recall–Latency–Memory 曲线,不能脱离场景选索引。

可以这样答:

Flat 会逐个比较全部向量,结果精确,适合小库或作为评测基线。HNSW 用多层近邻图换取低延迟和高召回,但内存较大;IVF 先把查询路由到部分聚类中心,适合更大规模;PQ 用短码近似原向量,进一步省内存,却会损失精度。选择时应在真实数据上联合测 Recall、P95 延迟、构建时间、更新能力和内存,而不是只看库的大小。

核心回答

Flat 对全部向量做精确比较,适合作为小数据集方案和召回上限基线;HNSW 用分层近邻图换取较高召回和低查询延迟,但索引构建与内存开销较大;IVF 先把向量分到倒排单元,查询只探测部分单元,用 nprobe 在速度与召回间调节;PQ 把子向量量化以降低内存和距离计算成本,同时引入量化误差。选择依据是数据规模、内存、更新方式、目标召回和延迟,而不是固定偏爱某一种索引。

展开说明

  • Flat:不近似、不压缩时结果精确,查询成本随向量数近似线性增长。
  • HNSW:通过多层图从稀疏上层导航到稠密底层。M、efConstruction 和 efSearch 分别影响图连接、构建成本和查询搜索宽度。
  • IVF:用粗量化器把向量划分到 nlist 个单元;nprobe 越大,通常召回越高、查询越慢。
  • PQ / IVFPQ:将向量拆成多个子空间并存储码本编号,显著压缩内存,但近似距离会损失精度。

还要匹配距离度量。若模型按余弦相似度训练,常先归一化再用内积;不能在模型、索引和线上查询之间混用未核验的度量。删除、过滤、持久化和动态更新能力也取决于具体数据库实现,不能仅由算法名称推断。

工程实践

从真实库抽样,用 Flat 生成近邻真值,再比较 ANN Recall@K、p95 延迟、索引大小、构建时间和更新成本。分别扫描 efSearch、nprobe 等参数,并把元数据过滤后的召回纳入测试;高过滤率可能让原本良好的 ANN 参数失效。

常见追问

  1. HNSW 的 M 和 efSearch 分别影响什么? M 控制每个节点连接数,影响索引内存、构建和图连通性;efSearch 控制查询候选宽度,越大通常召回越高、延迟也越高。
  2. IVF 中 nlist 与 nprobe 如何取舍? nlist 决定聚类桶数量,nprobe 决定一次查多少桶;桶多但探测少可能漏召回,探测多则接近更高计算成本。
  3. 为什么 PQ 能省内存但可能降低答案质量? PQ 用子空间码本近似原向量,减少存储和带宽,但量化误差会改变近邻排序,关键证据可能掉出 Top-K。

一句话复习

向量索引选择是在精确度、延迟、内存、构建和更新能力之间做有数据支撑的取舍。

参考资料

无需账号 · 原地交流

评论与补充

评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。

正在加载评论…