Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >2024 年,向量数据库的性能卷到什么程度了?

2024 年,向量数据库的性能卷到什么程度了?

作者头像
Zilliz RDS
发布于 2024-02-23 04:54:35
发布于 2024-02-23 04:54:35
7880
举报

对于数据库(尤其是向量数据库)而言,“性能”是一个十分关键的指标,其用于衡量数据库是否能够在有限资源内,高效处理大量用户请求。对于向量数据库用户而言,尽管可能在某些情况下对延时的要求不高,但对性能指标的高要求却一如既往,从未改变。

这也很好理解,原因在于:

1. 基于近似最近邻搜索(ANNS)的向量搜索,可能会为了提高性能而牺牲一点精度。但性能的提高却可以让用户在满足相同业务需求场景下,扩大搜索、提高准确度。

2. 在查询延迟相同,使用资源相同的情况下,数据库性能越高、吞吐量越高,可以适应更大的用户数量。

3. 相同场景下,性能越高意味着需要更少的计算资源。

向量数据库本质上是计算密集型的数据库,在计算向量距离时需要使用大量资源——通常超过总体资源的 80%。因此,负责处理向量搜索任务的向量搜索引擎,是决定向量数据库整体性能的关键因素。

Zilliz 一直致力于提升向量数据库性能,无论是 Milvus(https://github.com/milvus-io/milvus) 还是全托管的 Zilliz Cloud(https://zilliz.com.cn/cloud),与竞品相比都展现出了卓越的性能。其中,Milvus 的向量搜索引擎 Knowhere(https://github.com/zilliztech/knowhere),发挥了重要作用,为新一代的向量搜索引擎奠定了基础。而 Zilliz Cloud 最近发布的核心向量搜索引擎 Cardinal,直接将搜索引擎的性能比原来提升了 3 倍,搜索性能(QPS)是 Milvus 的 10 倍

我们通过开源向量数据库性能测试工具(https://github.com/zilliztech/VectorDBBench)评估了新版 Zilliz Cloud 的性能,并将其与使用旧引擎的 Milvus 和 Zilliz Cloud 进行了比较,评估结果如下图所示:

Cardinal 究竟是何方神圣?为何能有如此出色的表现?底层逻辑是什么?本文将一一揭晓。

01.

Cardinal 是什么?

Cardinal 是 Zilliz 专门研发的多线程、基于 C++ 语言开发的向量搜索引擎,其整合了最实用、最流行的 ANNS 方法,使用 Cardinal 可以实现高效的计算资源使用率。

Cardinal 能够:

  • 执行暴搜
  • 创建和修改 ANNS 索引
  • 执行索引 Top-K 和索引范围搜索(Range Search)
  • 处理包括 FP32、FP16 和 BF16 在内的各种输入数据格式
  • 使用内存中数据或提供基于内存、磁盘和 MMap 等不同方式的索引
  • 根据用户提供的标准在搜索过程中过滤结果

Cardinal 的能力包括:

  • Zilliz internal 的高性能 ANN 算法实现,通过大量可调整参数适配多种场景。默认会自动调整参数适配不同的场景,在保持合理精度(召回率)的同时最大化搜索速度(QPS,每秒查询数)。
  • 高效实现支持 ANNS 的各种算法,例如,提供样本过滤功能的算法。
  • 为搜索或索引构建过程中大多数计算密集型操作优化的专用 low-level 内核,支持多种硬件平台。除了各种相似度类型外,Cardinal 还包含 fused 内核和数据预处理内核。
  • 支持异步操作、内存映射 I/O 能力、缓存、内存分配器、日志记录等功能。

02.

Knowhere vs Cardinal

Knowhere 是 Milvus 的内部核心引擎,负责向量搜索,是基于行业标准开源库(如 Faiss、DiskANN 和 hnswlib 等)的增强版本。

以下为 Knowhere 和 Cardinal 的比较结果:

可以看到:

  • 两者均已生产就绪,并提供 Milvus 和 Zilliz Cloud 所需的所有可扩展性。
  • Knowhere 设计时考虑到实验性和灵活性;Cardinal 的范围更狭窄,优先考虑增强现有功能以提高速度和性能,而不是引入广泛的新功能。
  • 由于 Knowhere 属于开源,其部署环境更多样,可在所有主机类型上运行;Cardinal 则专门针对 Zilliz Cloud 主机环境进行了优化
  • Knowhere 依赖于 OSS 库(如 Faiss、DiskANN 和 hnswlib);Cardinal 则进行了针对性的改进和优化

03.

Cardinal 高性能的原因

Cardinal 实现了各种与算法相关的工程优化,它引入了 AUTOINDEX 机制,自动选择适合于数据集最佳的搜索策略和索引。开发者无需手动调优,能够节省时间和精力。

  • 算法优化

算法的优化显著提高了搜索过程的准确性和有效性,Cardinal 内部算法优化具体包括:

  • 搜索算法,包括基于 IVF 和基于图的方法
  • 帮助搜索保持所需召回率的算法,不论过滤样本的百分比如何
  • 更高效的 Best-First 搜索算法迭代方法
  • 定制了优先队列数据结构中的算法
  • 将算法参数化帮助开发者灵活权衡性能与 RAM 使用率。因此,Cardinal 的算法优化还涉及在参数范围内选择最佳操作点。
  • 工程优化

虽然算法最初是针对抽象的图灵机设计的,但真正实现时却面临着网络延迟、云提供商对 IOPS 的限制以及机器 RAM 限制等挑战(RAM 是一种宝贵而有限的资源)

工程优化可以确保 Cardinal 的向量搜索 Pipeline 保持实用,并符合计算、RAM 和其他资源限制。在 Cardinal 的开发中,Zilliz 融合了标准实践和创新技术。这种方法使 C++ 编译器能够生成计算上最优的编译代码,同时保持标准化的性能测试、易于扩展的源代码,便于快速添加新功能。

以下是在 Cardinal 中工程优化的具体示例:

  • 专门的内存分配器和内存池
  • 合理的多线程代码
  • 组件的层次结构,便于将元素组合成各种搜索 Pipeline
  • 针对特定、关键用例的定制化代码
  • 其他优化

1. 搜索时间大部分都花在称为内核的相对较小的代码片段上,最简单的例子是计算两个向量之间 L2 距离的内核。Cardinal 中包括为不同目的编写和优化的众多计算内核,每个内核都针对特定的硬件平台和用例进行了特别优化。

2. Cardinal 支持 x86 和 ARM 硬件平台,同时也可以轻松添加其他平台。

其中,对于 x 86 平台,Cardinal 内核使用 AVX-512 的F、CD、VL、BW、DQ、VPOPCNTDQ、VBMI、VBMI2、VNNI、BF16 和 FP16 扩展。此外,我们还在探索使用新的 AMX 指令集。对于 ARM 平台,Cardinal 内核支持 NEON 和 SVE 指令集。

3. 确保 Cardinal 为计算内核获取最优的代码。

为了实现这一点,我们不仅依赖现代 C++ 编译器,还使用专用工具,如 Linux perf 来分析热点和 CPU 指标;同时使用机器代码分析工具,如 GodBolt Compiler Explorer 和 uiCA,以确保最佳使用硬件“资源”,如 RAM/缓存访问次数、使用的CPU指令、寄存器、计算端口。此外,还使用迭代方法,交错进行设计、性能测试、性能分析和汇编代码分析阶段。

4. 优化后的计算内核可能比一个简单但未优化的内核速度提升 2-3 倍,这可能进一步转化为 2 倍的 QPS 值,又或是在云主机机器上降低 20% 的内存要求。

  • AutoIndex:搜索策略选择

向量搜索是一个涉及许多独立组件的复杂过程,包括量化、索引构建、搜索算法、数据结构等。每个组件都有大量可调参数,它们共同形成了高度多样化的向量搜索策略范围,不同的数据集和场景需要不同的搜索策略。

为了更好地挖掘性能改进的潜力,Cardinal 除了支持每个组件中的多种策略外,还实现了一套基于 AI 的动态策略选择机制,称为 AUTOINDEX。它根据给定数据集的分布、提供的查询和硬件配置自适应选择最合适的策略,可以满足用户对搜索质量的需求的同时实现最佳性能。

04.

Cardinal 性能测试

我们测试环境中采用了 ANN-benchmarks(https://github.com/erikbern/ann-benchmarks)。ANN benchmarks 是一个标准的性能测试工具,用于评估 ANNS 实现,并在使用不同距离度量的几个标准数据集上运行。每次性能评估都限定在单线程的 docker 容器内进行;指标基于多次评估迭代,并使用了大量单一查询请求;每个评估框架的结果汇总成一个“召回率 vs QPS”帕累托边界(Pareto frontier)。

所有测试都在与 ann-benchmarks 相同的机器类型上进行,即 Amazon EC2 r6i.16xlarge(https://aws.amazon.com/cn/ec2/instance-types/r6i/) 机器,配置如下:

  • CPU: Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz
  • CPU core: 32 核
  • 禁用超线程
  • RAM: 512 GB
  • 操作系统: Ubuntu 22.04.3 LTS , Linux 内核 6.2.0-1017-aws;未启用 huge page;测试使用--parallelism=31选项运行;使用 clang 17.0.6 compiler 编译 Cardinal。

下面呈现的性能测试结果仅针对 Cardinal 引擎,不包括 Zilliz Cloud 提供的其他非索引优化(包含 Zilliz Cloud 特定优化的结果可在文章开头获取)。

以下图表是通过 ANN-benchmark GitHub 页面上呈现的图表结果,并添加一个 Cardinal 曲线而生成的:

在所有性能测试中,Cardinal 的表现都十分出色。当然,我们未来还会面临更多挑战,例如要处理用户不同的需求、更大的数据集等,Cardinal 也需进一步成长,请大家拭目以待。

本文作者

Alexandr Guzhva

Zilliz 首席工程师

刘力

Zilliz 首席工程师

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ZILLIZ 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
零一万物自研全导航图向量数据库,权威榜单评测 6 项第一
3 月 11 日,零一万物宣布其成功研发出基于全导航图的新型向量数据库 “笛卡尔(Descartes)”,并包揽权威榜单ANN-Benchmarks 6 项数据集评测的第一名。
AI科技评论
2024/03/18
3320
零一万物自研全导航图向量数据库,权威榜单评测 6 项第一
向量数据库性能测试技巧
简介:随着非结构化数据的持续增长和人工智能(AI)以及大语言模型(LLM)的爆火,向量数据库已成为至关重要的基础设施。在这种趋势下,如何评估并挑选出最适合您的向量数据库呢?本文将深入探讨向量数据库的关键评估指标和性能测试工具。同时,本文还将介绍如何评估向量数据库性能助您做出明智的决策。
Zilliz RDS
2024/07/20
8710
向量数据库性能测试技巧
产学研用跨界对话,向量数据库研讨会回顾
随着 AI 应用的普及,以及图片、视频、语音、文本等非结构化数据的快速增长,向量检索成为数据分析相关应用中的重要技术。近年来,学术界对该技术的兴趣日益浓厚,在上一届人工智能领域全球顶级学术会议 NeurIPS 上,就举办了国际首届向量检索比赛。为了更好地理解海量非结构化数据,Zilliz 主办了一场向量检索研讨会,邀请来自学术界和企业界的多位专家学者共同探讨该领域的前沿技术与未来发展。
Zilliz RDS
2022/03/08
6110
产学研用跨界对话,向量数据库研讨会回顾
Chat with Milvus #3 回顾 - ANN-Benchmarks 测试结果
http://mpvideo.qpic.cn/0bf2leaaaaaa3qalyodiobpfawodabmqaaaa.f10002.mp4?dis_k=17550684a324164ea111bfe
Zilliz RDS
2020/05/06
8180
Elasticsearch很好,但向量数据库才是未来
专为向量数据库设计的系统,通过在一个高效的操作中统一 Sparse-BM25 算法和语义搜索,性能优于双系统设置。
云云众生s
2024/12/02
3910
Elasticsearch很好,但向量数据库才是未来
向量检索(RAG)之向量数据库研究
研究内容主要包括:是否开源,支持的功能有哪些(是否支持暴力检索,支持哪些索引),是否有可视化界面,是否支持标量过滤。
码之有理
2025/03/05
1.4K1
【向量检索研究系列】产品介绍
向量检索领域有着非常多优秀产品,不同的产品有着各自的特性,适用于不同的场景,接下来将对已了解的8款优秀向量检索产品进行简单的介绍。
码之有理
2022/07/06
3.9K1
【向量检索研究系列】产品介绍
Hello, Vector DB | AIGC 时代,你需要一个真正的向量数据库么?
答案很简单,这取决于开发者的应用场景。举个例子,晚饭选择去一家五星级餐厅用餐或是是快餐店,往往和你的胃口和期望有关。
Zilliz RDS
2023/10/28
1.1K0
Hello, Vector DB | AIGC 时代,你需要一个真正的向量数据库么?
“银河护卫队总部”放大招!Milvus 核心组件再升级,主打就是一个低延迟、高准确度
Knowhere 是什么?如果把向量数据库整体看作漫威银河护卫队宇宙,那么 Knowhere 就是名副其实的总部,它的主要功能是对向量精确搜索其最近邻或通过构建索引进行低延迟、近似的最近邻搜索(ANNS)。
Zilliz RDS
2023/09/09
4210
“银河护卫队总部”放大招!Milvus 核心组件再升级,主打就是一个低延迟、高准确度
2024年精选推荐的16个向量数据库:提升你的AI应用性能
在人工智能时代,向量数据库已成为数据管理和AI模型不可或缺的一部分。向量数据库是一种专门设计用来存储和查询向量嵌入数据的数据库。这些向量嵌入是AI模型用于识别模式、关联和潜在结构的关键数据表示。随着AI和机器学习应用的普及,这些模型生成的嵌入包含大量属性或特征,使得它们的表示难以管理。这就是为什么数据从业者需要一种专门为处理这种数据而开发的数据库,这就是向量数据库的用武之地。
用户3578099
2024/05/18
14.5K0
2024年精选推荐的16个向量数据库:提升你的AI应用性能
向量数据库,能让AI再次起飞吗?
来了,来了,腾讯面向产业互联网领域规格最高、规模最大、覆盖最广的年度科技盛会 -——- 腾讯全球数字生态大会。
不吃西红柿
2023/10/16
3090
向量数据库,能让AI再次起飞吗?
Hello, Vector DB|认识一下,这才是真正的向量数据库
随着大模型的爆火,向量数据库也越发成为开发者关注的焦点。为了方便大家更好地了解向量数据库,我们特地推出了《Hello, VectorDB》系列,本文将从宏观角度、向量数据库与其他算法库的区别、技术难点及如何选择向量数据库等方面,带大家认识真正的向量数据库。
Zilliz RDS
2023/10/16
1.5K0
Hello, Vector DB|认识一下,这才是真正的向量数据库
用 Milvus 和 NVIDIA Merlin 搭建高效推荐系统
简单来说,现代推荐系统由训练/推理流水线(pipeline)组成,涉及数据获取、数据预处理、模型训练和调整检索、过滤、排名和评分相关的超参数等多个阶段。走遍这些流程之后,推荐系统能够给出高度个性化的推荐结果,从而提升产品的用户体验。
Zilliz RDS
2023/11/01
5300
用 Milvus 和 NVIDIA Merlin 搭建高效推荐系统
数据库信息速递-- 如何评估矢量数据库 (翻译)
在今天数据驱动的世界中,非结构数据呈指数级别增长,在生成式人工智能和大模型语言LLMS的兴起更是加剧这一个情况的数据爆炸趋势,将我们的注意力印象了一项突破性的技术,矢量数据库,作为人工智能时代重要的基础设施,矢量数据库是存储,索引和搜索非机构化数据的强大工具。
AustinDatabases
2023/12/26
4000
数据库信息速递-- 如何评估矢量数据库  (翻译)
Pgvector与Pinecone向量数据库对比
将 Pinecone 与使用 pgvector 和 pgvectorscale 的自托管 PostgreSQL 在 5000 万个向量的基准测试中进行比较,包括查询延迟、查询吞吐量和成本。
云云众生s
2024/06/13
5690
Pgvector与Pinecone向量数据库对比
向量数据库的下一站,2023 的 8 个预测
2022 年绝对是向量数据库赛道爆发的一年。在这一年,Milvus 社区正式发布云原生向量数据库 Milvus 2.0,Gihub 上也出现了超过 10 家开源的向量数据库产品,如 Vald、Weaviate、Qdrant、Vaspa、Vearch、AquilaDB、Marqo 等等。数据库厂商 Elastic 和 Redis 也正式加入了战局,推出了向量检索功能的支持。在云上,Milvus 社区的发起团队 Zilliz 正式发布了全托管 DBaas 服务 Zilliz Cloud,竞品包括了 pinecone 和 Google Vertex AI 这样的 Saas 公司和云厂商。
Zilliz RDS
2023/01/10
2.8K0
向量数据库的下一站,2023 的 8 个预测
Zilliz联手英伟达发布全球首个GPU加速向量数据库!CUDA加持性能飙升50倍,未来十年或暴涨1000倍
在旧金山时间3月20日上午,Zilliz 与英伟达携手在 GTC 2024 大会上发布了 Milvus 2.4 版本。
新智元
2024/03/25
5740
Zilliz联手英伟达发布全球首个GPU加速向量数据库!CUDA加持性能飙升50倍,未来十年或暴涨1000倍
揭秘 LLMs 时代向量数据库的 3 大实用场景
过去一年,ChatGPT 和其他大语言模型(LLMs)的爆火也带动了向量数据库的发展。
Zilliz RDS
2024/02/22
3080
揭秘 LLMs 时代向量数据库的 3 大实用场景
.NET 原生驾驭 AI 新基建实战系列(五):Milvus ── 大规模 AI 应用的向量数据库首选
Milvus 是一个强大的工具,帮助开发者处理大规模向量数据,尤其是在人工智能和机器学习领域。它可以高效地存储和检索高维向量数据,适合需要快速相似性搜索的场景。在 .NET 环境中,开发者可以通过 Milvus C# SDK 轻松连接和操作 Milvus 服务器,包括创建集合、插入数据和执行搜索等操作。
AI.NET 极客圈
2025/04/28
2580
.NET 原生驾驭 AI 新基建实战系列(五):Milvus ── 大规模 AI 应用的向量数据库首选
大模型商用新解法:CVP架构崛起,向量数据库破圈
最近,ChatGPT 用户增长放缓的消息刷屏科技圈,环比增长率从一月份的 131% 降至五月份 2%。
AI科技评论
2023/09/07
8650
大模型商用新解法:CVP架构崛起,向量数据库破圈
推荐阅读
相关推荐
零一万物自研全导航图向量数据库,权威榜单评测 6 项第一
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档