
IDC 的研究报告表明,全球数据总量中有超过 80% 的数据是非结构化数据。在 AIGC 飞速发展的今天,快速准确地检索大量非结构化数据对于支持前沿 AI 应用至关重要。无论是生成式 AI、相似性搜索,还是推荐引擎、虚拟药物发现,向量数据库都已成为这些应用的底层核心技术。然而,对于实时索引和高吞吐量的需求不断挑战着基于 CPU 的传统解决方案。
作者 | 星爵
出品 | CSDN(ID:CSDNnews)
实时索引
向量数据库通常需要持续且高速地摄取和索引新的向量数据。实时索引的能力对于保持数据库与最新数据的同步至关重要,避免产生瓶颈或积压。
许多使用向量数据库的应用程序,例如推荐系统、语义搜索引擎和异常检测等,都需要实时或近实时的查询处理。高吞吐量确保向量数据库能够同时处理大量涌入的查询,为最终用户提供高性能的服务。

在去年的 NVIDIA GTC 大会上,Jensen 在主题演讲中谈到了向量数据库并介绍了 Milvus 的项目。在此后的一年里,我们 Zilliz 的工程师和 NVIDIA 的工程师一起合作, 探索用 GPU 来加速向量运算处理,提升向量数据库的实时处理性能。向量数据库的核心运算包括相似度计算和矩阵运算,这些运算具有并行性高和计算密集等特点。GPU 凭借其成千上万的运算核心和强大的并行处理能力,成为了加速这些运算的理想选择。
在上周召开的 NVIDIA GTC 大会上,我们发布了和英伟达合作的最新成果 —— Milvus 2.4 版本。我们在业界首次采用了英伟达 GPU 的高效并行处理能力和 RAPIDS cuVS 库中新推出的 CAGRA( CUDA-Accelerated Graph Index for Vector Retrieval )技术,提供基于 GPU 的向量索引和搜索加速能力。基准测试显示,与目前市面上最先进的基于 CPU 处理器的 HNSW 索引技术相比,新版 GPU 加速 Milvus 能提供高达 50 倍的向量搜索性能提升。
对于希望采用我们 Milvus 全托管数据库云服务 Zilliz Cloud 的用户来说,我们计划在今年晚些时候推出 GPU 加速的升级产品。截至当前,Zilliz Cloud 已经实现包括阿里云、腾讯云、AWS、谷歌云和微软云在内的全球 5 大云 13 个节点的全覆盖,除了分布在杭州、北京、深圳的 5 个国内服务节点,其他 8 个节点分布在海外,包括美国的弗吉尼亚州、俄勒冈州、德国的法兰克福、新加坡等城市和地区。


英伟达开发的 CAGRA 是一个利用 GPU 的高性能能力为向量数据库工作负载提供高吞吐量的 GPU 加速框架。接下来就来看看我们是如何将 CAGRA 与 Milvus 系统进行整合的。
我们知道,Milvus 是为云原生环境设计,采用模块化设计理念,将系统分为多个组件,分别处理客户端请求、数据处理以及向量数据的存储和检索。得益于这种模块化设计,Milvus 可以轻松地更新或升级特定模块,而无需改变模块间的接口,使得在 Milvus 中集成 GPU 加速变得简单可行。

Milvus 2.4 架构图
Milvus 2.4 的架构包括协调器、访问层、消息队列、工作节点和存储层等组件。工作节点进一步细分为数据节点、查询节点和索引节点。其中,索引节点负责构建索引,查询节点负责执行查询。
为了充分利用GPU的加速能力,CAGRA 被集成到了 Milvus 的索引节点和查询节点中。这种集成使得计算密集型任务,如索引构建和查询处理,能够被转移到 GPU 上执行,从而利用其并行处理能力。
在 Milvus 的索引节点中,CAGRA 被集成到了索引构建算法中,利用 GPU 硬件来高效地构建和管理高维向量索引,显著减少了索引大规模向量数据集所需的时间和资源。
同样,在 Milvus 的查询节点中,CAGRA 被用于加速执行复杂的向量相似度查询。借助GPU的处理能力,Milvus 能够以前所未有的速度执行高维距离计算和相似性搜索,从而加快查询响应时间并提升整体吞吐量。

在本次评测中,我们选用了 VectorDBBench 的两个公开向量数据集,评估 Milvus 在不同数据量和向量维度下的性能和可扩展性:
OpenAI-500K-1536-dim:包含50万个1,536维的向量,由 OpenAI 语言模型生成
Cohere-1M-768-dim:包含100万个768维的向量,由Cohere语言模型生成
在性能评估过程中,我们使用了 AWS 上的三种公开实例类型:
m6id.2xlarge:搭载Intel Xeon 8375C 处理器的 CPU 实例
g4dn.2xlarge:配备NVIDIA T4 处理的GPU加速实例
g5.2xlarge:配备NVIDIA A10G 处理器的GPU加速实例

