认识 Milvus 向量数据库

Milvus 是一款由 Zilliz 开发的开源向量数据库,专注于高效存储、管理和检索大规模高维向量数据。它被设计用于处理非结构化数据,如图像、文本、音频和视频等,通过将这些数据转换为向量形式,实现高效的相似性搜索和向量检索。

核心特点

  1. 高性能 :Milvus 提供毫秒级的查询响应时间,支持每秒数百次的查询操作,适用于需要快速检索相似数据的应用场景。
  2. 分布式架构 :Milvus 是基于分布式架构设计的,能够水平扩展以应对大规模数据集的需求,同时保证数据的一致性和可用性。
  3. 多种索引支持 :Milvus 支持多种索引类型,如 HNSW、IVF、PQ 等,可以根据具体需求选择最优的索引策略来提高检索效率。
  4. 多模态搜索 :Milvus 支持多模态搜索,可以同时处理多种类型的数据(如图像、文本、音频等),并进行高效的相似性比较。
  5. 易用性 :Milvus 提供了丰富的 API 和工具,支持一键部署和简单易用的操作界面,使得用户可以快速上手并构建大规模向量数据库。

应用场景

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

  • 推荐系统:通过向量相似性搜索,为用户提供个性化推荐。
  • 计算机视觉:用于图像检索、目标检测等任务。
  • 自然语言处理:支持语义搜索、文本相似性分析等应用。
  • 智能客服:通过向量匹配技术,提升问答系统的响应速度和准确性。

技术优势

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

  • 云原生分布式特性:支持大规模向量数据的存储和检索,具备高可用性和扩展性。
  • GPU 加速:利用 GPU 加速技术,显著提升向量计算和检索的速度。
  • 灵活的生态系统:Milvus 拥有活跃的社区和丰富的生态系统,支持与其他大数据和机器学习工具的集成。

发展历程

Milvus 最初由 Zilliz 在 2019 年发布,并迅速成为全球领先的向量数据库之一。目前,Milvus 已经与多家知名企业合作,包括 NVIDIA、IBM 和微软等。此外,Milvus 的 GitHub 星标数量已超过 18,000,显示了其在开发者中的受欢迎程度。

Milvus 是一款功能强大且灵活的向量数据库,适用于各种需要高效相似性搜索和向量管理的应用场景。其高性能、易用性和强大的扩展能力使其成为 AI 和大数据领域的重要工具。

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

  1. 基于 NVIDIA GPU 的 CAGRA 索引:这一新特性显著提升了向量搜索的速度和性能,特别是在处理大规模数据时表现尤为突出。

  2. 多向量搜索和 Grouping 搜索功能:这些功能增强了 Milvus 在复杂查询场景下的灵活性和实用性,使得用户能够更高效地进行多向量数据的检索和分析。

  3. 稀疏向量支持:新增了对稀疏向量的支持,进一步扩展了 Milvus 在不同应用场景中的适用性。

  4. 倒排索引和模糊匹配:这些改进提高了搜索的准确性和灵活性,特别是在处理模糊查询时表现更加出色。

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

  6. 元数据过滤中的正则表达式匹配和 Change Data Capture Tool:这些改进增强了数据处理的灵活性和效率。

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

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

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

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

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

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

  13. QueryCoord 新增目标通道检查点延迟指标:提供了更详细的性能监控指标。

  14. 改进的类型错误处理:增加了对崩溃、抛出错误的支持,提升了系统的健壮性。

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

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

  17. 重构分通道通道管理接口和主视图管理接口:提升了系统的可维护性和扩展性。

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

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

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

Milvus 在实际应用中的性能表现非常出色,并且在多个领域中取得了显著的成功案例。

从性能角度来看,Milvus 是全球最快的向量数据库之一。在最新的 2.2 benchmark 测试中,Milvus 较之前的版本提升了超过 50% 的性能。特别是在处理 1M 向量串行执行的场景下,其延迟低于 3ms,整体 QPS(每秒查询率)甚至超过了 ElasticSearch 的 10 倍。此外,Milvus 支持多种相似性搜索方法,包括二进制和浮点数距离计算,以及 IVF_FLAT 和 hamming 等距离计算方法,这使得它在大规模数据集上表现出色。

