You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

向Milvus分区插入数据时遇DataTypeNotSupportException问题求助

解决Milvus分区插入数据时的DataTypeNotSupportException错误

问题分析

你遇到的错误核心是插入数据的格式不符合pymilvus的要求:

  • Option1的字段分组字典格式,在部分pymilvus版本中可能存在数据类型隐式转换的兼容性问题,导致服务端无法识别数据类型
  • Option2的格式完全错误,你将整个字段字典包裹在单个列表元素中,而非按单条数据的维度组织列表

正确的插入方式

方式1:按行组织的字典列表(兼容性最优)

这是最直观且不易出错的格式,每个字典对应单条数据:

from pymilvus import FieldSchema, CollectionSchema, DataType, connections, Partition

# 初始化Schema与连接
id_field = FieldSchema(name="id", dtype=DataType.INT64, is_primary=True)
vector_field = FieldSchema(name="text_vector", dtype=DataType.FLOAT_VECTOR, dim=768)
schema = CollectionSchema(fields=[id_field, vector_field])
connections.connect(host=MILVUS_SETTINGS['host'], port=MILVUS_SETTINGS['port'])

# 创建集合与分区(必须确保分区已在Milvus中创建)
milvus_collection = Collection(name="test_collection_name", schema=schema)
milvus_collection.create_partition("test_partition_name")
milvus_partition = milvus_collection.partition("test_partition_name")

# 准备数据
unique_id = 1
text_vector = [0.1] * 768

# 按行组织的正确格式
data = [
    {"id": unique_id, "text_vector": text_vector},
    {"id": unique_id + 1, "text_vector": text_vector}
]

# 执行插入
milvus_partition.insert(data=data)

方式2:按字段组织的列表(适配新版本pymilvus)

如果偏好字段分组的格式,需明确指定ID字段的数据类型为int64,避免隐式转换问题:

import numpy as np

# 准备字段分组数据,明确ID类型为int64
data = {
    "id": np.array([unique_id, unique_id + 1], dtype=np.int64),
    "text_vector": [text_vector, text_vector]
}

milvus_partition.insert(data=data)

关键注意事项

  • 必须先通过create_partition方法在Milvus中创建分区,仅实例化Partition对象不会自动创建分区
  • 确保向量维度与Schema中定义的dim=768完全一致
  • 检查pymilvus与Milvus服务端的版本匹配性,建议使用官方推荐的同版本组合(如Milvus 2.2.x对应pymilvus 2.2.x)

内容的提问来源于stack exchange,提问作者Rashad Tockey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 19:55:12