类型支持
下表给出 Milvus 字段的 Java 属性类型建议。向量类型和维度以集合 schema 为准。Java/JDBC 类型见 Java/JDBC 类型关系。
类型映射
向量字段的用法见向量类型。
表中向量行同时列出 JDBC 读写形式。
| Milvus 字段类型 | Java 类型 | 说明 |
|---|---|---|
| BOOL | Boolean | 使用布尔语义,不作为普通整数属性。 |
| INT8 | Byte | 有符号 8 位整数。 |
| INT16 | Short | 有符号 16 位整数。 |
| INT32 | Integer | 有符号 32 位整数。 |
| INT64 | Long | 有符号 64 位整数。 |
| FLOAT | Float | 32 位浮点数。 |
| DOUBLE | Double | 64 位浮点数。 |
| VARCHAR(max_length) | String | max_length 按 UTF-8 字节数限制字段内容。 |
| JSON | Map / List / Bean | 实体 属性配置见 JSON 字段映射;直接 getObject() 返回 JsonElement。 |
| ARRAY<BOOL>(max_capacity) | Boolean[] | 数组元素为布尔值。 |
| ARRAY<INT8>(max_capacity) | Byte[] | 数组元素为有符号 8 位整数。 |
| ARRAY<INT16>(max_capacity) | Short[] | 数组元素为有符号 16 位整数。 |
| ARRAY<INT32>(max_capacity) | Integer[] | 数组元素为有符号 32 位整数。 |
| ARRAY<INT64>(max_capacity) | Long[] | 数组元素为有符号 64 位整数。 |
| ARRAY<FLOAT>(max_capacity) | Float[] | 数组元素为 32 位浮点数。 |
| ARRAY<DOUBLE>(max_capacity) | Double[] | 数组元素为 64 位浮点数。 |
| ARRAY<VARCHAR(max_length)>(max_capacity) | String[] | max_length 限制单个字符串,max_capacity 限制元素数量。 |
| FLOAT_VECTOR(n) | List<Float> | getObject() 返回 List<Float>。写入接受数值 List 或一维数值基本类型数组,各元素转换为 Float;向量长度须为 n。 |
| BINARY_VECTOR(n) | byte[] | getBytes() 返回按位打包的字节,长度为 n/8。写入接受 byte[]、ByteBuffer 或字节值 List;它不是任意长度 BLOB。 |
| FLOAT16_VECTOR(n) | byte[] | 查询返回每维 2 字节的小端半精度编码;写入也接受数值 List 或数值基本类型数组。 |
| BFLOAT16_VECTOR(n) | byte[] | 查询返回每维 2 字节的小端 BFloat16 编码;写入也接受数值 List 或数值基本类型数组。 |
| INT8_VECTOR(n) | byte[] | getBytes() 返回每维一个 有符号字节。写入还接受 ByteBuffer、数值 List 或一维数值基本类型数组;元素必须是 -128 至 127 的整数,长度须为 n。 |
| SPARSE_FLOAT_VECTOR | SortedMap<Long, Float> | getObject() 按维度索引升序返回。写入接受非空 Map<Number, Number>;键为维度索引,值为有限浮点权重。 |
byte[] 的含义由目标字段 schema 决定:用于 FLOAT_VECTOR 时是逐元素转换的有符号数值序列;用于 BINARY_VECTOR、FLOAT16_VECTOR、BFLOAT16_VECTOR 时是打包编码;用于 INT8_VECTOR 时每个字节是一个向量分量。驱动不会只根据 Java 参数类型猜测向量种类。
向量类型
向量字段映射与读写见向量操作。
数组类型
数组字段支持普通数组和空数组;声明 NULL 后,也可以将整个字段设为 null。例如 new Integer[0] 保存为空数组,与字段值为 null 不同。
数组中的元素不能为 null,因此 new Integer[] { 1, null } 不能写入 ARRAY<INT32> 字段。