目录
- 1. 构建检索库
- 2. 测试条件
- 3. 测试结果
- 4. 性能分析
- 5. 结论
1. 构建检索库
- 构建通用场景库总计约2万张。
- 构建车辆数据库总计约12万张。
- 构建公共数据库,包括Flickr30k、COCO、nlvr2、vqa等数据集约43万张。
2. 测试条件
- 环境说明:分别单机部署Milvus和Elasticsearch。
- 配置说明:分别基于Milvus和Elasticsearch构建三种不同规模的检索库,Embedding维度为1024,均是采用余弦相似度计算距离,采用ANN方法返回topk检索结果,其他检索条件均相同。
3. 测试结果
检索库类型 | 检索库大小(万) | ES检索性能(秒/次) | Milvus检索性能(秒/次) | Milvus性能优势倍数 |
---|---|---|---|---|
通用场景库 | 2 | 0.0253 | 0.0052 | 4.87 |
车辆数据库 | 12 | 0.10825 | 0.00646 | 16.76 |
公共数据库 | 43 | 0.36684 | 0.00708 | 51.82 |
4. 性能分析
-
小数据量场景(2W)
- Milvus 性能是 ES 的 4.87 倍,表明即使在小规模数据下,Milvus 的向量检索效率仍显著优于 ES。
-
中大数据量场景(12W/43W)
- 12W 数据量时,Milvus 性能提升倍数扩大至 16.76
- 43W 数据量时,Milvus 性能优势达到 51.82
- ES 的检索耗时随数据量增长呈非线性上升(从 0.0253s → 0.36684s),而 Milvus 仅从 0.0052s → 0.00708s,增长幅度极小。
- 扩展性差异
-
ES 的检索性能与数据量高度相关,说明其底层架构对大规模向量数据的处理效率存在瓶颈。
-
Milvus 则展现出优异的扩展性,其检索耗时几乎不受数据量增长影响,体现了专用向量数据库的设计优势。
5. 结论
- Milvus 优势:专为向量检索优化,采用列式存储、近似最近邻(ANN)算法和分布式架构,在大规模场景下性能显著优于 ES。
- ES 局限性:基于倒排索引的架构对非结构化向量数据处理效率较低,适合文本检索为主的混合场景。
- 选型建议:
✔️ 纯向量检索场景(尤其是数据量 >10W 时)优先选择 Milvus
✔️ 文本+向量混合检索场景可考虑 ES,但需接受向量性能折损