索引使用建议
更新时间 2026-06-29 10:10:35
最近更新时间: 2026-06-29 10:10:35
本页介绍多模态向量数据库Milvus版索引使用建议。
多模态向量数据库Milvus版不同索引类型在召回率、查询性能、内存成本等因素之间,均有不同的取舍,下面总结在不同场景下的最佳实践。
通常情况下基于HNSW类的索引通常在QPS方面优于IVF类索引。
IVF类索引尤其适合拥有大量topK(例如超过2000个)的场景。
在相似的压缩率下,PQ 通常比 SQ 提供更好的召回率,而 SQ 的性能更快。
向量索引
| 索引名称 | 适用场景 | 特点 |
|---|---|---|
| AUTOINDEX | 降低学习曲线,快速开始使用,不需要控制具体索引参数。 | 基于经验数据为特定字段自动决定最合适的索引类型和参数。 |
| FLAT | 小数据集(如百万级以内),需要100%精确结果,或作为其他索引的基准测试。 | 暴力搜索,召回率100%,最精确,但查询速度最慢。 |
| IVF_FLAT | 大数据集,追求高召回率,内存充足。 | 基于K-means聚类分区,速度与精度平衡,内存占用较高。 |
| IVF_SQ8 | 内存有限,可接受轻微精度损失,追求高查询速度。 | 标量量化压缩,内存比IVF_FLAT节省75%。 |
| IVF_PQ | 内存极度受限,可接受较大精度损失,适用于十亿级别数据集。 | 乘积量化压缩,内存占用极小,精度损失相对较大,索引构建慢,以更高的计算复杂度为代价,换取最低的内存占用和最快的查询速度 |
| IVF_RABITQ | 内存极度受限,且希望在获得高压缩比的同时保持较高召回率。 | 结合IVF聚类和RaBitQ二进制量化,存储效率极高,可作为IVF_SQ8的替代方案。 |
| HNSW | 内存充足,追求极致查询速度和高召回率,适合高维、大数据量场景。 | 基于分层图的算法,查询速度极快,但内存占用大、索引构建慢。 |
| HNSW_SQ | 内存有限的HNSW替代方案,极致性能吞吐,对召回率敏感度不高的场景。 | HNSW标量量化版,平衡查询速度与内存消耗,注重查询速度优先。 |
| HNSW_PQ | 内存有限的HNSW替代方案,同时对精度相对要求高的场景。 | HNSW乘积量化版,能在相同压缩率下保留更多原始向量的结构信息,构建时间较长。 |
| HNSW_PRQ | 内存非常有限,但比使用PQ希望保留更高精度。 | HNSW与乘积残差量化(PRQ)结合,比HNSW_PQ精度更高,但计算开销也更大。 |
| SCANN | 追求高查询速度,高吞吐、低延迟、内存敏感的场景,可接受轻微精度损失。 | 结合优化的倒排索引+乘积量化,引入查询分数感知量化和SIMD指令集加速,在精度(Recall≈95%)和性能间取得平衡 |
| BIN_FLAT | 二进制向量数据集,小数据集(如百万级以内),需要100%精确结果。 | 暴力搜索,召回率100%,最精确,无任何近似或压缩。 |
| BIN_IVF_FLAT | 二进制向量数据集,大规模(如百万~十亿级),可接受少量召回率损失,追求高查询速度。 | 针对二进制向量的基于K-means聚类分区,速度与精度平衡,内存占用较高。 |
| MINHASH_LSH | 二进制向量数据集,大规模文本近似去重,社交网络分析,推荐系统场景。 | 基于局部敏感哈希的MinHash算法。 |
| SPARSE_INVERTED_INDEX | 稀疏向量数据集,全文检索,高维特征检索场景。 | 针对高维稀疏向量(绝大多数维度为零)设计的倒排索引。 |
标量索引
| 索引名称 | 适用场景 | 特点 |
|---|---|---|
| INVERTED | VARCHAR字段,支持多种查询(点查询、全文检索、JSON搜索等)。 | 功能全面的倒排索引,VARCHAR字段首选。 |
| BITMAP | 低基数(cardinality) 的标量字段,如状态、类别标签。 | 通过位运算实现高效筛选,适合枚举值有限的字段。 |
| Trie | 字符串字段的前缀匹配或自动补全查询。 | 前缀树结构,可快速定位指定前缀的数据。 |
| STL_SORT | 值型字段(如ID、时间戳)的排序、范围查询,常用于主键排序。 | 基于排序数组,对点查和小范围查询友好。 |
| NGRAM | VARCHAR字段的 LIKE 模糊查询。 | 将文本切割为N-gram构建倒排索引,极大提升模糊查询速度。 |
| RTREE | GEOMETRY 几何字段的空间查询。 | 基于R-Tree树结构,专为多维空间数据设计的索引,可高效处理空间关系运算。 |