collections
本节指南梳理 milvus 创建 collection集合(mysql表)
查询所有集合名称列表
from pymilvus import MilvusClient
# 初始化 Milvus 客户端
client = MilvusClient(
uri="http://127.0.0.1:19530",
user="root",
password="root",
)
# 查询所有集合的名称列表
res = client.list_collections()创建 Milvus 集合(表结构)
集合类似于关系数据库中的表,而每一行类似于记录。下面演示如何创建一个新的集合并定义其数据结构。
from pymilvus import MilvusClient, DataType
client = MilvusClient(
uri="http://localhost:19530",
token="root:root"
)
# 创建一个空的 Schema
schema = client.create_schema(
auto_id=False, # 不自动分配主键ID
enable_dynamic_field=True, # 允许添加动态字段
)
# 为 Schema 添加字段
schema.add_field(field_name="my_id", datatype=DataType.INT64, is_primary=True) # 主键字段
schema.add_field(field_name="my_vector", datatype=DataType.FLOAT_VECTOR, dim=5) # 向量字段
schema.add_field(field_name="my_varchar", datatype=DataType.VARCHAR, max_length=512) # 字符串字段
# 准备索引参数
index_params = client.prepare_index_params()
# 为主键字段创建索引
index_params.add_index(
field_name="my_id", # 主键字段
index_type="AUTOINDEX" # 自动选择合适的索引类型
)
# 为向量字段创建索引
index_params.add_index(
field_name="my_vector",
index_type="AUTOINDEX",
metric_type="COSINE" # 使用余弦相似度
)
client.create_collection(
collection_name="customized_setup_1", # 集合名称
schema=schema, # Schema 定义
index_params=index_params, # 索引参数
num_shards=1 # 分片数
)检查集合状态
获取集合的加载状态
res = client.get_load_state(
collection_name="customized_setup_1"
)获取集合的定义状态
res = client.describe_collection(
collection_name="quick_setup"
)
print(res)
{
"collection_name": "text_1",
"auto_id": False, 👈 主键不自动递增
"fields": [
{
"name": "id",
"is_primary": True, 👈 id 是主键
"type": <DataType.INT64: 5>
},
{
"name": "vector",
"params": {"dim": 1024}
}
],
"enable_dynamic_field": true 👈 允许插入额外字段(比如 text、url 等)
}创建一个快速入门集合,指定向量维度
client.create_collection(
collection_name="demo_collection",
dimension=1024 # 向量维度
)Milvus 特性归属说明
属于 Milvus 系统特性的功能:
- 自动索引 (Auto Index):Milvus 可自动为向量字段生成索引。
- 索引类型支持:支持多种索引(如 IVF_FLAT、HNSW)和相似度度量(如 COSINE、L2)。
- mmap 启用:Milvus 默认启用内存映射(mmap),将原始字段数据映射到虚拟内存,避免完全加载至物理内存,提升资源利用率。此为系统级存储管理机制。
- 分片数 (num_shards):在创建 collection 时指定,用于控制数据写入的并行通道数量。虽然在创建 collection 时设置,但
shard是 Milvus 集群层面的数据分布机制,属于系统级数据分发策略。
这些是 Milvus 数据库引擎提供的能力,作用于 collection 的数据分布与存储管理。
属于 Collection 结构或行为特性的内容:
- 集合 (Collection):数据组织单位,类似“表”。
- 字段 (Field):定义 collection 中的数据列及其类型(如 INT64、FLOAT_VECTOR)。
- 动态字段 (Dynamic Fields):通过 schema 配置开启,允许插入未在 schema 中声明的额外字段。
- 集合 TTL(Time To Live):可为 collection 设置数据生命周期(例如
ttl.seconds=3600),超过时间的数据会被自动清理。这是 collection 级别的数据过期策略。 - 一致性级别 (consistency_level):定义读取数据时的一致性保障等级(如 Strong、Bounded、Eventual)。在创建 collection 或执行查询时设置,影响该 collection 的读取行为。
这些是在创建或使用 collection 时定义的行为与结构属性,属于 collection 的元信息或运行参数。
💡 总结理解:
- Milvus 提供底层能力(如 mmap、sharding、索引、TTL 清理机制)。
- Collection 是这些能力的使用者,通过配置决定如何利用系统功能。
- 多数配置(如
num_shards,consistency_level,enable_dynamic_field,TTL)在创建 collection 时设定,体现“系统能力 + 集合配置”的结合。
版权所有
版权归属:念宇
