计算节点规格与性能对比
本文介绍了向量检索Milvus版的计算节点(Query Node)的CU类型及节点数量,旨在帮助用户选择与自身业务场景相符的实例规格。
CU类型介绍
向量检索Milvus版的计算节点当前支持以下CU类型,以满足不同的业务场景和需求:
性能型:适用于查询QPS(Query Per Second)高、查询延迟低的场景。对于高并发、大流量及低延迟场景,可以选择性能型实例,例如搜索、推荐系统、生成型AI以及对话机器人等应用。
容量型:适用于数据规模大,但对搜索效率相对要求较低的场景。容量型相对于性能型有4倍的存储容量优势,能够存储和管理更多的向量数据。容量型实例同样具备优秀的技术指标,可满足大部分场景需求。例如特别适合大规模的非结构化数据检索、版权识别、模型数据准备等。
重要目前,容量型CU存在以下限制:
仅支持水平扩缩容,不支持垂直变配。购买前,请您务必仔细确认CU的规格。
仅推荐使用DiskANN索引,且该索引类型仅支持Float类型的向量数据。测量向量之间距离时,仅支持欧氏距离(L2)、内积 (IP)或余弦相似度(COSINE)。
存储容量对比
CU类型 | 索引类型 | CU规格 | 向量数据容量参考(基于SIFT的128维向量数据) | 向量数据容量参考(基于GIST的960维向量数据) |
性能型 | HNSW M:30 efConstruction:360 | 4 vCPU 16 GiB(4CU) | 1600 万 | 300 万 |
8 vCPU 32 GiB(8CU) | 3200 万 | 600 万 | ||
16 vCPU 64 GiB(16CU) | 6400 万 | 1200 万 | ||
32 vCPU 128 GiB(32CU) | 1.28 亿 | 2400 万 | ||
容量型 | DiskANN | 8 vCPU 32 GiB(8CU) | 1.2 亿 | 2300 万 |
16 vCPU 64 GiB(16CU) | 2.4 亿 | 4600 万 | ||
32 vCPU 128 GiB(32CU) | 4.8 亿 | 9200 万 |
以上数据均通过实际测试验证,可以作为容量评估的参考!
上述用于容量测试的数据中不包含任何标量数据,仅包含主键和向量数据,主键由从零开始自增的正整数转换为字符串。在大多数实际生产场景中,标量字段是不可或缺的,标量数据同样会占用存储空间,这将导致实际存储的向量数量低于上述表格所示。
检索性能对比
CU类型 | CU规格 | 索引类型 | topk=50 | topk=100 | topk=250 | topk=1000 | ||||
QPS | RT_p99 | QPS | RT_p99 | QPS | RT_p99 | QPS | RT_p99 | |||
性能型 | 16 vCPU 64 GiB (16 CU) | HNSW M:30 efConstruction:360 | 2000 | < 10 ms | 1200 | < 10 ms | 550 | < 15 ms | 150 | < 30 ms |
容量型 | 16 vCPU 64 GiB (16 CU) | DiskANN | 700 | < 15 ms | 550 | < 20 ms | 200 | < 30 ms | 60 | < 50 ms |
上述数据基于Cohere数据集(1000万768维度)的实测结果。然而,由于不同数据集的数据分布对性能产生影响,因此上述数据仅供参考。
RT_p99的测量是通过串行执行1000条查询,并对响应时间进行排序,以获得第99百分位的结果。
上述用于性能测试的数据不包含任何标量数据,仅包含主键和向量数据。主键为从零开始的自增正整数。在性能型中采用的索引类型为HNSW,而在容量型中采用的索引类型为DiskANN。
向量检索Milvus版将在后台定期进行向量索引优化,通常在写入完成后的3小时内完成,届时系统性能将达到最优状态。
计算节点数量
向量检索Milvus版支持调整计算节点(Query Node)的数量,目前可选范围为1~50。每个节点之间的数据完全相同,节点数量越多,可支持的QPS越高,呈线性关系。同时,节点数量越多,服务的可用性也越高。因此,建议对可用性有较高要求的生产环境选择不少于2个节点。
场景分析
如果您正在构建一个包含2000万个图片的图片检索系统,并且每个图片均用一个768维的向量进行表示,目标是能够快速处理每秒2000次的搜索请求,并在10毫秒内返回前100张相关图片的搜索结果。您可以按照以下内容进行选型评估:
时延评估:根据时延要求选择合适的CU类型。例如,如果需要10毫秒以内的时延,性能型CU是唯一能够满足此要求的类型。
容量考量:根据数据量和维度计算所需的CU数量。一个16 vCPU 64GiB(16CU)的性能型CU能够处理1200万个960维向量。为了容纳2000万个768维向量数据,建议至少配置2个此类CU,总计32 CU。
吞吐量检验:在给定的top-k设置下,验证每个CU的吞吐量。例如,在top-k设置为100的情况下,性能型CU的每秒查询量(QPS)为1200。为保持2000 QPS的持续性能,需要将节点数量增加至2倍。
综上所述,针对该应用场景,建议选择性能型CU,配置4个节点,单节点规格为16 vCPU 64GiB(16CU),以确保性能满足相关标准。