在成功案例方面,Milvus 已被多家知名企业成功集成到其应用程序中。例如,Nvidia、Roblox 和 AT&T 等公司都认可了 Milvus 的能力,并将其用于推动业务增长。具体的应用场景包括:

  1. 图像搜索和推荐系统:Milvus 被广泛应用于图像搜索、自然语言处理和推荐系统等领域。通过优化性能和提供实时响应,Milvus 能够高效处理大规模非结构化数据。

  2. 广告和营销:Shopee 使用 Milvus 来增强实时搜索能力,特别是在视频召回、版权匹配和视频去重系统中,显著提升了用户体验和内容完整性。Tokopedia 则利用 Milvus 的向量相似性搜索功能来提升产品搜索和排名,从而提高广告服务的智能化和准确性。

  3. 医疗保健和电子商务:Milvus 在医疗保健和电子商务领域也有广泛应用。例如,Zilliz Cloud 提供基于 Milvus 的全托管向量数据库,具有更高性能、更易扩展和卓越性价比的特点。

  4. 金融和法律:Milvus 还被用于金融文档检测、制造缺陷检测、专利搜索、房地产租赁、招聘广告、视频推荐、用户画像生成、餐厅推荐、平台定制化搜索等多个行业。

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

根据提供的多条证据,Milvus 支持多种索引类型,每种索引类型都有其特定的优缺点。以下是详细的介绍:

1. FLAT 索引

优点:

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

缺点:

  • 不支持二进制向量的精确搜索和倒排索引。
  • 不适用于大规模数据集或需要高精度搜索的场景。

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 更适合资源受限的场景;

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

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

在 Kubernetes 平台上部署 Milvus

  1. 环境准备

    • 确保已安装运行的 Kubernetes 集群。
    • 安装并配置 kubectl 工具。
  2. 安装 Milvus Operator

    • 在本地测试环境中安装 Minikube。
    • 使用 kubectl 安装 Milvus Operator。
  3. 配置和部署

    • 创建 StorageClass 配置。
    • 使用 Milvus Operator 部署 Milvus 集群。
    • 配置自定义文件或使用 Milvus Sizing Tool 工具优化资源分配和存储选项。
    • 获取服务端口并设置端口转发,以便本地访问 Milvus 集群。

在 Linux 系统上部署 Milvus

  1. 在线安装

    • 使用 yum 命令安装 Milvus 及其依赖包,如 libquadmath, tbbtbb-devel
    • 启动 Milvus 服务。
  2. 离线安装

    • 使用在线安装缓存的依赖文件,通过 rpm 命令安装。
    • 启动 Milvus 服务。
  3. 使用 Docker 安装

    • 安装 Docker 和 Docker Compose。
    • 拉取 Milvus 镜像并启动容器。
    • 验证安装是否成功。

在 Windows 系统上部署 Milvus

  1. 环境准备

    • 安装 Docker Desktop 和启用 Windows Subsystem for Linux (WSL)。
    • 下载并安装 Ubuntu 18.04 LTS 作为 Linux 发行版。
    • 配置 Docker 阿里云加速器以提高下载速度。
  2. 安装 Milvus

    • 使用 Docker Compose 安装 Milvus Standalone。
    • 验证安装是否成功。

部署集群

  1. 环境准备

    • 安装必要的依赖,如 Docker 和 Kubernetes(如果使用容器编排)。
  2. 从源代码或预打包二进制包安装

    • 从 GitHub 克隆 Milvus 代码库。
    • 使用 Docker 或 Kubernetes 部署。
  3. 配置集群

    • 根据需求选择单机模式、主从模式或分布式模式(Paxos 或 Raft)。
    • 设置节点数量、复制因子等参数。
    • 确定数据和索引的存储路径。
  4. 部署服务

    • 如果使用容器化,创建包含 Milvus 服务的 Docker 容器。
    • 如果使用 Kubernetes,编写 YAML 文件描述 Pods, ServiceDeployment 并应用到集群中。
  5. 初始化和部署服务

    • 在每个节点上创建 Milvus 实例。
    • 初始化集群,统一接口数据,确保数据一致性。
  6. 监控和扩展

    • 使用 Prometheus 和 Grafana 监控集群性能。
    • 根据集群负载动态调整集群规模,如增加或减少节点。
