数据类型

最近更新时间:2025-07-01 10:19:42

我的收藏
说明:
数据类型半精度浮点类型 float16_vector 与 bfloat16_vector 内存压缩特性说明:
理论压缩与实际限制: 使用 float16_vector 或 bfloat16_vector 半精度浮点数理论上可将原始 float32 数据的内存占用降低 50%。然而,由于 HNSW 索引结构中的“边”(edges)需要额外的存储空间,实际内存压缩率通常无法达到理论上的50%。
维度对压缩率的影响: 内存压缩效果会随着向量维度的增加而提升,并逐渐接近 50% 的理论值。维度越高,向量数据本身所占用的内存比例就越大。对高维数据进行半精度压缩带来的节省(接近50%)会显著超过存储索引“边”所需的固定或相对增长较慢的额外开销,使得“边”存储对整体压缩率的影响相对变小。
实测参考:基于真实数据集的验证结果,在1024维和2304维的数据上应用半精度量化后,其内存占用相对于原始 float32 格式通常能实现约 45% 左右的压缩。
检索质量影响(召回率):根据多组公开数据集和业务数据集的测试验证,将数据转换为半精度(float16_vector / bfloat16_vector )进行检索,其召回率(Recall)下降低于 0.5%。
数据类型
适用字段
存储格式
使用场景
vector
向量字段
单精度浮点数向量,采用8位指数位 + 23位尾数位 + 1位符号位(共32位)
适用于需最高精度的计算任务或对误差敏感的向量检索。
float16_vector
半精度浮点数向量,采用5位指数位 + 10位尾数位 + 1位符号位 的格式
适用于尾数精度较高(小数点后保留更多位数)的场景,如 bge-large 等模型生成的嵌入向量。
bfloat16_vector
bfloat16 浮点数向量,采用8位指数位 + 7位尾数位 + 1位符号位的格式
适用于向量数值范围较大(更多bit位表达整数)的场景。
binary_vector
每个维度仅用 1 个比特(bit) 表示 0 或 1,无指数位、尾数位和符号位,直接存储二进制数据
适用于稀疏向量。
string
主键 ID
标量字段
字符串
适用于文本类标签、分类名称、唯一标识符 ID、短描述、状态码、关键词等离散的、非数值型的分类信息。
uint64
标量字段
整型数值,包含正整数和零。
适用于需要大范围整数值的标量属性信息。
double
双精度浮点型数值
适用于需要高精度的连续数值或小数的属性信息,例如:价格、权重、分数等。
array
数组类型,存储一组相同类型的数据元素。当前,数组元素仅支持 string 类型。
适用于一个标量字段包含多个同类型的元素集合。
json
基于文本的格式,由键值对组成的数据对象。用花括号 {} 包裹,例如: "a": {"b": "test", "c": 12},a 中的字段 b 用 a.b 表示。
存储结构灵活、嵌套复杂或动态变化的属性集合。