规格计算器

更新时间:
复制 MD 格式

选购向量检索版实例前,通过规格计算器可获取推荐的查询节点和数据节点配置。本文还提供了 HNSW 和 IVF_SQ8 算法在不同数据规模下的 Benchmark 数据,作为规格选型的性能参考。

使用规格计算器

在向量检索版购买页面,单击规格计算器

打开OpenSearch向量检索版规格计算器对话框,包含基础情况向量数据情况查询情况三个配置区域,填写完成后单击进行运算获取推荐规格。

基础情况

  1. 实例所在区域:需要创建引擎的区域。

  2. 是否有容灾需求:是否需要容灾,可下拉选择有或无。

向量数据情况

  1. 向量数据条数:写入引擎的向量数据条数。

  2. 向量维度:写入引擎的向量维度。

  3. 向量算法:根据需求选择,目前支持以下三种算法。

  • HNSW:基于图的向量检索算法,召回率极高且性能好,内存及存储占用与 Linear 相当,在低维度和高维度向量数据集上均有很好的表现,适用于大多数向量检索场景。

  • QC:基于量化聚类的向量检索算法,召回结果正确率极高,占用资源较少,性能较好。在低维度向量数据集上有更好表现,内存及存储占用一般只有 Linear 和 HNSW 的 1/4,适用于对召回率没有严苛要求的大数据量检索场景。

  • Linear:线性检索(暴力检索),召回结果完全正确,但占用资源多且性能较差,通常适用于小数据集(1 万条数据量以内)的精确检索。

查询情况

  1. 平均 QPS:接入引擎的流量 QPS。

  2. 期望搜索平均响应时间:期望的召回结果平均耗时,单位可选 s 或 ms。

填写完成后,单击进行运算

推荐结果包括查询节点规格族查询节点数量查询节点规格数据节点规格族数据节点数量数据节点规格以及单数据节点存储空间/磁盘空间等参数,根据推荐结果购买对应规格的资源。

HNSW Benchmark 数据

以下测试数据基于公开数据集,使用引擎版本 vector_service 1.5.9,采用 1 个查询节点 + 1 个云盘型数据节点的配置组合。建图参数:M = 100,ef-construction = 500。

数据集

规格

参数

recall@k(串行)

P95 延迟(串行)

峰值 QPS(并发)

峰值并发

查询节点 CPU/Mem

数据节点 CPU/Mem

索引内存占用

OpenAI 1536D 50K

2C8G 查询节点 + 2C16G 数据节点

ef=20, k=10

0.9793

20ms

643

10

89%/12%

61%/10%

311MB

ef=200, k=100

0.9991

4C16G 查询节点 + 4C32G 数据节点

ef=20, k=10

0.9805

27ms

1035

20

99%/7%

38%/18%

ef=200, k=100

0.9989

35ms

744

20

88%/7%

88%/18%

Cohere 768D 1M

4C16G 查询节点 + 4C32G 数据节点

ef=20, k=10

0.9560

18ms

1413

20

96%/7%

48%/18%

3.13GB

ef=200, k=100

0.9919

131ms

745

80

68%/7%

91%/18%

4C16G 查询节点 + 8C64G 数据节点

ef=20, k=10

0.9598

26ms

1601

30

99%/8%

29%/8%

ef=200, k=100

0.9921

25ms

1527

30

97%/7%

93%/8%

Cohere 768D 10M

8C32G 查询节点 + 8C64G 数据节点

ef=20, k=10

0.9429

24ms

1534

30

70%/3%

95%/55%

33GB

ef=200, k=100

0.9552

55ms

662

30

40%/5%

95%/55%

数据节点内存水位与性能的关系

以下测试使用 Cohere 768D 数据集,搭配 4C16G 查询节点 + 4C32G 云盘型数据节点,索引结构为 HNSW(InnerProduct,ef-construction = 500,M = 100)。通过分步插入数据(每次 1M 条)观察内存水位对 QPS 的影响。

数据量

索引内存占用

进程内存使用率

QPS(k=10, ef=20)

QPS(k=100, ef=200)

2M

6.3GB

26.6%

1368

647

4M

12.5GB

47.8%

1324

378

5M

15.6GB

59.2%

1068

334

6M

18.8GB

69%

1112

341

7M

21.8GB

80%

几乎不可用

8M

典型配置会将向量索引、PK 索引和倒排索引以 mlock 方式锁定在物理内存中,以获得最低的检索延迟。其他数据(attribute、summary 等)不做 mlock,依赖 OS page cache 按需加载。当内存水位上升,page cache 被压缩,读取 attribute 时频繁触发缺页中断,导致延迟上升:

  • 水位 > 70%:QPS 急剧下降。

  • 水位 > 80%:服务近乎不可用。

IVF_SQ8 Benchmark 数据

以下测试使用 Cohere 768D 10M 数据集,搭配 4C16G 查询节点 + 4C32G 云盘型数据节点。

建图参数:

{
  "proxima.qc.builder.quantizer_class": "Int8QuantizerConverter",
  "proxima.qc.builder.quantize_by_centroid": true,
  "proxima.qc.builder.optimizer_class": "BruteForceBuilder",
  "proxima.qc.builder.thread_count": 10,
  "proxima.qc.builder.optimizer_params": {
    "proxima.linear.builder.column_major_order": true
  },
  "proxima.qc.builder.store_original_features": false,
  "proxima.qc.builder.train_sample_count": 3000000,
  "proxima.qc.builder.train_sample_ratio": 0.5
}

串行测试:召回率和延迟

Scan ratio

召回率

延迟(P99)

延迟(P95)

0.01

0.9123

39.5ms

35.7ms

0.05

0.9454

84ms

75ms

并发性能测试:分步插入

将 10M 条 768 维向量数据分步插入实例,观察不同数据量对应的索引大小和查询 QPS 的变化。

数据量

索引内存占用

内存使用率

QPS(scan ratio 0.01, k=100)

QPS(scan ratio 0.05, k=100)

1M

2.25GB

7.4%

1000

558

2M

3.11GB

10.4%

766

258

4M

4.95GB

16%

408

122

10M

9.9GB

32.4%

131

46