Advertisement

认识 Milvus 向量数据库

阅读量:
在这里插入图片描述

Milvus 是一款开源向量数据库, 由 Zilliz 开发. 它专注于高效地存储. 管理以及检索海量的高维向量数据. 它被设计用于处理非结构化数据, 包括图像. 文本. 音频以及视频等多种类型的数据. 通过将这些数据转换为向量形式, 实现高效的相似性搜索与快速的向量检索.

核心特点

高响应速度:Milvus 提供极致的性能表现,在毫秒级响应时间下能够支持数以百计的实时查询请求。该技术特别适用于对实时搜索和大规模相似数据检索要求较高的场景。

Archmeetup#9 深圳站 - Milvus 向量数据库 在用户需求推动下的演进
  1. 分布式架构 :Milvus遵循分布式架构设计原则,并具备横向扩展能力以应对大规模数据集的需求,在保证数据一致性和可用性的前提下实现高效的数据处理。
SIGMOD21 | Milvus: 向量数据库 - 知乎

第三点:多样化的索引方案 , Milvus 提供不同类型的索引方案以适应各种应用场景;其中包含 HNSW(Hierarchical Navigable Small World)、IVF(Inverted File)以及 PQ(Product Quantization)等多种主流算法;通过灵活配置这些算法组合 ,系统能够根据不同数据特征和查询需求动态地优化存储结构 ,从而显著提升数据检索效率 。

云原生向量数据库Milvus(二)-数据与索引的处理流程、索 …
  1. 多模态搜索 :Milvus 具备多模态检索能力,并能够处理图像、文本与音频等多种数据类型。该系统通过精确且高效的相似度计算实现对不同数据类型的匹配与检索。
使用Milvus向量数据库进行 …
  1. 可用性:Milvus 为用户提供多样化的 API 和工具包,并通过直观友好的操作界面和简便的部署方式帮助用户快速上手并轻松构建大规模的向量数据库。
云原生向量数据库Milvus(一)-简述、系统架构及应用场景 - 掘金

应用场景

Milvus 广泛应用于多个领域,包括但不限于:

  • 推荐引擎 采用余弦相似度计算算法,在线提供精准的个性化推荐服务。
  • 计算机视觉技术 常用于图像检索与目标识别。
  • 自然语言处理技术 支持语义检索与文本对比分析。
  • 智能客服系统 应用向量匹配算法,在提高回答速度的同时确保准确性。

技术优势

Milvus 的技术优势主要体现在以下几个方面:

  • 云计算原生架构:该系统具备高效管理并快速检索海量向量数据的能力,并通过其高可用性和扩展性特点实现业务连续性与性能优化。
  • GPU 加速技术应用:通过 GPU 加速技术显著提高计算能力和检索效率。
  • 开放且多样的生态系统:Milvus 提供活跃社区生态支持,并具备与多种大数据及机器学习框架良好兼容性。

发展历程

Milvus 起始于 Zilliz 于 2019 年推出后迅速崛起为全球领先的向量数据库技术方案。如今它已成功吸引了包括NVIDIA、IBM 和微软等众多知名企业的合作伙伴关系,并在全球范围内获得了广泛认可。值得注意的是该开源项目的GitHubStar数量已达18,567颗以上这充分展现了其在技术社区中所具有的广泛影响力和发展潜力。

Milvus 是一种先进且适应性强的向量数据库,在支持高效相似性搜索以及对高维数据进行有效管理方面表现出色,并广泛应用于多个领域。该数据库凭借其高性能计算能力和友好且易于使用的界面,在AI技术开发中发挥着关键作用,并通过提供高度可定制化的能力成为该领域的核心支撑平台。

Milvus 向量数据库的最新版本(2.4.0)引入了多项新特性和改进,具体如下:

利用NVIDIA GPU实现的CAGRA索引:这一创新特性带来了显著的性能提升,在特别适用于处理海量数据时展现出卓越效果

多向量搜索和Grouping 搜索功能:这些功能提升了 Milvus 在复杂查询场景下的灵活性与实用性,并为用户提供高效的多向量数据检索与分析能力。

稀疏向量支持 :增加了对稀疏向量的支持,并显著提升了 Milvus 在多场景中的适用性

