真实面经题目 · 原创解析
向量数据库在 AI 应用中数据量增大时,如何扩展索引、分片和召回性能?
这题考向量库从小规模知识库增长到大规模检索服务时的扩展思路。回答要覆盖容量评估、索引选择、分片分区、过滤与召回、在线更新、评估和成本延迟取舍。
真实面经题目 · 原创解析
这题考向量库从小规模知识库增长到大规模检索服务时的扩展思路。回答要覆盖容量评估、索引选择、分片分区、过滤与召回、在线更新、评估和成本延迟取舍。
我会先把扩展目标拆清楚:数据量变大后,不只是存得下,还要在可接受延迟内保持召回质量,并支持增量写入、权限过滤和成本控制。第一步评估规模,包括向量条数、维度、metadata 大小、更新频率、QPS、topK、过滤条件和召回目标。第二步选择索引,数据量较小时可用精确检索或轻量 HNSW;更大规模时要考虑 IVF、HNSW、PQ/量化、磁盘索引或冷热分层。第三步做分片和分区,按租户、业务域、时间、语言、权限或哈希切分,让查询只打必要分片,避免全库广播。第四步优化召回链路,先 metadata 过滤或路由,再向量召回,再 rerank,并用缓存和批量查询降低延迟。第五步建立评估和运维闭环,看 recall@K、nDCG、P95/P99 延迟、索引构建时间、更新可见延迟、分片倾斜、成本和 badcase。扩展方案的关键不是盲目加机器,而是让数据组织、索引结构和查询路由一起服务召回质量。
向量库扩展前要知道向量条数、维度、每条 metadata、QPS、topK、过滤条件、写入频率和 SLA。百万、千万、亿级向量的索引结构、内存占用、构建时间和查询策略完全不同,不能只说横向扩容。
HNSW 查询快、召回好但内存成本高;IVF 适合更大规模但依赖聚类和 nprobe 调参;PQ 或量化能省内存但可能损失精度;磁盘索引和冷热分层适合低频数据。选择要结合延迟、召回、更新频率和机器成本。
分片可以按租户、知识库、业务域、语言、时间、权限或哈希做。业务分区能提高过滤效率和安全隔离,哈希分片有利于负载均衡。查询路由要尽量只访问相关分片,否则分片越多,聚合成本和尾延迟越高。
AI 应用常常需要权限、时间、类型、来源等 metadata 过滤。如果先全库向量召回再过滤,可能过滤后没有足够候选;如果过滤过窄,又可能漏召回。工程上要结合预过滤、分区路由、候选扩展和 rerank 保证质量。
数据增长通常伴随频繁新增、删除和重嵌入。系统要支持增量写入、后台构建、影子索引切换、删除 tombstone、版本回滚和重建任务监控。否则索引新鲜度和线上稳定性会成为瓶颈。
扩展后要用标注集和线上日志看 recall@K、precision@K、nDCG、空召回率、P95/P99 延迟、QPS、构建耗时、更新可见延迟、分片倾斜、内存/磁盘成本和失败率。没有评估就很容易为了速度牺牲召回。
只加机器可能增加跨分片广播和结果合并成本。还要调整索引结构、分片策略、查询路由和过滤方式,才能同时保持召回和延迟。
HNSW 通常召回和延迟表现好但内存成本较高;IVF 更适合大规模压缩搜索空间,但需要训练聚类和调 nprobe。要用业务标注集比较。
过滤条件如果在召回后才做,候选可能被过滤空;如果过滤前过窄,又可能漏掉相关内容。因此要结合分区、预过滤、候选扩展和 rerank。
可以后台构建新版本索引,双写或回放增量,完成后影子验证并切流;保留旧索引回滚,监控构建失败、更新延迟和召回差异。