本文用于记录在学习 Milvus文档时所遇到的一些Bug或报错及解决方法
参考文章:
官方demo:在Dynamic Schema的集合中插入数据
此报错出现在Milvus官方在介绍 Dynamic Schema 时所提供的实例代码中。报错位置与信息如下:
- # 6. insert data
-
- collection.insert(data_rows)
-
-
-
- 异常信息:auto id enabled, id shouldn't in entities[0]
很明显这是在数据插入时,id发生了异常。Milvus官方所提供的代码中对schema的定义如下:
- # 1. define fields
- fields = [
- FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=True),
- FieldSchema(name="title", dtype=DataType.VARCHAR, max_length=512),
- FieldSchema(name="title_vector", dtype=DataType.FLOAT_VECTOR, dim=768)
- ]
从上述定义可知:id被设置为了自动生成(auto_id=True),而问题恰恰就出在这里。
这里再补充一下此demo中用于插入的数据格式,如下所示:
- {
- 'id': 0,
- 'title': 'The Reported Mortality Rate of Coronavirus Is Not Important',
- 'title_vector': [0.041732933, 0.013779674,...,-0.027564144],
- 'link': 'https://medium.com/swlh/the-reported-mortality-rate-of-coronavirus-is-not-important-369989c8d912',
- 'reading_time': 13,
- 'publication': 'The Startup',
- 'claps': 1100,
- 'responses': 18
- }
可以发现数据本身已经携带了 id 值,然而此时id字段被定义为自动生成,如此一来就会造成插入时id字段报错。
只需将 id 字段的auto_id 设置为 False 即可,如下所示:
- fields = [
- FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=False),
- ...
- ]