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

news/2025/3/28 8:20:31/

目录

    • 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/news/1580916.html

相关文章

深兰科技获评“产学研用——共研体联盟”链主型企业称号

3月18日下午,浦东新区工商联举办“金融服务助发展、法护民企促壮大”主题活动。活动期间,产学研用共研体联盟正式成立,深兰科技凭在人工智能产学研用方面所做出的创新和成绩,获评“产学研用--共研体联盟”链主型企业称号。 此次授…

【NLP】 API在大语言模型中的应用

大语言模型(Large Language Models,LLMs)通过API(应用程序接口)为开发者提供了便捷的调用方式,使其能够快速集成自然语言处理能力到各类应用中。以下是API在LLM中的核心应用场景及技术实现细节: 一、核心应…

33-盛最多水的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容器。 方法…

电商项目Ts版本

文章目录 项目地址一、环境安装1.1 配置作为导入1.2 文件目录 二、路由2.1 publicRoutes 项目地址 教程作者:教程地址: 代码仓库地址: 所用到的框架和插件: dbt airflow一、环境安装 1.1 配置作为导入 vite.config.ts impor…

欢乐力扣:基本计算器

文章目录 1、题目描述2、思路代码括号 1、题目描述 基本计算器。  给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。  注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 2、思路 本人也不太会&#xff0c…

详解如何通过Python的BeautifulSoup爬虫+NLP标签提取+Dijkstra规划路径和KMeans聚类分析帮助用户规划旅行路线

系统模块: 数据采集模块(爬虫):负责从目标网站抓取地点数据(如名称、经纬度、描述等) 数据预处理模块(标签算法):对抓取到的地点数据进行清洗和分类。根据地点特征&…

C语言经典代码练习题

1.输入一个4位数&#xff1a;输出这个输的个位 十位 百位 千位 #include <stdio.h> int main(int argc, char const *argv[]) {int a;printf("输入一个&#xff14;位数&#xff1a;");scanf("%d",&a);printf("个位&#xff1a;%d\n"…

Linux 文件操作-标准IO函数3- fread读取、fwrite写入、 fprintf向文件写入格式化数据、fscanf逐行读取格式化数据的验证

目录 1. fread 从文件中读取数据 1.1 读取次数 每次读取字节数 < 原内容字节数 1.2 读取次数 每次读取字节数 > 原内容字节数 2.fwrite 向文件中写入数据 2.1写入字符串验证 2.2写入结构体验证 3. fprintf 将数据写入到指定文件 4. fscanf 从文件中逐行读取内容…