Milvus vs. ElasticSearch:向量库检索性能测试

ops/2025/3/29 15:15:44/

目录

    • 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性能优势倍数
通用场景库20.02530.00524.87
车辆数据库120.108250.0064616.76
公共数据库430.366840.0070851.82

4. 性能分析

  1. 小数据量场景(2W)

    • Milvus 性能是 ES 的 4.87 倍,表明即使在小规模数据下,Milvus 的向量检索效率仍显著优于 ES。
  2. 中大数据量场景(12W/43W)

  • 12W 数据量时,Milvus 性能提升倍数扩大至 16.76
  • 43W 数据量时,Milvus 性能优势达到 51.82
  • ES 的检索耗时随数据量增长呈非线性上升(从 0.0253s → 0.36684s),而 Milvus 仅从 0.0052s → 0.00708s,增长幅度极小。
  1. 扩展性差异
  • ES 的检索性能与数据量高度相关,说明其底层架构对大规模向量数据的处理效率存在瓶颈。

  • Milvus 则展现出优异的扩展性,其检索耗时几乎不受数据量增长影响,体现了专用向量数据库的设计优势。

5. 结论

  • Milvus 优势:专为向量检索优化,采用列式存储、近似最近邻(ANN)算法和分布式架构,在大规模场景下性能显著优于 ES。
  • ES 局限性:基于倒排索引的架构对非结构化向量数据处理效率较低,适合文本检索为主的混合场景。
  • 选型建议
    ✔️ 纯向量检索场景(尤其是数据量 >10W 时)优先选择 Milvus
    ✔️ 文本+向量混合检索场景可考虑 ES,但需接受向量性能折损

http://www.ppmy.cn/ops/169778.html

相关文章

java+selenium(资源全备,打开已使用浏览器信息,保留用户信息)

javaselenium(资源全备,打开已使用浏览器信息,保留用户信息) 一、介绍 我的代码可以实现以下效果: 保留用户信息,好处:可以在登录好一个账号后还保留原来的token验证信息 使用javaselenium实现爬取vue元素内容&…

C# 中实现一个线程持续读取,另一个线程负责写入,且写入时读取线程暂停

实现思路 暂停信号:通过 ManualResetEventSlim 通知读取线程暂停。 暂停确认:读取线程收到暂停信号后,发送确认信号。 原子性控制:确保写入操作执行期间,读取线程处于完全暂停状态。 恢复机制:写入完成后…

html5炫酷3D立体文字效果实现详解

炫酷3D立体文字效果实现详解 这里写目录标题 炫酷3D立体文字效果实现详解项目概述技术实现要点1. 基础布局设置2. 动态背景效果3. 文字渐变效果4. 立体阴影效果5. 悬浮动画效果 技术难点及解决方案1. 文字渐变动画2. 立体阴影效果3. 性能优化 浏览器兼容性总结 项目概述 在这个…

天地图InfoWindow插入React自定义组件

截至2025年03月21日天地图的Marker不支持添加Label; 同时Label和Icon是不支持自定义HTMLElement只支持String;目前只有InfoWindow支持自定义HTMLElement; 效果图 React核心api import ReactDOM from react-dom/client const content document.createElement(div);…

前端 Babel 入门简介

前端 Babel 简介 Babel 是一个 JavaScript 编译器,主要用于将 ES6 代码转换为向后兼容的 JavaScript 代码,以便可以在旧版本的浏览器或环境中运行。以下从多个方面对前端 Babel 进行详细介绍。 核心概念 语法转换:Babel 可以把新的 JavaS…

【考研政治】2026考研政治马原部分关键词带背 导论

📚【考研哲学深度精讲】考点解析|马原框架案例真题时政|2025考研旗舰版(上篇) 🌟 前言:哲学备考的「三重境界」 ▶ 第一重:概念通关(8月前)——掌握217个核…

Leetcode 3494. Find the Minimum Amount of Time to Brew Potions

Leetcode 3494. Find the Minimum Amount of Time to Brew Potions 1. 解题思路2. 代码实现 题目链接:3494. Find the Minimum Amount of Time to Brew Potions 1. 解题思路 这道题虽说算是搞定了,通过了全部的测试样例,不过还是很暴力的求…

MATLAB中orderfields函数用法

目录 语法 说明 示例 按名称对字段排序 使用另一个结构体对字段排序 在元胞数组中列出字段名称 使用置换向量按位置列出字段 使用来自另一个结构体的置换向量重新排序 orderfields函数的功能是结构体数组的顺序字段。 语法 S orderfields(S1) S orderfields(S1,S2)…