从 NumPy 文件中导入
作为 Numpy 标准二进制文件格式,.npy
格式用于存放单个数组及其形状和数据类型信息,以便在不同机器上正确重构。
建议您使用 BulkWriter 工具将您的原始数据转换为 .npy
文件。下图演示了您的原始数据如何映射到 .npy
文件中。
- 是否启用 AutoID
Collection 中的 id 字段作为主键区分 Entity。如果需要 Zilliz Cloud 为插入的数据自动生成主键,可以启用 AutoID。在这种情况下,批量导入数据时需要排队主键列。
- 是否启用 Dynamic Field
当目标 Collection 启用了 Dynamic Field 并且您希望导入 Schema 中未定义的字段时,您可以在导入数据中纳入一个名为 $meta 的字段,并将所有未在 Schema 中定义的字段以键值对的方式存放到 $meta 字段中。
- 大小写
字典键名和 Collection 的字段名是大小写敏感的。您需要确保待导入字典的键名和目标 Collection 的字段名是完全对应的。比如,目标 Collection 中有个字段名为 id,那么待导入字典的键名也应该为 id。使用 ID 或 Id 会导致报错。
目录结构
如果您希望将您的原始数据转换为 NumPy 文件,请将相同数据子集的所有 NumPy 文件放到同一个子文件夹中,然后将这些子文件夹放入源文件夹中,如下方所示。
├── numpy-folders
│ ├── 1
│ │ ├── id.npy
│ │ ├── vector.npy
│ │ ├── scalar_1.npy
│ │ ├── scalar_2.npy
│ │ └── $meta.npy
│ └── 2
│ ├── id.npy
│ ├── vector.npy
│ ├── scalar_1.npy
│ ├── scalar_2.npy
│ └── $meta.npy
导入数据
在准备好待导入数据后,您可以使用如下任意一种方式将它们导入到您在 Zilliz Cloud 上创建的 Collection 中。
如果您的文件体积较小,建议您使用多路径或源文件夹的方式将所有文件一次性导入。Zilliz Cloud 针对这两种方式做了内部优化,可以降低后续资源消耗。
您也可以使用 Zilliz Cloud 控制台或使用 Milvus SDK。具体操作,可以参考 通过 Web 控制台导入以及通过 SDK 导入。
从多个 NumPy 子文件夹导入(推荐)
当您有多个 NumPy 子文件夹时,需要将每个 NumPy 文件夹路径放入一个子列表中,然后将所有子列表放入一个上层列表中,如下方代码所示。
curl --request POST \
--url "https://api.cloud.zilliz.com.cn/v2/vectordb/jobs/import/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d '{
"clusterId": "inxx-xxxxxxxxxxxxxxx",
"collectionName": "medium_articles",
"partitionName": "",
"objectUrls": [
["s3://bucket-name/numpy-folder-1/1/"],
["s3://bucket-name/numpy-folder-2/1/"],
["s3://bucket-name/numpy-folder-3/1/"]
],
"accessKey": "",
"secretKey": ""
}'
从源文件夹导入
If the source folder contains only the NumPy file folder to import, you can simply include the source folder in the request as follows:
如果源文件夹中只包含待导入数据对应的 NumPy 子文件夹,您可以将这个源文件夹的路径放在一个子列表中,然后将这个子列表放在一个外层列表中,如下方代码所示。
curl --request POST \
--url "https://api.cloud.zilliz.com/v2/vectordb/jobs/import/create" \
--header "Authorization: Bearer ${TOKEN}" \
--header "Accept: application/json" \
--header "Content-Type: application/json" \
-d '{
"clusterId": "inxx-xxxxxxxxxxxxxxx",
"collectionName": "medium_articles",
"partitionName": "",
"objectUrls": [
["s3://bucket-name/numpy-folder/1/"]
],
"accessKey": "",
"secretKey": ""
}'
存储路径
Zilliz Cloud 支持从您的云存储中导入数据。下表罗列了 Zilliz Cloud 支持的数据文件路径格式。
云服务提供商 | 相关示例 |
---|---|
阿里云 OSS |
|
腾讯云 COS |
|
亚马逊云科技 S3 |
|
相关限制
Zilliz Cloud 针对导入 Parquet 格式的文件时设置了如下限制。
一个合法的 NumPy 文件夹集合中的每个文件的文件名应该与目标 Collection 的 Schema 中定义的字段名称相同,其中的数据格式应该符合各字段的定义。
项目 | 描述 |
---|---|
支持多文件导入 | 是 |
从顶层文件夹导入 | 是 |
一级子目录最大数量 | 100 |
每次导入的文件体积限制 | Free 集群:最大 512 MB Serverless 或 Dedicated 集群
|
文件存放位置 | 仅远程 |
建议您使用 BulkWriter 工具将您的原始数据转换成 Parquet 文件。我们按照本文示意图中的 Schema 准备了一个示例数据供您参考。单击此处下载该示例文件。