🚀 免费试用 Zilliz Cloud,完全托管的 Milvus,体验 10 倍的性能提升!立即试用>

milvus-logo
LFAI
  • Home
  • Blog
  • Milvus 1.0 包含哪些内容?

Milvus 1.0 包含哪些内容?

  • Engineering
April 29, 2021
milvus

Milvus.jpeg Milvus.jpeg

Milvus 是一个开源向量数据库,旨在管理百万、十亿甚至万亿级的海量向量数据集。Milvus 应用广泛,涵盖新药发现、计算机视觉、自动驾驶、推荐引擎、聊天机器人等领域。

2021 年 3 月,Milvus 背后的公司 Zilliz 发布了该平台的首个长期支持版本--Milvus v1.0。经过几个月的广泛测试,世界上最流行的向量数据库的稳定生产就绪版本已准备就绪,进入黄金时间。这篇博客文章涉及 Milvus 的一些基本原理以及 v1.0 的主要功能。


Milvus 发行版

Milvus 有仅支持 CPU 的发行版和支持 GPU 的发行版。前者完全依赖 CPU 进行索引构建和搜索;后者可启用 CPU 和 GPU 混合搜索和索引构建,进一步加速 Milvus。例如,使用混合发行版,CPU 可用于搜索,GPU 可用于索引构建,从而进一步提高查询效率。

Milvus 的两个发行版都可以在 Docker 中使用。你既可以从 Docker 编译 Milvus(如果你的操作系统支持),也可以在 Linux 上从源代码编译 Milvus(不支持其他操作系统)。


嵌入向量

向量在 Milvus 中以实体形式存储。每个实体有一个向量 ID 字段和一个向量字段。Milvus v1.0 仅支持整数向量 ID。在 Milvus 中创建 Collections 时,可自动生成或手动定义向量 ID。Milvus 可确保自动生成的向量 ID 是唯一的,但手动定义的 ID 可在 Milvus 内重复。如果手动定义 ID,用户有责任确保所有 ID 都是唯一的。


分区

Milvus 支持在 Collections 中创建分区。在数据定期插入且历史数据并不重要的情况下(如流数据),分区可用于加速向量相似性搜索。一个 Collections 最多可以有 4,096 个分区。在特定分区内指定向量搜索可缩小搜索范围,并可能显著缩短查询时间,尤其是对于包含超过一万亿个向量的 Collections。


索引算法优化

Milvus 建立在多个广泛采用的索引库之上,包括 Faiss、NMSLIB 和 Annoy。Milvus 远不止是这些索引库的基本封装。以下是对底层库的一些主要改进:

  • 使用 Elkan k-means 算法优化 IVF 索引性能。
  • FLAT 搜索优化。
  • 支持 IVF_SQ8H 混合索引,可在不影响数据准确性的情况下将索引文件大小减少 75%。IVF_SQ8H 基于 IVF_SQ8,具有相同的召回率,但查询速度更快。它是专为 Milvus 设计的,以利用 GPU 的并行处理能力以及 CPU/GPU 协同处理之间的协同潜力。
  • 动态指令集兼容性。


搜索、索引构建和 Milvus 的其他优化功能

Milvus 进行了以下优化,以提高搜索和索引构建性能。

  • 当查询次数 (nq) 少于 CPU 线程数时,搜索性能将得到优化。
  • Milvus 会合并来自客户端的搜索请求,这些请求会使用相同的 topK 和搜索参数。
  • 当收到搜索请求时,将暂停建立索引。
  • Milvus 会在启动时自动将 Collections 预加载到内存中。
  • 可分配多个 GPU 设备来加速向量相似性搜索。


距离度量

Milvus 是一个向量数据库,旨在为向量相似性搜索提供动力。该平台是针对 MLOps 和生产级人工智能应用而构建的。Milvus 支持多种用于计算相似性的距离度量,如欧氏距离(L2)、内积(IP)、杰卡德距离、谷本距离、汉明距离、上层结构和下层结构。后两种度量常用于分子搜索和人工智能驱动的新药发现。


对数

Milvus 支持日志轮换。在系统配置文件 milvus.yaml 中,你可以设置单个日志文件的大小、日志文件的数量以及日志输出到 stdout 的位置。


分布式解决方案

Mishards 是 Milvus 的分片中间件,是 Milvus 的分布式解决方案。 Mishards 有一个写节点和无限多个读节点,能释放服务器集群的计算潜力。其功能包括请求转发、读/写分片、动态/横向扩展等。


监控

Milvus 与开源系统监控和警报工具包 Prometheus 兼容。Milvus 增加了对 Prometheus 中 Pushgateway 的支持,使 Prometheus 获取短时批量指标成为可能。监控和警报系统的工作原理如下:

  • Milvus 服务器将定制的度量数据推送到 Pushgateway。
  • Pushgateway 确保将短暂指标数据安全发送到 Prometheus。
  • Prometheus 继续从 Pushgateway 提取数据。
  • Alertmanager 用于设置不同指标的警报阈值,并通过电子邮件或消息发送警报。


元数据管理

Milvus 默认使用 SQLite 进行元数据管理。SQLite 在 Milvus 中实现,无需配置。在生产环境中,建议使用 MySQL 进行元数据管理。


参与我们的开源社区:

  • GitHub 上查找 Milvus 或为其做出贡献。
  • 通过Slack 与社区互动。
  • Twitter 上与我们联系。

    Try Managed Milvus for Free

    Zilliz Cloud is hassle-free, powered by Milvus and 10x faster.

    Get Started

    Like the article? Spread the word

    扩展阅读