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),
    ...
]
相关推荐
超级大只老咪5 小时前
快速进制转换
笔记·算法
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.7 小时前
Keepalived VIP迁移邮件告警配置指南
运维·服务器·笔记
ling___xi8 小时前
《计算机网络》计网3小时期末速成课各版本教程都可用谢稀仁湖科大版都可用_哔哩哔哩_bilibili(笔记)
网络·笔记·计算机网络
中屹指纹浏览器9 小时前
中屹指纹浏览器底层架构深度解析——基于虚拟化的全维度指纹仿真与环境隔离实现
经验分享·笔记
Hello_Embed9 小时前
libmodbus 移植 STM32(基础篇)
笔记·stm32·单片机·学习·modbus
无聊的小坏坏10 小时前
实习笔记:用 /etc/crontab 实现定期数据/日志清理
笔记·实习日记
香芋Yu10 小时前
【机器学习教程】第04章 指数族分布
人工智能·笔记·机器学习
深蓝海拓11 小时前
PySide6从0开始学习的笔记(二十六) 重写Qt窗口对象的事件(QEvent)处理方法
笔记·python·qt·学习·pyqt
中屹指纹浏览器11 小时前
中屹指纹浏览器多场景技术适配与接口封装实践
经验分享·笔记
BugShare13 小时前
Obsidian 使用指南:从零开始搭建你的个人知识库
笔记·obsidian