Milvus 与其他向量数据库(如 Annoy、Faiss)的性能和功能对比情况如何?

Milvus、Faiss 和 Annoy 是三种不同的向量数据库,各自具有独特的性能和功能特点。以下是它们的对比情况:

性能对比

  1. Faiss

    • GPU 加速:Faiss 支持 GPU 加速,适用于高性能向量搜索场景。
    • 多线程支持:Faiss 支持多线程,可以利用 CPU 的并行计算能力。
    • 高效性:在大规模数据集上表现优异,特别是在高维数据的相似性搜索中。
  2. Milvus

    • 分布式架构:Milvus 支持分布式架构,适合生产环境中的大规模数据处理。
    • 多模态支持:Milvus 支持多模态数据,能够处理图像、文本等多种类型的数据。
    • 扩展性和定制性:Milvus 提供了丰富的查询功能和扩展性强的接口,支持多种编程语言。
    • 实时性:Milvus 提供了实时查询和流批一体的混合搜索功能。
  3. Annoy

    • 简单易用:Annoy 使用随机投影树构建高效的索引结构,适合快速搭建向量搜索系统。
    • 资源消耗低:Annoy 的内存和计算资源占用较低,适合资源受限的环境。
    • 扩展性有限:Annoy 的写操作不高效,扩展性有限。

功能对比

  1. Faiss

    • 多种索引类型:Faiss 支持多种索引类型,如 IVFFlat、HNSW 等,可以根据具体需求选择合适的索引策略。
    • 社区支持:Faiss 拥有丰富的社区支持和灵活的社区功能。
  2. Milvus

    • 丰富的查询功能:Milvus 提供了丰富的查询功能,包括水平扩展和自动化的数据分区管理。
    • 图形用户界面(GUI)和可视化工具:Milvus 提供了图形用户界面和可视化工具,方便管理和查询向量数据库。
  3. Annoy

    • 简单易用:Annoy 的安装和使用非常简单,适合快速开发和原型设计。
    • 持久化存储:Annoy 支持磁盘持久化,适合需要频繁更新数据的应用。

使用场景对比

  1. Faiss

    • 高性能需求:适用于需要高性能和高精度的相似性搜索场景,如推荐系统、图像检索等。
  2. Milvus

    • 生产环境:适用于生产环境中的大规模数据处理,特别是需要多模态数据支持的场景。
    • 实时性需求:适用于需要实时查询和流批一体混合搜索的场景。
  3. Annoy

    • 资源受限环境:适用于资源受限的环境,如嵌入式设备或小型服务器。
    • 快速原型设计:适用于快速搭建向量搜索系统的原型设计。

总结

  • Faiss 更适合需要高性能和高精度的相似性搜索场景,特别是在大规模数据集上表现优异。
  • Milvus 提供了强大的分布式架构和多模态支持,适合生产环境中的大规模数据处理和实时查询需求。
  • Annoy 则更适合资源受限的环境和快速原型设计,虽然扩展性有限,但在简单易用性和低资源消耗方面有优势。
相关推荐
段一凡-华北理工大学7 分钟前
向量数据库实战:选型、调优与落地~系列文章12:文本分块策略实战:chunk_size 怎么选?重叠多少?
开发语言·数据库·后端·oracle·rust·工业智能体·高炉智能化
oradh2 小时前
Oracle XTTS实现跨版本迁移和升级(Oracle 11g单库升级至19C RAC集群)
数据库·oracle·11g升级19c·xtts跨版本迁移和升级
z123456789863 小时前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD3 小时前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
TlSfoward4 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记4 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
LabVIEW开发5 小时前
NI Package Manager安装LabVIEW时InternalServerError错误
网络·数据库·labview·labview知识·labview功能·labview程序
SelectDB5 小时前
PostgreSQL 实时同步到 Apache Doris:一站式 CDC 解决方案
数据库
欲速不达88205 小时前
Mysql并发DML锁等待的优化
数据库·mysql
Database_Cool_5 小时前
AI Agent 长期记忆怎么存?阿里云 PolarDB-X 对接 Mem0 记忆框架实践
数据库·阿里云