反向索引和近似检索 :这些优化措施显著提升了搜索的准确性和灵活度,在应对模糊查询时表现卓越。

内存映射存储 :这一特性优化了内存管理,提升了系统的整体性能。

基于正则表达式的元数据过滤机制与 Change Data Capture Tool 的优化提升了处理能力和运行速度。

MinIO TLS 连接 :增强了数据传输的安全性。

标量字段自动索引(AutoIndex) :提高了数据处理的效率。

混合搜索重构 :通过与一致执行路径相同的搜索过程,提升了搜索性能。

bitset 和 bitset_view 加速过滤 :优化了数据过滤过程,提升了查询效率。

支持等待数据索引完成 :增强了导入任务的兼容性。

限制导入任务大小和文件数量 :提高了导入任务的效率和安全性。

QueryCoord 新增的目标通道的延迟检查指标 :具有更详细的性能监控功能。

改进的类型错误处理:增强了系统在崩溃或抛出错误情况下的容错能力,并提升了系统的健zon性

停止在二进制向量上进行分组搜索 :避免了不必要的性能开销。

停止使用混合搜索进行分组搜索 :进一步优化了搜索性能。

对分路的通道控制界面及主界面管理系统进行了优化设计:使其在维护与扩展方面的性能更加突出

批处理、映射、添加信息标记 :增强了系统的灵活性和可配置性。

停止使用频繁调用锁以加速操作 :减少了锁的竞争,提升了系统性能。

Milvus 在实际应用中的性能表现如何,有哪些成功案例?

Milvus 在实际应用中的性能表现展现出卓越的水平,并且其在各个应用场景中形成了系列具有里程碑意义的成功实践

从性能评估的角度来看,Milvus 被认为是全球最优秀的向量数据库之一。在本次 2.2 版本基准测试中,Milvus 相较于上一版本实现了显著性能提升,其在处理单线程 million 向量查询时的延迟始终保持在 3ms 以下,整体每秒查询率 QPS 则超过了 ElasticSearch 的十倍以上。此外,Milvus 还提供了多种相似度计算方式,包括二进制与浮点数距离计算,以及 IVF_FLAT 和 hamming 等几种不同的距离计算方法,这些特色使其能够在大规模数据集上展现出色的应用效果

在成功案例领域方面

图像搜索与推荐系统:该技术在图像检索、自然语言处理以及推荐系统等多个领域得到了广泛应用。通过性能优化与实时响应提升,在处理海量非结构化数据方面表现出色。

广告与营销:Shopee 通过优化 Milvus 技术来改善实时搜索体验,在视频检索、版权匹配以及去重系统方面带来了显著的提升效果。 Tokopidi 则借助 Milvus 的向量相似性搜索功能优化了产品搜索结果及排名机制,在提高广告服务智能化水平的同时也确保了其准确度。

医疗健康与电子商务 :Milvus 在此领域已展现出广泛的实践应用。例如,在线教育平台EdTechCloud则提供了一种基于 Milvus 的全托管向量数据库解决方案,该方案不仅提升了数据存储效率,还显著优化了系统的扩展性和性价比优势。

金融及法律领域:Milvus 也被广泛应用于包括但不限于以下领域:金融文档检测也被称为信息筛选;制造缺陷检测也被视为质量把关;专利搜索则涉及知识产权管理;房地产租赁方面提供精准匹配服务;招聘广告中用于人才匹配优化;视频推荐则通过数据分析提升用户体验;用户画像生成帮助了解市场细分特征;餐厅推荐基于行为数据分析提供精准服务;平台定制化搜索则满足个性化需求等多方面的应用场景。

Milvus 支持的索引类型及其各自的优缺点是什么?

基于一系列提供的证据,Milvus 赋予了多种索引类型的支持,每一种索引类型都具有其独特的优势与不足.以下是对这些类型的详细介绍:

1. FLAT 索引

优点:

  • 支持 CPU 和 GPU 建立索引。
  • 提供 100% 的检索召回率。
  • 搜索速度较快。

缺点:

  • 对于基于二进制向量的精确搜索及倒置指数(inverted index),本系统无法进行相应的操作。
    • 该系统不适合处理大规模数据集或在高精度搜索方面存在明显局限性。