基于 AWS 的评测环境
我们通过这些不同的实例类型来评估 Milvus 2.4 在不同硬件配置下的性能和效率,其中m6id.2xlarge 作为基于 CPU 处理器的性能基准,而 g4dn.2xlarge 和 g5.2xlarge 则用来评估GPU 加速的优势。

在索引构建时间的评测中,我们发现对于 Cohere-1M-768-dim 数据集,使用 CPU( HNSW )的索引构建时间为 454 秒,而使用 T4 GPU( CAGRA )仅为66秒,A10G GPU( CAGRA )更是缩短到了 42 秒。对于 OpenAI-500K-1536-dim 数据集,CPU( HNSW )的索引构建时间为359秒,T4 GPU( CAGRA )为45秒,A10G GPU(CAGRA)则为22 秒。

索引构建时间评测结果
这些结果清楚地表明,GPU 加速框架 CAGRA 在索引构建方面明显优于基于 CPU 的 HNSW,其中 A10G GPU 在两个数据集上都是最快的。与 CPU 实现相比,CAGRA 提供的 GPU 加速将索引构建时间缩短了一个数量级,展示了利用 GPU 并行性进行计算密集型向量运算的优势。

在吞吐量方面,我们比较了集成 CAGRA GPU 加速的 Milvus 与使用 CPU 上 HNSW 索引的标准 Milvus 实现。评估指标是每秒查询数( QPS ),用于衡量查询执行的吞吐量。在向量数据库的不同应用场景中,查询的批量大小( 单条查询处理的查询数量 )往往不同。在测试过程中,我们采用了1、10 和 100 这三种不同的批量大小,获取真实而全面的评测结果数据。

吞吐量评测结果
从评估结果来看,对于批量大小为 1 的情况,T4 GPU 比 CPU 快 6.4 到 6.7 倍,A10G GPU 则快 8.3 到 9 倍。当批量大小增加到 10 时,性能提升更加显著:T4 GPU 快 16.8 到18.7倍,A10G GPU 快25.8 到 29.9 倍。当批量大小为 100 时,性能提升持续增长:T4 GPU 快 21.9 到 23.3 倍,A10G GPU 快 48.9 到 49.2 倍。
这些结果表明,利用 GPU 加速向量数据库查询可以获得巨大的性能提升,尤其是对于更大的批量大小和更高维度的数据。集成 CAGRA 的 Milvus 释放了 GPU 的并行处理能力,实现了显著的吞吐量改进,非常适合要求极致性能的关键场景下的向量数据库工作负载。

在 2019 年 3 月 18 日, Zilliz 的工程师们在上海漕河泾的厂房里敲下了向量数据库历史上的全球第一行代码。2020 年,Milvus 项目加入 Linux 基金会并成功毕业。自推出以来,Milvus 在 GitHub 上拥有超过 26,000 个星标和 260 多位贡献者,全球下载和安装量超过 2000 万次,已经成为全球使用最广泛的向量数据库之一。Milvus 已经被 5,000 多家企业所采用,服务于AIGC、电子商务、媒体、金融、电信和医疗等多个行业。
在 5 年后的今天,我们和英伟达合作推出 Milvus 2.4,再次展现了开放创新和社区驱动发展的力量,为向量数据库带来了 GPU 加速的新纪元。这一里程碑事件预示着又一个技术变革的来临,向量数据库有望经历类似于英伟达在过去 8 年中将 GPU 算力提高 1000 倍的指数级性能飞跃。
在未来 10 年里,我们愿和广大 AI 开发者一起共同见证向量数据库性能的 1000 倍飞跃。这将引发一场数据处理方式的范式转变,将重新定义我们处理和利用非结构化数据的深度和广度,为我们早日通向 AGI 铺平道路。
星爵是 Zilliz 的创始人兼首席执行官。Zilliz 是一家致力于开发用于 AI 应用的非结构化数据平台的公司。他是全球最流行的开源向量数据库 Milvus 的创造者。Milvus 被全球超过 5000 家企业使用,累计下载安装量超过 20M。星爵还积极参与 LF AI & Data 开源基金会,从 2020 年至今一直担任董事,并在 2020 年和 2021 年担任董事会主席。在创立 Zilliz 之前,他是 Oracle 12c 云数据库项目的创始工程师。星爵在华中科技大学获得学士学位,在威斯康星大学麦迪逊分校获得硕士学位。
相关链接:
Zilliz 官网:https://zilliz.com/
Milvus :https://github.com/milvus-io/milvus
Raft:https://github.com/rapidsai/raft
VectorDBBench:https://github.com/zilliztech/VectorDBBench