首页 > 数据库 >认识 Milvus 向量数据库

认识 Milvus 向量数据库

时间:2025-01-17 09:56:51浏览次数:3  
标签:数据库 支持 索引 搜索 Milvus 数据 向量

在这里插入图片描述

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

核心特点

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

应用场景

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 则更适合资源受限的环境和快速原型设计,虽然扩展性有限,但在简单易用性和低资源消耗方面有优势。

标签:数据库,支持,索引,搜索,Milvus,数据,向量
From: https://blog.csdn.net/bestpasu/article/details/145199358

相关文章

  • 数据库脚本
    数据库脚本数据库脚本是用来执行数据库CRUD&聚合操作的脚本,语法同云开发SDK数据库语法,目前可应用数据库脚本在以下场景:控制台中可以使用数据库脚本进行高级数据库CRUD&聚合管理操作文档HTTPAPI中的数据库接口文档数据库脚本语法数据库脚本语法同SDK数据库......
  • GaussDB云原生数据库SQL引擎继承原来openGauss的词法解析,语法解析,查询重写,查询优化和
    云原生数据库SQL引擎继承原来openGauss的词法解析,语法解析,查询重写,查询优化和执行引擎的能力。由于云原生数据库是shareddisk架构,一个事务在一个节点上执行,所以不需要原来分布式根据分布式key进行数据分布,分布式执行和分布式2PC提交的能力。为了支持数据库粒度的异地多活,云原生......
  • 疫苗发布和接种预约系统(代码+数据库+LW)
    摘 要如今的时代,是有史以来最好的时代,随着计算机的发展到现在的移动终端的发展,国内目前信息技术已经在世界上遥遥领先,让人们感觉到处于信息大爆炸的社会。信息时代的信息处理肯定不能用之前的手工处理这样的解决方法,必须采用计算机来处理这些信息,因为传统方法对应计算机处理......
  • 疾病防控综合系统设计与实现(代码+数据库+LW)
    摘  要在如今社会上,关于信息上面的处理,没有任何一个企业或者个人会忽视,如何让信息急速传递,并且归档储存查询,采用之前的纸张记录模式已经不符合当前使用要求了。所以,对疾病防控信息管理的提升,也为了对疾病防控信息进行更好的维护,疾病防控综合系统的出现就变得水到渠成不可缺......
  • 第十三章:数据库技术
    文章目录:一:基础1.概念2.特点3.产品3.1常见数据库品牌3.2数据库应⽤系统3.2.1C/S3.2.2 B/S4.模型5.名词解析二:Access1.基础2.操作2.1操作表2.2维护表2.3创建查询2.4创建窗体2.5创建报表3.处理3.1运算符3.2表达式3.3函数三:SQL1.概念2.DDL和......
  • JSP旅游景点推荐系统06mia(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着人们生活水平的提高和旅游观念的转变,越来越多的人倾向于选择个性化、多样化的旅游方式。然而,面对海量的旅游景点信息,游客往往难以......
  • JSP驴友网站管理系统w51si程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、研究背景随着旅游业的繁荣和驴友文化的兴起,越来越多的驴友倾向于通过网络平台获取旅游信息、分享旅行经验。为了满足驴友群体的需求,构建一个功......
  • JSP旅游门户网站ud718(程序+源码+数据库+调试部署+开发环境)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着互联网的飞速发展,旅游行业也迎来了数字化转型的浪潮。为了方便游客获取旅游信息、进行在线预订和享受个性化服务,开发一个功能全面......
  • JSP旅游活动路线选择的设计与实现257f5程序+源码+数据库+调试部署+开发环境
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、项目背景随着人们生活水平的提高和休闲方式的多样化,旅游已成为现代人生活中不可或缺的一部分。然而,面对琳琅满目的旅游路线,如何根据游客的需求......
  • 约束.数据库设计.多表查询.事务
    1.约束非空约束:关键字是NOTNULL保证列中所有的数据不能有null值。唯一约束:关键字是UNIQUE保证列中所有数据各不相同。主键约束:关键字是PRIMARYKEY非空且唯一。默认约束:关键字是DEFAULT未指定值则采用默认值。外键约束:关键字是FOREIGNKEY练习根据需求,为表......