2. IVF_FLAT 索引

优点:

  • 该方法特别适合于在追求查询准确性和查询速度之间取得平衡的低维数据集上应用。
    • 采用集群划分和相似度比较策略来实现高效的搜索过程。

缺点:

  • 需要更多的内存资源来存储索引。

3. IVF_SQ8 索引

优点:

  • 基于量化索引,适用于资源受限场景。
  • 减少磁盘、CPU 和显存资源消耗。

缺点:

  • 接受一定的召回率降低。

4. IVF_PQ 索引

优点:

  • 利用量化索引技术,在追求高效的查询速度的同时,主要应用于那些对准确性要求较低的场景。
    • 通过量化技术降低内存占用量及计算资源需求量。

缺点:

  • 查询准确率较低。

5. HNSW 索引

优点:

  • 基于图的索引,适用于高维数据集。
  • 构建多层导航结构以实现快速搜索。

缺点:

  • 索引构建耗时较长。

6. ANNS_PQ 索引

优点:

  • 利用量化索引的方法能够处理大规模的数据集。
    • 通过应用量化技术来降低内存占用和计算资源消耗。

缺点:

  • 查询准确率较低。

7. ANNS_HNSW 索引

优点:

  • 基于图的索引,适用于高维数据集。
  • 构建多层导航结构以实现快速搜索。

缺点:

  • 索引构建耗时较长。

8. ANNS_XNN 索引

优点:

  • 使用深度学习模型进行近似最近邻搜索。
  • 提供更高的查询速度。

缺点:

  • 需要大量的训练数据和计算资源。

总结

Milvus 支持多样化的索引架构设计,在实际应用中选择最适宜的索引架构应综合考量应用场景特性和硬件配置。每种索引架构均具备独特的适用场景及其权衡利弊,在小规模数据集下追求高召回率时可选用FLAT架构;而针对资源受限的情况,则建议采用IVF_FLAT或IVF_SQ8等变体,并根据具体需求权衡性能与存储占用之间的关系。例如,在小规模数据集下追求高召回率时可选用FLAT架构;而针对资源受限的情况,则建议采用IVF_FLAT或IVF_SQ8等变体,并根据具体需求权衡性能与存储占用之间的关系。

如何在不同操作系统上部署和配置 Milvus 向量数据库?

在不同操作系统上部署和配置 Milvus 向量数据库的方法如下:

在 Kubernetes 平台上部署 Milvus

环境准备

复制代码
 * 确保已安装的 Kubernetes 集群。
 * 安装并配置 `kubectl` 工具。

安装 Milvus Operator

复制代码
 * 在本地测试环境中安装 Minikube。
 * 使用 `kubectl` 安装 Milvus Operator。

配置和部署

  • 配置StorageClass存储类设置。
  • 通过Milvus Operator部署Milvus集群。
  • 根据需要选择是否配置自定义文件,并利用 Milvus Sizing Tool 工具进行资源分配和存储选项的优化。
  • 获取服务端口信息并配置本地端口转发机制。

在 Linux 系统上部署 Milvus

在线安装

  • 通过 yum 命令配置 Milvus 以及其相关软件库。

  • 启动 Milvus 服务。

离线安装

复制代码
 * 使用在线安装缓存的依赖文件,通过 `rpm` 命令安装。
 * 启动 Milvus 服务。

使用 Docker 安装

  • 配置 Docker 和 Docker Compose环境。
  • 获取 Milvus 镜像文件后,在容器管理器中执行拉取操作,并启动相应的镜像文件。
  • 完成安装后,请进行验证步骤。

在 Windows 系统上部署 Milvus

环境准备

设置 Docker Desktop 并启用 Windows Subsystem for Linux (WSL)。
获取并部署 Ubuntu 18.04 LTS 作为 Linux 发布版本。
优化 Docker 阿里云加速器以提升下载速度。

安装 Milvus

复制代码
 * 使用 Docker Compose 安装 Milvus Standalone。
 * 验证安装是否成功。

部署集群

环境准备

复制代码
 * 安装必要的依赖,如 Docker 和 Kubernetes(如果使用容器编排)。

从源代码或预打包二进制包安装

