向量索引选取建议
seekdb 提供了多种不同算法的向量索引,用户可以依据使用场景选择合适的索引类型。
备注
本文档仅提供稠密向量索引类型的选型优化建议。
HNSW 还是 IVF?
seekdb 的稠密向量索引分为两大类:
- 基于图的 HNSW 系列索引:HNSW、HNSW_SQ、HNSW_BQ。
- 基于磁盘的 IVF 系列索引:IVF、IVF_PQ。
这两种索引类型各有侧重。HNSW 系列索引通常提供更高的查询性能,但需要占用更多常驻内存;而 IVF 系列索引在缓存充足时性能表现良好,且能够不依赖常驻内存运行。然而,选择 HNSW 还是 IVF 并非仅基于内存考量,业务场景、数据规模、性能指标以及资源约束等多个维度都需综合评估,下文将详细对比其核心差异并提供选择建议。
核心差异对比
| 对比维度 | HNSW 系列 | IVF 系列 |
|---|---|---|
| 存储方式 | 基于内存的图结构索引 | 基于磁盘的索引 |
| 内存占用 | 需要完整载入内存,内存占用高 | 可不占用常驻内存,内存占用低 |
| 查询性能(QPS) | 极高,毫秒级响应 | 较高,在缓存充足时接近 HNSW |
| 召回率 | 高,可达 99% | 较高,略低于 HNSW,可通过参数调优 |
| 构建速度 | 较慢,需要构建图结构 | 较快,基于聚类算法 |
| 适用数据量 | 百万级到亿级 | 百万级到十亿级 |
| 成本 | 内存成本高 | 存储成本低,适合大规模数据 |
| 实时性 | 支持实时 DML 操作 | 支持实时 DML 操作 |
决策流程图
备注
- 在选择索引类型前,您需要先参考向量索引内存管理估算内存用量。
- 决策流程图中的选择建议均以 1024 维向量为参考,若实际维度不同,可按比例近似换算所需资源。
- 决策流程图主要从内存成本角度出发,帮助您决策索引类型。
- 即使租户内存充足,也不一定总是选择 HNSW 等最高规格索引。如果对极致性能有较高需求,可以考虑 HNSW_SQ 等更具性价比的选项。

备注
这里仅列举了部分常用场景的决策流程,如果通过上述路径无法判断,或有其他需求,请联系 seekdb 技术支持。
是否使用分区表?
使用分区表的主要目的是为了解决大数据量的场景,其次是如果查询条件可以用于做分区键,那么通过分区裁剪可以提升查询性能。在以下两种场景下建议使用分区表:
- 数据量达到几千万或亿级以上:当数据量非常大时,使用分区表可以将数据分散到多个分区,每个分区独立构建索引,从而降低单次查询负载,提升整体查询性能。
- 查询条件中有明确的标量列可以用作分区裁剪:例如,如果
label字段总是会出现在WHERE条件中,那么就可以考虑以label作为分区键创建分区表,通过分区裁剪减少需要查询的分区数量。
具体使用建议如下:
分区划分
在使用向量索引时,分区数量不宜过多。与标量索引不同,向量索引(如 HNSW)在相同配置下,索引规模从 100 万向量增大到 200 万向量,查询 TopK 所需的计算开销并不会显著增加。因此,如果不能利用分区裁剪,过多的分区反而可能降低性能。另外,单个分区过大不仅会导致索引重建耗时增加,还会影响与标量条件联合查询时的效率。
综上,推荐将每个分区内的数据量控制在 2000 万以下,并优先选择能够支持分区裁剪的字段作为分区键。