阿里云Milvus支持多种向量检索算法,主要包括HNSW、IVF_FLAT、IVF_PQ、IVF_SQ8、FLAT、ANNOY、DISKANN等索引类型,适用于不同数据规模和性能需求场景。
主要索引类型及适用场景
HNSW(分层可导航小世界):基于图结构的索引算法,适合高精度、低延迟的搜索场景,支持亿级向量数据,内存占用中等,查询速度极快,召回率约98%。
IVF_FLAT(倒排文件+暴力搜索):通过K-means聚类将向量分组,查询时仅搜索与目标向量最接近的若干簇,适合10万-1000万条数据规模,查询速度中等,召回率约98%。
IVF_PQ(倒排文件+乘积量化):在IVF基础上进行向量量化压缩,适合1000万-10亿条超大规模数据,查询速度极快,存储成本极低,但召回率约90%,存在一定精度损失。
IVF_SQ8(倒排文件+标量量化):将向量压缩为8位整数,适合磁盘或内存资源有限的场景,查询速度快,存储开销低,召回率约95%。
FLAT(无索引):直接暴力搜索所有向量,适合小规模数据(≤10万条)或需要100%精确召回的场景,查询速度极慢但精度最高。
DISKANN:基于磁盘的索引算法,适合超大规模数据(≥10亿条),查询速度快,存储成本极低,召回率约95%。
距离度量方式
Milvus支持多种相似度计算方式:
-
欧氏距离(L2):衡量两个向量在空间中的直线距离,适用于图像检索、视觉特征匹配等场景
-
内积(IP):计算两个向量的点积,适合非标准化数据或关注向量幅度和角度的场景
-
余弦相似度:衡量向量方向一致性,广泛应用于文本语义匹配,取值范围[-1, 1],值越大越相似
选型建议
-
小规模高精度:选择FLAT(≤10万条)
-
中等规模平衡性能:选择IVF_FLAT(10万-1000万条)
-
大规模低延迟:选择HNSW(≥1亿条)
-
超大规模低成本:选择IVF_PQ或DISKANN(≥10亿条)
用户可根据数据规模、查询延迟要求、召回率要求和存储成本预算,灵活选择合适的索引算法组合。