复制代码
 * 从 GitHub 克隆 Milvus 代码库。
 * 使用 Docker 或 Kubernetes 部署。

配置集群

  • 基于需求决定单机模式、主从模式或分布式架构(采用Paxos或Raft方案)。

    • 配置节点数量、复制因子等相关参数。
    • 明确数据及索引的存储位置。

部署服务

  • 如果采用容器构建的方式,则需集成Milvus服务至Docker镜像中。
  • 若采用Kubernetes平台,则需配置YAML文件定义Pods、Service和Deployment组件,并将其部署至Kubernetes集群中。

初始化和部署服务

  • 为每个节点生成一个Milvus实例。

    • 启动集群配置,并将所有接口的数据统一存储于同一个数据库中。

监控和扩展

  • 主要依赖于 Prometheus 和 Grafana 进行实时监控集群性能。
  • 根据当前的负载状况动态调节集群规模,增减节点数量以适应需求。
Milvus 与其他向量数据库(如 Annoy、Faiss)的性能和功能对比情况如何?

三个知名向量数据库系统——Milvus、Faiss 和 Annoy——各自具有独特的性能和功能特点,并将在下文进行详细比较分析

性能对比

Faiss

  • 基于 GPU 的加速方案 :该系统旨在满足高性能向量检索的需求。

    • 针对多核处理器优化 :通过并行计算能力实现资源的有效分配。
    • 经过大量测试与优化 :该算法在多个真实应用场景中表现出色。

Milvus

  • 分布式的架构设计: Milvus 具备分布式架构能力。

  • 多模态数据处理: Milvus 支持多模态数据处理。

  • 兼容性与定制化: Milvus 提供丰富查询功能与接口兼容多种主流编程语言。

  • 实时性能: Milvus 提供高实时性和混合搜索性能。

Annoy

  • 易于使用:Annoy 通过随机投影树构建高效的索引结构,并提供快速搭建向量搜索系统的功能。
  • 资源占用少:该算法在内存和计算资源方面表现优异,在资源受限的环境中仍能正常运行。
  • 可扩展性不足:Annoy 在处理大量数据时存在性能瓶颈,在分布式系统中难以充分发挥潜力。

功能对比

Faiss

  • 不同类型的索引方案:Faiss 覆盖了多种不同的索引方案类型, 包括 IV-FullFlat、HNSW 等, 用户可以根据实际应用场景选择最适合的索引方案。

  • 强大的社区网络:该库拥有庞大的社区支持网络, 提供了丰富且灵活的模块化接口, 适合各种复杂场景的应用开发。

Milvus

  • 全面的查询功能 :Milvus 以其强大的水平扩展能力著称,并通过智能的数据分区调度实现了高效的存储与管理。 * 直观的操作界面与丰富的人机交互 :Milvus 提供了图形用户界面(GUI)和交互式展示平台(HUI),支持向量数据库的构建与调用。

Annoy

  • 简便且易于使用:Annoy 的安装与使用极为简便, 特别适合用于快速开发及原型设计的过程。
  • 磁盘持久化特性:Annoy 饱具磁盘持久化特性, 十分适合于那些需要频繁更新数据的应用场景而言。

使用场景对比

Faiss

  • 高性能场景 :主要应用于追求高效计算与精确匹配的相似性检索任务中。

Milvus

  • 工业场景 :能够处理大规模的数据集,并特别适用于涉及多种数据类型的应用场景。

  • 实时性需求 :能够满足实时查询及结合批处理的数据检索需求。

Annoy

  • 资源有限的场景:该技术方案专为资源有限的场景设计,在嵌入式系统或小型服务器环境中表现突出。
  • 高效原型开发流程:该方法特别适合构建高效的向量搜索系统而设计的原型开发方案。

总结

  • Faiss 专为高性能计算和高准确性相似性搜索场景设计,在处理大规模数据时表现出色。
  • 基于其强大的分布式架构与多模态支持能力,** Milvus **能够在生产环境中实现高效的大规模数据处理与实时查询的需求满足。
  • 在简单易用性和低资源消耗方面,** Annoy **则优化于资源有限的环境与快速原型设计的需求。

全部评论 (0)

还没有任何评论哟~