目录

Paper Reading: Milvus A Purpose-Built Vector Data Management System

Milvus:A Purpose-Built Vector Data Management System

ABSTRACT

最近,数据科学和人工智能应用中迫切需要管理高维向量数据。 非结构化数据和机器学习 (ML) 的激增推动了这一趋势,其中 ML 模型通常将非结构化数据转换为特征向量以进行数据分析,例如产品推荐。 现有的向量数据管理系统和算法有两个局限性:(1)在处理大规模动态向量数据时会出现严重的性能问题; (2)它们提供的功能有限,不能满足多功能应用的要求。 本文介绍了 Milvus,这是一个专门构建的数据管理系统,用于有效管理大规模向量数据。 Milvus 支持易于使用的应用程序接口(包括 SDK 和 RESTful API); 针对具有现代 CPU 和 GPU 的异构计算平台进行优化; 实现超越简单向量相似性搜索的高级查询处理; 处理动态数据以实现快速更新,同时确保高效的查询处理; 并将数据分布到多个节点以实现可扩展性和可用性。 我们首先描述 Milvus 的设计和实现。 然后我们演示 Milvus 支持的实际用例。 特别是,我们在 Milvus 之上构建了一系列 10 个应用程序(例如图像/视频搜索、化学结构分析、COVID-19 数据集搜索、个性化推荐、生物多因素认证、智能问答)。 最后,我们使用广泛的系统对 Milvus 进行实验评估,包括两个开源系统(Veach 和 Microsoft SPTAG)和三个商业系统。 实验表明,Milvus 比竞争对手快两个数量级,同时提供更多功能。 现在 Milvus 已被全球数百家组织部署,也被认定为 LF AI & Data Foundation 的孵化阶段项目。 Milvus 开源于 https://github.com/milvus-io/milvus

INTRODUCTION

在 Zilliz,我们遇到了各种客户在许多数据科学和人工智能应用中管理大规模高维向量数据(维度从 10 到 1000 维)不断增长的需求。 这主要是由于两个趋势。 第一个是由于智能手机、物联网设备和社交媒体应用程序的普及,图像、视频、文本、医疗数据和住房数据等非结构化数据的爆炸式增长。 据 IDC 称,到 2025 年,80% 的数据将是非结构化的。 第二个趋势是机器学习的快速发展,可以有效地将非结构化数据转换为学习的特征向量以进行数据分析。 特别是,推荐系统中最近流行的方法称为向量嵌入,它将项目转换为特征向量(例如 item2vec 、word2vec 、doc2vec 、graph2vec )并通过 提供推荐 寻找相似的向量。 例如,YouTube 将视频嵌入到向量中; Airbnb 用向量建模房屋 ; 生物科学家使用载体描述药物化合物的分子结构信息。 除此之外,图像和文本也自然地由向量表示。

不断增长的例子是怎么样的?什么情况下一个向量会不断增加维度

这些应用程序对设计可扩展的向量数据管理系统提出了独特的要求和挑战。 其中包括:(1)不仅需要支持大规模向量数据的快速查询处理,还需要支持动态向量数据的高效处理(例如插入和删除)。 例如,Youtube 每分钟上传 500 小时的用户生成视频,同时提供实时推荐 。(2)除了简单的向量相似性搜索之外,还需要提供高级查询处理,例如属性过滤和多向量查询处理。 这里的属性过滤是只搜索满足给定过滤条件的向量,这在电子商务应用中很有用,例如,找到与给定图像向量相似且成本低于 100 美元的 T 恤。 多向量查询处理目标适用于每个对象由多个向量描述的场景,例如,在许多计算机视觉应用中使用面部向量和姿势向量来分析人物。

https://s2.loli.net/2024/02/25/aRkxB7JnEpLXZAe.png

现有的矢量数据管理工作主要集中于矢量相似度搜索,但由于性能较差(针对大规模和动态矢量数据)和功能有限(例如不支持属性过滤和多矢量查询),无法满足上述要求,以支持多功能数据科学和人工智能应用。

更具体地说,我们将现有的工作分为两类:算法和系统。 对于向量相似性搜索的算法工作及其开源实现库(以 Facebook Faiss 和 Microsoft SPTAG 为例),存在一些局限性。 (1) 它们是算法和库,而不是管理矢量数据的成熟系统。 他们不能很好地处理大量数据,因为他们假设所有数据和索引都存储在主内存中并且不能跨越多台机器。 (2)这些工作通常假设数据一旦被引入系统就是静态的,并且不能轻松地处理动态数据,同时确保快速的实时搜索。 (3) 它们不支持高级查询处理。 (4)这些工作没有针对 CPU 和 GPU 的异构计算架构进行优化

