2. 插入向量数据并查看统计信息
任务说明
本案例目标是在 Milvus 中完成一次完整的“建集—插入—统计”闭环:创建一个向量集合,向其中插入随机生成的向量数据,然后通过集合统计接口查看当前行数,以确认数据写入成功。整个过程使用 Milvus 的 Python SDK(pymilvus)实现,适合作为向量数据库入门后的第一个数据写入练习。
实现方案
使用 pymilvus 2.3.x 版本,连接本地默认端口的 Milvus 服务。先定义集合的字段结构(主键、向量字段),创建集合后批量插入 1000 条 8 维随机浮点向量,最后调用 num_entities 获取集合中的实体数量并打印。代码中不依赖任何未展示的前置代码,所有必要参数均在当前脚本内显式定义。
代码实现
from pymilvus import (
connections, CollectionSchema, FieldSchema, DataType, Collection
)
import random
# 1. 连接 Milvus(默认本地端口)
connections.connect(host="127.0.0.1", port="19530")
# 2. 定义集合名称与字段结构
collection_name = "demo_insert_stats"
dim = 8
fields = [
FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=False),
FieldSchema(name="vector", dtype=DataType.FLOAT_VECTOR, dim=dim)
]
schema = CollectionSchema(fields=fields, description="insert and stats demo")
# 3. 创建集合(若已存在则先删除,保证可重复执行)
col = Collection(name=collection_name, schema=schema)
col.drop()
col = Collection(name=collection_name, schema=schema)
# 4. 插入 1000 条随机向量
BATCH_SIZE = 1000
ids = [i for i in range(BATCH_SIZE)]
vectors = [[random.random() for _ in range(dim)] for _ in range(BATCH_SIZE)]
col.insert([ids, vectors])
col.flush() # 确保数据落盘,统计结果准确
# 5. 查看统计信息(行数)
row_count = col.num_entities
print(f"集合 '{collection_name}' 当前行数: {row_count}")
运行与验证
依赖安装:
pip install pymilvus==2.3.7
启动 Milvus:确保本地已通过 Docker 启动 Milvus 单机版(默认端口 19530)。
执行脚本:
python insert_stats.py
判定标准:程序正常结束且输出行数为 1000,即表示插入与统计功能验证通过。若输出为 0 或报错,请检查 Milvus 服务状态及集合是否创建成功。
关键说明
上述代码中 col.flush() 的作用是将内存中的数据强制落盘,确保后续 num_entities 返回的是持久化后的准确行数。若省略 flush,在数据量较小时统计结果可能为 0。本案例使用随机生成的向量数据,不涉及真实业务语义,仅用于验证插入与统计流程的正确性。若需重复执行脚本,集合会先被删除再重建,保证每次运行结果一致。