目录
🧪 对 Milvus 进行向量搜索压测 —— 使用 VectorDBBench(最新版)
🧪 对 Milvus 进行向量搜索压测 —— 使用 VectorDBBench(最新版)
一、测试目标
利用 VectorDBBench(v1.0+ CLI)对在 Kubernetes 中部署的 Milvus 进行压力测试,涵盖数据下载、索引构建、并发搜索等流程,评估 QPS、延迟、召回等关键指标。
二、步骤回顾
1. 环境准备
-
在 Conda 中创建 Python 3.11 环境,安装
vectordb‑bench。 -
确保
wget、s3fs等工具可用,用于下载数据。
2. 数据集下载挑战
测试默认使用 OpenAI-SMALL-50K 数据集,但首次运行时下载失败:
-
原始
s3fs代码硬编码为region_name="us-west-2",导致和实际eu-central-1后端不匹配,出现PermanentRedirect错误。 -
手动使用正确地址下载数据后,压测可正常进行。解决方法见下面。
✔️ 关键命令:
BASE=/tmp/vectordb_bench/dataset/openai/openai_small_50k
mkdir -p "$BASE" && cd "$BASE"
wget https://assets.zilliz.com/benchmark/openai_small_50k/train.parquet
wget https://assets.zilliz.com/benchmark/openai_small_50k/shuffle_train.parquet
wget https://assets.zilliz.com/benchmark/openai_small_50k/neighbors.parquet
wget https://assets.zilliz.com/benchmark/openai_small_50k/scalar_labels.parquet
这样就避开了 SDK 下载问题,让测试流程顺畅无阻。
三、配置批量测试 YAML
配置文件 config.yml 使用如下格式,确保符合 batchcli 要求:
milvushnsw:
- db_label: milvus_k8s_test
uri: http://10.233.48.134:19530
m: 16
ef_construction: 128
ef_search: 128
case_type: Performance1536D50K
skip_search_serial: true
drop_old: false
load: false
运行批量测试命令:
vectordbbench batchcli --batch-config-file vectordb_bench/config-files/config.yml
确保数据已下载后,执行无报错。
四、压测结果解读
执行完成后,日志输出如下:
qps 5310.0365
latency(p99) 0.0
recall 0.0
-
QPS ≈ 5310:代表在 1536 维、50K 数据量下的 Milvus 并发吞吐能力;
-
p99 延迟为 0.0:意味着延迟极低,99% 操作几乎无延迟;
-
recall 为 0:可能是默认不计算召回或未加载性能数据。
最终结果保存为:
…/results/Milvus/result_20250723_*.json
五、踩过的坑及注意事项
| 问题 | 解决方法 |
|---|---|
| S3 重定向错误 | 因桶位于 eu-central-1,需修改 region_name 或使用 HTTP 下载方式 |
s3fs 坏配置 | 默认硬编码到 us-west-2,建议改源码或避免使用它进行下载 |
| YAML 非 batch 列表格式 | batchcli 要求 key: - item,否则报 str has no items |
| 召回值为 0 | 可能因为 skip_serial 或 ground-truth 未加载,建议开启相关参数或进一步排查 |
六、可复用脚本推荐
执行脚本模板:
#!/bin/bash
# 1️⃣ 下载数据
BASE=/tmp/vectordb_bench/dataset/openai/openai_small_50k
...
# 2️⃣ 执行压测
export LOG_LEVEL=DEBUG
vectordbbench batchcli --batch-config-file vectordb_bench/config-files/config.yml
建议将其保存为 run_milvus_bench.sh 并赋予执行权限,一键测试。
七、总结
通过这次测试,你成功完成了:
-
修正下载逻辑,绕开数据获取瓶颈;
-
配置符合 CLI 批量格式要求的 YAML;
-
成功跑通 Milvus 的高维向量压测,获取了稳定的 QPS 指标。
下一步建议:
-
测试不同
case_type(如Performance768D1M)和indexType(IVF、DiskANN 等); -
开启系列测试获取召回率与延迟变化曲线;
-
比较 Milvus 与 Qdrant、Pinecone 之间差异,以及启用 streaming 功能的连贯性测试。
📌 推荐阅读
-
VDBBench 1.0:支持 streaming、过滤、实时压测 (milvus.io, github.com, github.com, milvus.io)
-
官方快速使用指南和 leaderboard (zilliz.com, docs.zilliz.com)
如你希望进一步构建对比测试、视觉化结果看板或自定义 Parquet 数据集测试模板,随时欢迎继续探讨!

被折叠的 条评论
为什么被折叠?