Milvus 主要的工作: full-fledged system that manages vector data, handle dynamic data while ensuring fast real-time searches, support advanced query processing, optimized for the heterogeneous computing architecture with CPUs and GPUs

对于矢量相似性搜索的系统,例如阿里巴巴 AnalyticDB-V 和阿里巴巴 PASE(PostgreSQL),它们遵循一刀切的方法通过添加一个名为“矢量列”的表列来扩展关系数据库以支持矢量数据 ”来存储向量。 然而,这些系统并不是专门用于管理矢量数据的,也不将矢量视为 first-class citizens。 (1) 优化器和存储引擎等传统数据库组件无法对向量进行微调优化,例如,查询优化器错过了充分利用 CPU 和 GPU 处理向量数据的重要机会。 (2)不支持多向量查询等高级查询处理

best leverage CPU and GPU for processing vector data, support advanced query processing such as multi-vector queries

另一个相关系统是 Vearch,它是为向量搜索而设计的。 但 Vearch 在大规模数据上效率不高。 实验(图 8 和图 15)表明,本文介绍的系统 Milvus 比 Vearch 快 6.4x ~ 47.0x。 此外,Veach 不支持多向量查询处理

large scale data, multi-vector query processing

本文介绍了 Milvus,这是一种专门构建的数据管理系统,用于为数据科学和人工智能应用高效存储和搜索大规模矢量数据。 它是一个专门用于高维向量的系统,遵循 one-size-not-fits-all 的设计实践,与泛化关系数据库以支持向量不同。 Milvus 提供了许多应用程序接口(包括 Python/Java/Go/C++ 的 SDK 和 RESTful API),可以方便应用程序使用。 Milvus 针对具有现代 CPU 和 GPU(多个 GPU 设备)的异构计算架构进行了高度调优,以实现最佳效率。 它支持多种查询类型,例如具有各种相似性函数的向量相似性搜索、属性过滤和多向量查询处理。 它提供了不同类型的索引(例如,基于量化的索引和基于图的索引),并开发了一个可扩展的接口,可以轻松地将新索引合并到系统中。 Milvus 通过基于 LSM 的结构管理动态矢量数据(例如插入和删除),同时通过快照隔离提供一致的实时搜索。 Milvus 也是一个跨多个节点部署的分布式数据管理系统,以实现可扩展性和可用性。 表 1 突出显示了 Milvus 与其他系统之间的主要区别。

在实现方面,Milvus 构建于 Facebook Faiss 之上,后者是一个用于向量相似性搜索的开源 C++ 库。 但 Milvus 显着增强了 Faiss,提高了性能(例如第 3 节中针对异构计算平台的优化、第 2.3 节中高效支持动态数据管理以及第 5.3 节中的分布式查询处理)、增强的功能(例如属性过滤和多重查询)。 第 4 节中的矢量查询处理),以及更好的可用性(例如第 2.1 节中的应用程序接口),成为成熟的易于使用的矢量数据管理系统

产品影响: Milvus 已被全球数百个组织和机构采用,涉及图像处理、计算机视觉、自然语言处理、语音识别、推荐系统和药物发现等各个领域。 更重要的是,Milvus 于 2020 年 1 月被 LF AI & Data Foundation 接纳为孵化阶段项目。1 贡献。 本文做出以下贡献:

• 系统设计和实现(第 2 节和第 5 节):总体贡献是 Milvus 的设计和实现,这是一个专门构建的矢量数据管理系统,用于管理大规模动态矢量数据,以支持数据科学和人工智能应用 。 Milvus 开源于 https://github.com/milvus-io/milvus

• 异构计算(第 3 部分):我们针对具有现代 CPU 和 GPU 的异构硬件平台优化 Milvus,以实现快速查询处理。 对于面向 CPU 的设计,我们建议缓存感知和 SIMD 感知(例如 SSE、AVX、AVX2、AVX512)优化。 对于面向 GPU 的设计,我们设计了一种新的混合索引,充分利用了 CPU 和 GPU 的优点,并且我们还开发了一种新的调度策略来支持多个 GPU 设备

• 高级查询处理(第 4 节):除了简单的向量相似性搜索之外,我们还支持 Milvus 中的属性过滤和多向量查询处理。 特别是,我们设计了一种新的基于分区的属性过滤算法和两种用于多向量查询处理的算法(向量融合和迭代合并)。

• 新颖的应用程序(第 6 节):我们描述由 Milvus 提供支持的新颖的应用程序。 特别是,我们在 Milvus 之上构建了一系列 10 个应用程序,以展示其广泛的适用性,包括图像搜索、视频搜索、化学结构分析、COVID-19 数据集搜索、个性化推荐、生物多因素认证、智能问答、图像-文本检索、跨模式行人搜索和食谱食物搜索

SYSTEM DESIGN

下次再读