put-vectors

通过put-vectors命令向索引中写入向量数据。

注意事项

  • 单张向量 Index 表最多存储 5000 万行向量数据。

  • PutVectors接口单批次最大写入 500 条。

权限说明

阿里云账号默认拥有全部权限。阿里云账号下的RAM用户或RAM角色默认没有任何权限,需要阿里云账号或账号管理员通过RAM PolicyBucket Policy授予操作权限。

API

Action

说明

PutVectors

oss:PutVectors

写入向量数据。

命令格式

ossutil vectors-api put-vectors --bucket value --index-name value --vectors value [flags]

参数说明

参数

类型

说明

--bucket

string

向量Bucket名称。

--index-name

string

索引名称。

--vectors

string

向量数据,支持JSON字符串或文件路径(使用file://前缀)。

说明

向量数据格式

向量数据为JSON数组格式,每个向量包含以下字段:

[ 
    { 
       "data": {
          "float32":[float]
       },
       "key": "string",
       "metadata": {
           "key1": ["value1", "value2"],
           "key2": "value2"
       }
    }
]

每个字段的详细参数说明如下:

名称

数据类型

是否必选

示例值

描述

key

字符串

doc-001

写入向量主键,标识向量唯一值。限制:

  • key相同则覆盖,但若在同一批次中key有重复则全部异常

  • key单值长度在1~1024字符之间

  • key需为utf8格式。

父节点:vectors

data

容器

-

向量内容。

父节点:vectors

float32

数值数组

[0.1, 0.2, 0.3]

向量数据,数据类型为float32。向量维度必须与索引定义的维度一致。使用余弦距离度量时,不允许出现零向量。

父节点:data

metadata

容器

-

元数据。限制:

  • 总大小 <= 40KB

  • 可过滤metadata限制:长度 ∈ [0, 10],可过滤部分大小 <= 2KB

  • 支持类型string。

  • 配置可过滤元数据时:

    • 单次过滤指令中可过滤元数据的累计长度不超过 64 KB;

    • 单次过滤指令中可过滤元数据项数量不超过 1024 个;

    • 过滤条件嵌套层级最多支持 8 层;

    • 允许过滤条件为空。

父节点:vectors

使用示例

在名为 examplebucket 的向量Bucket中,向名为 index 的向量索引添加一个向量,该向量的数据为 1,向量主键为 vector1,元数据为 {"Key1": "32"}。

  • 使用JSON配置文件,vectors.json内容如下:

    [
      {
        "data": {
          "float32": [1]
        },
        "key": "vector1",
        "metadata": {
          "Key1": "32"
        }
      }
    ]

    命令示例:

    ossutil vectors-api put-vectors --bucket examplebucket --index-name index --vectors file://vectors.json
  • 使用JSON配置参数:

    ossutil vectors-api put-vectors --bucket examplebucket --index-name index --vectors "[{\"data\":{\"float32\":[1]},\"key\":\"vector1\",\"metadata\":{\"Key1\":\"32\"}}]"