在Milvus,collection、cluster和entities这几个术语有特定的含义:
-
Collection:
- 一个collection是Milvus中存储向量数据的基本单位,类似于关系型数据库中的表(table)。每个collection由多个字段(field)组成,可以包含向量字段(用于存储向量数据)和标量字段(如数字、文本等用于存储描述性数据或元数据)。
- 在上述代码中,创建了一个名为"hello_milvus"的collection,其中包含三个字段:主键字段
pk
(标识每个实体的唯一标识符)、一个双精度浮点数字段random
以及一个浮点数向量字段embeddings
。
-
Entities:
- entities是指存储在collection中的数据项,每个entity由一组字段值组成,可以理解为关系型数据库中的行(row)。在向量搜索和检索场景中,每个entity通常包含一个向量(如图像、文本的向量表示)和一些辅助信息(如ID、名称、其他描述性字段)。
- 在上述代码示例中,每个entity都由一个唯一的
pk
、一个random
值和一个8维的embeddings
向量组成。这些entities被插入到"hello_milvus" collection中。
-
Cluster:
- cluster在Milvus的上下文中通常指的是集群模式,即多个Milvus实例组成的集群,用于提高系统的可扩展性和可靠性。集群可以处理更大的数据量,提供更高的查询吞吐量,并支持容错和高可用性。
- 集群部署可以根据实际需求配置,例如,可以配置读写分离、数据分片和副本,以满足不同的性能和可靠性要求。
- 代码示例中没有直接提及到cluster的概念,但在实际部署中,Milvus可以配置为单实例模式或集群模式,以适应不同规模的应用需求。
总结来说,在Milvus中,collection是存储数据的容器,entities是collection中的数据项,而cluster指的是多个Milvus实例组成的集群环境。
安装
Server
二选一
Docker安装Stand alone版本
单机安装(非集群):https://milvus.io/docs/v2.2.x/install_standalone-docker.md
wget https://github.com/milvus-io/milvus/releases/download/v2.2.16/milvus-standalone-docker-compose.yml -O docker-compose.yml
sudo docker-compose up -d
pip 安装Lite版本
pip install milvus
启动
milvus-server
提示:使用Linux(WSL)跑lite版本比Windows平台更稳定。
实验平台:WSL
Python SDK
Pymilvus和Milvus Server版本对应关系
https://milvus.io/api-reference/pymilvus/v2.2.x/About.md
使用
引入pymilvus
from pymilvus import (
connections,
utility,
FieldSchema, CollectionSchema, DataType,
Collection,
)
-
connections
- 作用:管理与Milvus服务器的连接。
- 详解:提供了连接(
connect
)、断开连接(disconnect
)和获取当前连接状态(如get_connection
)等功能。它允许你指定Milvus服务器的地址和端口,以便与之建立连接。
-
utility
- 作用:提供一系列实用功能,用于执行非CRUD(创建、读取、更新、删除)操作。
- 详解:包括检查collection是否存在(
has_collection
)、列出所有collections(list_collections
)、删除collection(drop_collection
)、获取collection的信息和状态等辅助功能。
-
FieldSchema
- 作用:定义collection中字段的模式。
- 详解:用于创建字段的定义,包括字段名、数据类型(如
INT64
、FLOAT
、FLOAT_VECTOR
等)、是否为主键、自动生成ID等。这是定义collection结构的基础部分。
-
CollectionSchema
- 作用:定义collection的模式。
- 详解:用于整合多个
FieldSchema
,创建一个完整的collection模式。这包括collection中的所有字段和它们的数据类型,以及collection的描述信息。
-
DataType
- 作用:枚举定义了Milvus支持的数据类型。
- 详解:提供了一系列预定义的数据类型常量,如
FLOAT
、INT64
、VARCHAR
和FLOAT_VECTOR
等,用于在定义FieldSchema
时指定字段的数据类型。
-
Collection
- 作用:代表Milvus中的一个collection,提供数据操作接口。
- 详解:用于创建、删除、插入数据到collection、搜索、查询等操作。它是与Milvus数据库交互的主要接口,通过它可以对特定的collection执行大多数操作。
基本操作
连接服务器
connections.connect("default", host="127.0.0.1", port="19530")
判断名为hello_milvus的collection是否存在
utility.has_collection("hello_milvus")
创建一个collection schema
fields = [
FieldSchema(name="pk", dtype=DataType.VARCHAR, is_primary=True, auto_id=False, max_length=100),
FieldSchema(name="random", dtype=DataType.DOUBLE),
FieldSchema(name="embeddings", dtype=DataType.FLOAT_VECTOR, dim=dim)
]
schema = CollectionSchema(fields, "hello_milvus is the simplest demo to introduce the APIs")
使用collection schema创建collection
hello_milvus = Collection("hello_milvus", schema, consistency_level="Strong")
同时,也可以使用Collection函数选中已有的collection
collection = Collection("hello_milvus")