Milvus踩坑笔记

本文用于记录在学习 Milvus文档时所遇到的一些Bug或报错及解决方法

参考文章:

官方demo:在Dynamic Schema的集合中插入数据

报错1:auto id enabled, id shouldn't in entities[0]

问题描述

此报错出现在Milvus官方在介绍 Dynamic Schema 时所提供的实例代码中。报错位置与信息如下:

bash 复制代码
# 6. insert data

collection.insert(data_rows)



异常信息:auto id enabled, id shouldn't in entities[0]

问题分析

很明显这是在数据插入时,id发生了异常。Milvus官方所提供的代码中对schema的定义如下:

python 复制代码
# 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中用于插入的数据格式,如下所示:

bash 复制代码
{
    '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 即可,如下所示:

bash 复制代码
fields = [
    FieldSchema(name="id", dtype=DataType.INT64, is_primary=True, auto_id=False),
    ...
]
相关推荐
懒惰的bit9 天前
STM32F103C8T6 学习笔记摘要(四)
笔记·stm32·学习
zkyqss9 天前
OVS Faucet练习(下)
linux·笔记·openstack
浦东新村轱天乐9 天前
【麻省理工】《how to speaking》笔记
笔记
奔跑的蜗牛AZ9 天前
TiDB 字符串行转列与 JSON 数据查询优化知识笔记
笔记·json·tidb
cwtlw9 天前
Excel学习03
笔记·学习·其他·excel
杭州杭州杭州9 天前
计算机网络笔记
笔记·计算机网络
cyborg10 天前
终于再也不用在notion中写公式了
笔记
循环过三天10 天前
1.2、CAN总线帧格式
笔记·stm32·单片机·嵌入式硬件·学习
循环过三天10 天前
1.1、CAN总线简介
笔记·stm32·单片机·嵌入式硬件·学习
mooyuan天天10 天前
pikachu靶场通关笔记43 SSRF关卡01-CURL(三种方法渗透)
笔记·安全·web安全·ssrf漏洞