准备工作
开通对象存储 ZOS 服务
使用 ZOS 向量存储桶前,请先注册账号并按照对象存储开通要求,开通对象存储 ZOS 服务,详情参考ZOS 准备工作。
操作步骤
步骤1:创建向量存储桶
进入向量存储控制台,点击“向量存储桶列表”,进入列表页。
点击“创建向量 Bucket”,弹出“创建向量 Bucket”对话框。
输入向量 Bucket 名称和地域。
同账号同地域的向量 Bucket 名称不能重复。
名称创建成功后不支持修改。
名称长度范围为 3 到 63 个字符,支持小写字母、数字、中划线(-)。
名称禁止以中划线(-)开头或结尾。
地域目前仅支持华北 2,其他地域将陆续上线。
点击确定完成创建。
步骤2:创建向量索引
进入向量存储控制台,点击将要创建向量索引的向量 Bucket 名称,进入桶详情页。
在桶详情页,点击“创建向量索引”,弹出对话框,配置下列信息:
索引名称:输入索引的自定义名称,该名称在存储桶内唯一。
向量维度:只允许输入 2 到 4096 之间的整数,后续所有上传到该索引的向量都必须与此维度保持一致。
距离度量函数:可选余弦和欧几里得,默认选中余弦。
元数据:可选,创建向量索引后,无法对不可筛选的元数据键做出修改,请谨慎添加。
点击确定完成创建。
步骤3:上传向量数据
当前不支持在控制台上传向量数据,您可以使用 SDK 完成上传操作。
一条向量由键、向量数据、元数据三部分组成。
每个向量都由一个键组成,该键唯一标识向量索引中的每个向量。
如果插入的向量在索引中已存在相同键,则此向量将完全覆盖现有向量,前一个向量无法再提供检索。
每个向量数据的数值个数需和向量索引的向量维度保持一致。
PutVectors 的最大批量大小见规格清单。
每个向量的总元数据大小限制和每个向量的可筛选元数据大小限制见规格清单,超出限制,将会报错。
下面以 Python SDK 为例,演示上传向量数据至指定的向量索引。关于 put_vectors 具体使用方法及参数说明,详见 SDK 参考。
from boto3.session import Session
#通用:client初始化
url = "https://huabei-2.ctyunvectors.cn" #S3 Vectors访问地址
access_key = "your ak" #用户的AK认证信息
secret_key = "your sk" #用户的SK认证信息
region = "huabei-2" #区域
session = Session(access_key, secret_key)
client=session.client("s3vectors",endpoint_url=url,region_name=region)
#指定bucket name, index name
vectorBucketName = "my-vector-bucket"
indexName="my-index"
#创建向量桶,您也可使用控制台创建,若已存在向量桶可不创建
resp1 = client.create_vector_bucket(
vectorBucketName=vectorBucketName
)
#创建向量索引,您也可使用控制台创建,若已存在索引可不创建
resp2 = client.create_index(
vectorBucketName=vectorBucketName,
indexName=indexName,
dimension=4,
dataType="float32",
distanceMetric="cosine",
)
#插入向量
vectors=[
{
"key": "doc-001",
"data": {"float32": [1, 2, 3, 4]},
"metadata": {"title": "Doc 1", "category": "A"},
},
{
"key": "doc-002",
"data": {"float32": [1, 2, 3, 5]},
"metadata": {"title": "Doc 2", "category": "A"},
},
{
"key": "doc-003",
"data": {"float32": [-1, 2, -6, 5]},
"metadata": {"title": "Doc 3", "category": "B"},
},
{
"key": "doc-004",
"data": {"float32": [-1, 1, 4, 5]},
"metadata": {"title": "Doc 4", "category": "B"},
}
]
resp3 = client.put_vectors(
vectorBucketName=vectorBucketName,
indexName=indexName,
vectors=vectors,
)
print(resp3)步骤4:向量相似度检索
当前不支持在控制台进行检索操作,您可使用 SDK 的方式执行向量检索操作。下面以 Python SDK 为例,演示对目标向量进行相似度检索。关于 query_vectors 具体使用方法及参数说明,详见 SDK 参考。
from boto3.session import Session
#通用:client初始化
url = "https://huabei-2.ctyunvectors.cn" #S3 Vectors访问地址
access_key = "your ak" #用户的AK认证信息
secret_key = "your sk" #用户的SK认证信息
region = "huabei-2" #区域
session = Session(access_key, secret_key)
client=session.client("s3vectors",endpoint_url=url,region_name=region)
#指定bucket name, index name
vectorBucketName = "my-vector-bucket"
indexName="my-index"
#查询向量
query_vector=[1, 2, 2, 4.5]
resp4=client.query_vectors(
vectorBucketName=vectorBucketName,
indexName=indexName,
queryVector={"float32":query_vector},
topK=3,
returnDistance=True,
returnMetadata=True,
)
print(resp4)