Milvus向量数据库(一)Milvus存储byte[]类型源向量数据

两种路线:

  • 第一种是把byte\[\]转换为List< float >,然后存储到Milvus的floatVector中
  • 第二种是把byte\[\]转换为ByteBuffer,然后存储到Milvus的BinaryVector中

步骤:

  • 我先用的是第一种,但是在转换float过程中,报错NaN,某些数据无法转换,于是换第二种,伪代码如下
java 复制代码
	//创建集合
	...
	//设置向量字段
	FieldType fieldType = FieldType.newBuilder()
                .withName("feature")
                .withDataType(DataType.BinaryVector)
                .withDimension(8256)
                .build();
    ...

	// 获取数据
	byte[] featureData= ...;
	// 转换数据
    ByteBuffer byteBuffer = ByteBuffer.wrap(featureData);
    // 注意这里修改position,不然会报错
    byteBuffer.position(byteBuffer.capacity());
    // 插入准备
    List<ByteBuffer> vector = new ArrayList<>();
    vector.add(byteBuffer);
    List<InsertParam.Field> fields = new ArrayList<>();
    fields.add(new InsertParam.Field("feature",vector));
	// 插入数据
	InsertParam insertParam = InsertParam.newBuilder()
          .withCollectionName(collection_name)
          .withFields(fields)
          .build();

    R<MutationResult> mutationResultR = milvusClient.insert(insertParam);

报错:Incorrect dimension for field 'feature': the no.0 vector's dimension: 0 is not equal to field's dimension: 1032

  • 解决思路:先百度谷歌,然后没找到解决办法,于是看报错位置,查源码,定位报错原因,如下
  • 然后发现byte\[\]在经过ByteBuffer byteBuffer = ByteBuffer.wrap(featureData);这段代码转换时,position被默认设置为0,因此加入byteBuffer.position(byteBuffer.capacity());修改position值
  • 还有需要注意的是设置该字段的向量维度时,需要设置为byte\[\]的长度乘以8
相关推荐
zzqssliu3 分钟前
Taocarts接口限流实操:基于Redis实现API防刷与流量管控
数据库·redis·缓存
乐观勇敢坚强的老彭11 分钟前
2026全国青少年信息素养大赛(Python小学组)复赛复习讲义
python·算法·数学建模
北极星日淘23 分钟前
Python代理池动态适配日淘爬虫|解决高频抓取IP封禁终极方案(含完整源码)
爬虫·python·tcp/ip
啦啦啦啦啦zzzz24 分钟前
redis的持久化操作和主从复制与集群的关系及其应用
数据库·redis
popcorn_min37 分钟前
Breast Cancer 二分类实验:随机森林预测乳腺肿瘤良恶性
python
IT策士39 分钟前
Redis 从入门到精通:分片之道 —— Redis Cluster
数据库·redis·缓存
半只小闲鱼1 小时前
合并多个excel文件到一个文件中
前端·python·数据分析
hikktn1 小时前
ORA-01861 日期格式错误的根治方案:从 SQL 层到 Java 层的标准化治理
java·python·sql
lg_cool_1 小时前
使用conda管理python运行环境并关联vscode
vscode·python·conda
宸津-代码粉碎机1 小时前
Spring AI企业级实战|智能记忆摘要+自动遗忘机制落地,彻底解决上下文爆炸与Token冗余
java·大数据·人工智能·后端·python·spring