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 服务状态及集合是否创建成功。

插入向量并查看统计信息 — 数据流时序 Python 脚本 pymilvus SDK Milvus 服务 ① connections.connect(host="127.0.0.1", port="19530") ② Collection(name="demo_insert_stats", schema=schema) ③ col.insert([ids, vectors]) + col.flush() ④ row_count = col.num_entities → 输出 1000 数据说明 维度: 8 (FLOAT_VECTOR) 主键: id (INT64) 插入条数: 1000 向量值: random.random() 范围: [0.0, 1.0) ✓ 判定: 输出行数 = 1000 即通过

关键说明

上述代码中 col.flush() 的作用是将内存中的数据强制落盘,确保后续 num_entities 返回的是持久化后的准确行数。若省略 flush,在数据量较小时统计结果可能为 0。本案例使用随机生成的向量数据,不涉及真实业务语义,仅用于验证插入与统计流程的正确性。若需重复执行脚本,集合会先被删除再重建,保证每次运行结果一致。