向量检索性能测试报告
更新时间:2026-09-11
本文对比 Doris 存算分离版与 Milvus 在向量检索场景下的索引构建耗时、检索 QPS,以及高维向量场景下的内存占用和检索时延。
性能指标
性能关注以下两个指标:
- 检索 QPS 或吞吐:系统在单位时间内能够处理的检索请求数量,是衡量检索性能的关键指标。
- 召回率:检索的 TopK 结果中,满足真实情况(KNN 检索)的 TopK 集合的比例,是衡量向量检索精度的关键指标。
测试方法
向量索引选择 HNSW,检索最相似 Top10 向量,对比 Doris 存算分离版 和 Milvus 的 QPS 表现。
测试机型:单节点 12 核。
数据库版本:
| 数据库 | 版本 |
|---|---|
| doris | 存算分离版 |
| milvus | 2.4 |
数据集:测试 SIFT 128、GIST 960 两种维度的数据集,数据集大小均为 100 万。
| 数据集名 | 数据集介绍 | 向量维度 | 向量数 | 距离类型 |
|---|---|---|---|---|
| SIFT_1M | 官方数据集 | 128 | 1,000,000 | L2 |
| GIST_1M | 官方数据集 | 960 | 1,000,000 | L2 |
测试结果
索引性能
| 数据库 | 数据集 | 维度 | 写入时间 + 构建索引时间 |
|---|---|---|---|
| doris | ANN_SIFT1M(100W 条) | 128 | 91682 ms |
| milvus | ANN_SIFT1M(100W 条) | 128 | 281765 ms |
| doris | ANN_GIST1M(100W 条) | 960 | 198810 ms |
| milvus | ANN_GIST1M(100W 条) | 960 | 391743 ms |
结论:Doris 向量索引性能强于 Milvus。在相同参数情况下,在 SIFT 数据集,Doris 的索引耗时相比 Milvus 要少 66%,在 GIST 数据集,Doris 的索引耗时相比 Milvus 要少 49%。
检索性能
SIFT(128 维)

| 数据集 | 索引类型 | 召回率 | Milvus QPS | Doris QPS |
|---|---|---|---|---|
| SIFT_1M | HNSW(M=32, efConstruction=200) | 95% | 3269 | 33868 |
| SIFT_1M | HNSW(M=32, efConstruction=200) | 98% | 3200 | 25720 |
| SIFT_1M | HNSW(M=32, efConstruction=200) | 99% | 3055 | 23092 |
GIST(960 维)

| 数据集 | 索引类型 | 召回率 | Milvus QPS | Doris QPS |
|---|---|---|---|---|
| GIST_1M | HNSW(M=32, efConstruction=200) | 95% | 958 | 4042 |
| GIST_1M | HNSW(M=32, efConstruction=200) | 98% | 647 | 1792 |
| GIST_1M | HNSW(M=32, efConstruction=200) | 99% | 503 | 1187 |
结论:Doris 的向量检索性能强于 Milvus。在相同召回率下,在 SIFT 数据集,Doris 的检索 QPS 是 Milvus 的 3 倍左右,在 GIST 数据集,Doris 的检索 QPS 是 Milvus 的 1.5 倍左右。
高维向量场景
测试环境
- 测试数据:10 万条 32,768 维向量,L2 度量。
- 机器规格:32 核 32GB,Milvus 和 Doris 使用同一物理机。
- Milvus 部署方式:standalone 版本,Docker 部署。
- Doris 部署方式:1FE + 1BE,Docker 部署。
测试结果
| 数据库 | 内存占用 | 平均检索时延 |
|---|---|---|
| Milvus | 17.1GB | 51.87ms |
| Doris | 16.9GB | 45.11ms |

结论:在高维向量场景,Doris 的向量检索能力和 Milvus 相当,Doris 略占优。
评价此篇文章
