为什么 Milvus 可空和默认值功能无法按预期工作?

问题描述 投票:0回答:1

我尝试在 Milvus 中实现可为空和默认值功能,如文档中所述。这是我使用的代码:

from pymilvus import MilvusClient, DataType

client = MilvusClient(uri='http://localhost:19530')

schema = client.create_schema()

schema.add_field(field_name="id", datatype=DataType.INT64, is_primary=True)
schema.add_field(field_name="vector", datatype=DataType.FLOAT_VECTOR, dim=5)
schema.add_field(field_name="age", datatype=DataType.INT64, nullable=True)  # Nullable field

index_params = client.prepare_index_params()
index_params.add_index(field_name="vector", index_type="IVF_FLAT", metric_type="L2", params={"nlist": 128})

client.create_collection(collection_name="user_profiles_null", schema=schema, index_params=index_params)

data = [
    {"id": 1, "vector": [0.1, 0.2, 0.3, 0.4, 0.5], "age": 30},
    {"id": 2, "vector": [0.2, 0.3, 0.4, 0.5, 0.6], "age": None},
]

client.insert(collection_name="user_profiles_null", data=data)

但是,当我尝试在

None
字段中插入具有
age
值的数据时,我收到以下错误:

File d:\milvus_connect\milvus\lib\site-packages\pymilvus\client\entity_helper.py:264, in pack_field_value_to_field_data(field_value, field_data, field_info)
262 field_data.scalars.long_data.data.append(field_value)
263 except (TypeError, ValueError) as e:
--> 264 raise DataNotMatchException(
265 message=ExceptionsMessage.FieldDataInconsistent
266 % (field_name, "int64", type(field_value))
267 ) from e
268 elif field_type == DataType.FLOAT:
269 try:

DataNotMatchException: <DataNotMatchException: (code=1, message=The Input data type is inconsistent with defined schema, {age} field should be a int64, but got a {<class 'NoneType'>} instead.)>

该错误表明

None
字段的
age
值未作为可空值正确处理。如何解决此问题以允许 Milvus 中可空字段具有
None
值?

milvus
1个回答
0
投票

您可以分享您正在使用的 pymilvus 版本吗?我检查了2.5上的pymilvus代码,发现与错误信息不符。如果这里没有使用匹配的SDK版本,建议将SDK版本升级到2.5。

© www.soinside.com 2019 - 2024. All rights reserved.