可以理解为成一个关系表,只是支持了一个向量类型字段。

1 介绍

官网文档:https://milvus.io/docs/zh

业界排名:https://db-engines.com/en/ranking/vector+dbms

screenshot-20251204-080114

2 竞品对比

为了对 Milvus 和 Pinecone 这两个向量数据库解决方案进行比较,下表突出了各种功能之间的差异。

特征 Pinecone Milvus 备注
部署模式 纯 SaaS Milvus Lite、On-prem Standalone & Cluster、Zilliz Cloud Saas & BYOC Milvus 提供更灵活的部署模式。
支持的 SDK Python、JavaScript/TypeScript Python、Java、NodeJS、Go、Restful API、C#、Rust Milvus 支持更广泛的编程语言。
开源状态 已关闭 开源 Milvus 是一个流行的开源向量数据库。
可扩展性 仅向上/向下扩展 向外/向内扩展和向上/向下扩展 Milvus 采用分布式架构,增强了可扩展性。
可用性 可用区域内基于 Pod 的架构 可用区域故障切换和跨区域 HA Milvus CDC(变更数据捕获)支持主备模式,以提高可用性。
性能成本(每百万次查询收费) 中型数据集 0.178 美元起,大型数据集 1.222 美元起 Zilliz Cloud 中型数据集的起价为 0.148 美元,大型数据集的起价为 0.635 美元;提供免费版本 请参阅成本排名报告
GPU 加速 不支持 支持英伟达™(NVIDIA®)GPU GPU 加速可大幅提升性能,通常可提升几个数量级。

 

3 非结构化、Embedings和Milvus 关系

文本、图像和音频等非结构化数据格式各异,并带有丰富的底层语义,因此分析起来极具挑战性。为了处理这种复杂性,Embeddings 被用来将非结构化数据转换成能够捕捉其基本特征的数字向量。然后将这些向量存储在向量数据库中,从而实现快速、可扩展的搜索和分析。

  • Embedings将非结构化数据进行向量化
  • Milvus:将Embedings生成的向量进行保存

screenshot-20251204-080423
Milvus 提供三种部署模式,涵盖各种数据规模–从 Jupyter Notebooks 中的本地原型到管理数百亿向量的大规模 Kubernetes 集群:

  • Milvus Lite 是一个 Python 库,可以轻松集成到您的应用程序中。作为 Milvus 的轻量级版本,它非常适合在 Jupyter Notebooks 中进行快速原型开发,或在资源有限的边缘设备上运行。了解更多信息。
  • Milvus Standalone 是单机服务器部署,所有组件都捆绑在一个 Docker 镜像中,方便部署。了解更多。
  • Milvus Distributed 可部署在 Kubernetes 集群上,采用云原生架构,专为十亿规模甚至更大的场景而设计。该架构可确保关键组件的冗余。

4 流程

来源: https://milvus.io/docs/zh/dense-vector.md

稠密向量可使用各种嵌入模型生成,如用于图像的 CNN 模型(如ResNetVGG)和用于文本的语言模型(如BERT、Word2Vec)。这些模型将原始数据转化为高维空间中的点,捕捉数据的语义特征。此外,Milvus 还提供便捷的方法,帮助用户生成和处理密集向量,详见 Embeddings。

一旦数据被向量化,就可以存储在 Milvus 中进行管理和向量检索。下图显示了基本流程。

use-dense-vector

 

4.1 添加向量字段

要在 Milvus 中使用密集向量,首先要在创建 Collections 时定义一个用于存储密集向量的向量场。这个过程包括

  1. 将datatype 设置为受支持的密集向量数据类型。有关支持的密集向量数据类型,请参阅数据类型。
  2. 使用dim 参数指定密集向量的维数。

在下面的示例中,我们添加了一个名为dense_vector 的向量字段来存储密集向量。字段的数据类型为FLOAT_VECTOR ,维数为4 。

 

4.2 为向量场设置索引参数

为了加速语义搜索,必须为向量场创建索引。索引可以大大提高大规模向量数据的检索效率。

在上面的示例中,使用IVF_FLAT 索引类型为dense_vector 字段创建了名为dense_vector_index 的索引。metric_type 设置为IP ,表示将使用内积作为距离度量。

Milvus 还支持其他索引类型。更多详情,请参阅浮动向量索引。此外,Milvus 还支持其他度量类型。更多信息,请参阅 “度量类型“。

4.3 通过Schema和Index来创建Collections

完成密集向量和索引参数设置后,就可以创建包含密集向量的 Collections。下面的示例使用create_collection 方法创建了一个名为my_dense_collection 的集合。

4.4 插入数据

创建集合后,使用insert 方法添加包含密集向量的数据。确保插入的密集向量的维度与添加密集向量字段时定义的dim 值相匹配。

 

4.5 执行相似查询

基于密集向量的语义搜索是 Milvus 的核心功能之一,可以根据向量之间的距离快速找到与查询向量最相似的数据。要执行相似性搜索,请准备好查询向量和搜索参数,然后调用search 方法。

 

5 部署

1. 下载docker https://www.docker.com/products/docker-desktop/

2. 新建 ~/milvs目录

3. 在docker部署milvs:https://milvus.io/docs/install_standalone-docker.md

4. 查看

screenshot-20251204-081746

5. 测试

screenshot-20251204-081829

分类&标签