快速入门

最近更新时间:2026-01-22 17:15:02

我的收藏

相关资源

对象存储的 XML Python SDK 源码下载地址:XML Python SDK
SDK 快速下载地址:XML Python SDK
演示示例 Demo 下载地址:XML Python Demo
SDK 文档中的所有示例代码请参见 SDK 代码示例
SDK 更新日志请参见 ChangeLog

环境配置与准备

COS Vector Bucket 向量桶服务和原 COS 服务共用 Python SDK ,Python SDK 的环境配置和安装方式见 Python SDK 快速入门

初始化向量桶服务

下面为您介绍如何使用 COS Python SDK 初始化向量桶客户端后完成一个基础操作,例如创建向量存储桶、查询向量存储桶列表、创建向量桶索引、查询向量桶索引列表、写入向量、查询向量等。

初始化 COS Vectors Client

注意:
建议用户使用子账号密钥 + 环境变量的方式调用 SDK,提高 SDK 使用的安全性。为子账号授权时,请遵循 最小权限指引原则,防止泄露目标存储桶或对象之外的资源。
一般而言,建议使用临时密钥访问向量桶服务,如果您一定要使用永久密钥,建议遵循 最小权限指引原则 对永久密钥的权限范围进行限制。
下面介绍两种初始化 Python SDK Client 的方式,您可以根据具体场景选择其中一种。请通过 Domain 参数设置向量桶域名。
COS Vectors Client 初始化
COS Vectors Client 临时秘钥初始化(建议)
注意:
正常情况下一个 region 只需要生成一个 CosVectorsClient 实例,然后循环进行桶、索引、向量等操作,不建议每次访问都生成 CosVectorsClient 实例,否则 Python 进程会占用过多的连接和线程。

# -*- coding=utf-8
import sys
import os

from qcloud_cos import CosConfig
from qcloud_cos import CosVectorsClient
import logging

# 正常情况日志级别使用 INFO,需要定位时可以修改为 DEBUG,此时 SDK 会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)

# 1. 设置用户属性, 包括 secret_id, secret_key, region 等。Appid 已在 CosConfig 中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = os.getenv("COS_VECTORS_SECRET_ID") # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
secret_key = os.getenv("COS_VECTORS_SECRET_KEY") # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
region = 'ap-guangzhou' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos/bucket
# COS 支持的所有 region 列表参见 https://cloud.tencent.com/document/product/436/6224
token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048
scheme = 'http' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填

config = CosConfig(
Region=region,
SecretId=secret_id,
SecretKey=secret_key,
Scheme=scheme,
Domain="vectors.ap-guangzhou.coslake.com",
Token=token
)
client = CosVectorsClient(config)
说明:
关于临时密钥如何生成和使用,请参见 临时密钥生成及使用指引

# -*- coding=utf-8
import sys
import os


from qcloud_cos import CosConfig
from qcloud_cos import CosVectorsClient
import logging


# 正常情况日志级别使用 INFO,需要定位时可以修改为 DEBUG,此时 SDK 会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)


# 1. 设置用户属性, 包括 secret_id, secret_key, region 等。Appid 已在 CosConfig 中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = os.getenv("COS_VECTORS_SECRET_ID") # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
secret_key = os.getenv("COS_VECTORS_SECRET_KEY") # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
region = 'ap-guangzhou' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos/bucket
# COS 支持的所有 region 列表参见 https://cloud.tencent.com/document/product/436/6224
token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048
scheme = 'http' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填


config = CosConfig(
Region=region,
SecretId=secret_id,
SecretKey=secret_key,
Scheme=scheme,
Domain="vectors.ap-guangzhou.coslake.com",
Token=token
)
client = CosVectorsClient(config)

访问向量桶服务

向量桶相关操作
向量索引相关操作
向量相关操作
向量桶策略相关操作
# -*- coding=utf-8
import sys
import os
from pprint import pprint

from qcloud_cos import CosConfig
from qcloud_cos import CosVectorsClient
import logging

# 正常情况日志级别使用 INFO,需要定位时可以修改为 DEBUG,此时 SDK 会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)

# 1. 设置用户属性, 包括 secret_id, secret_key, region 等。Appid 已在 CosConfig 中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = os.getenv("COS_VECTORS_SECRET_ID") # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
secret_key = os.getenv("COS_VECTORS_SECRET_KEY") # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
region = 'ap-guangzhou' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos/bucket
# COS 支持的所有 region 列表参见 https://cloud.tencent.com/document/product/436/6224
token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048
scheme = 'http' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填

config = CosConfig(
Region=region,
SecretId=secret_id,
SecretKey=secret_key,
Scheme=scheme,
Domain="vectors.ap-guangzhou.coslake.com",
Token=token
)
client = CosVectorsClient(config)

print("[列出向量桶]")
resp, data = client.list_vector_buckets()
# print(resp)
pprint(data)

print("[创建向量桶]")
resp, data = client.create_vector_bucket(
Bucket='examplebucket-1250000000'
)
# print(resp)
pprint(data)

print("[获取向量桶]")
resp, data = client.get_vector_bucket(
Bucket='examplebucket-1250000000'
)
# print(resp)
pprint(data)

print("[删除向量桶]")
resp = client.delete_vector_bucket(
Bucket='examplebucket-1250000000'
)
print(resp)
# -*- coding=utf-8
import sys
import os
from pprint import pprint

from qcloud_cos import CosConfig
from qcloud_cos import CosVectorsClient
import logging

# 正常情况日志级别使用 INFO,需要定位时可以修改为 DEBUG,此时 SDK 会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)

# 1. 设置用户属性, 包括 secret_id, secret_key, region 等。Appid 已在 CosConfig 中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = os.getenv("COS_VECTORS_SECRET_ID") # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
secret_key = os.getenv("COS_VECTORS_SECRET_KEY") # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
region = 'ap-guangzhou' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos/bucket
# COS 支持的所有 region 列表参见 https://cloud.tencent.com/document/product/436/6224
token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048
scheme = 'http' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填

config = CosConfig(
Region=region,
SecretId=secret_id,
SecretKey=secret_key,
Scheme=scheme,
Domain="vectors.ap-guangzhou.coslake.com",
Token=token
)
client = CosVectorsClient(config)

print("[列出向量索引]")
resp, data = client.list_indexes(
Bucket='examplebucket-1250000000'
)
# print(resp)
pprint(data)

print("[创建向量索引]")
resp, data = client.create_index(
Bucket='examplebucket-1250000000',
Index='idx-dim3',
DataType='float32',
Dimension=3,
DistanceMetric='euclidean',
NonFilterableMetadataKeys=['key1', 'key2']
)
# print(resp)
pprint(data)

print("[获取向量索引]")
resp, data = client.get_index(
Bucket='examplebucket-1250000000',
Index='idx-dim3'
)
# print(resp)
pprint(data)

print("[删除向量索引]")
resp = client.delete_index(
Bucket='examplebucket-1250000000',
Index='idx-dim3'
)
print(resp)
# -*- coding=utf-8
import sys
import os
from pprint import pprint

from qcloud_cos import CosConfig
from qcloud_cos import CosVectorsClient
import logging

# 正常情况日志级别使用 INFO,需要定位时可以修改为 DEBUG,此时 SDK 会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)

# 1. 设置用户属性, 包括 secret_id, secret_key, region 等。Appid 已在 CosConfig 中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = os.getenv("COS_VECTORS_SECRET_ID") # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
secret_key = os.getenv("COS_VECTORS_SECRET_KEY") # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
region = 'ap-guangzhou' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos/bucket
# COS 支持的所有 region 列表参见 https://cloud.tencent.com/document/product/436/6224
token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048
scheme = 'http' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填

config = CosConfig(
Region=region,
SecretId=secret_id,
SecretKey=secret_key,
Scheme=scheme,
Domain="vectors.ap-guangzhou.coslake.com",
Token=token
)
client = CosVectorsClient(config)

# 存储桶中已创建 Index 向量索引。
print("[获取向量索引]")
resp, data = client.get_index(
Bucket='examplebucket-1250000000',
Index='idx-dim3'
)
# print(resp)
pprint(data)

print("[插入向量]")
resp = client.put_vectors(
Bucket='examplebucket-1250000000',
Index='idx-dim3',
Vectors=[
{
'key': 'vector1',
'data': {"float32":[0.1, 0.2, 0.3]},
'metadata': {
'key1': 'value1',
'key2': 'value2'
}
},
{
'key': 'vector2',
'data': {"float32":[0.4, 0.5, 0.6]},
'metadata': {
'key1': 'value1',
'key2': 'value2'
}
}
]
)
print(resp)

print("[获取向量]")
resp, data = client.get_vectors(
Bucket='examplebucket-1250000000',
Index='idx-dim3',
Keys=['vector1', 'vector2'],
ReturnData=True,
ReturnMetaData=True
)
# print(resp)
pprint(data)

print("[查询向量]")
resp, data = client.query_vectors(
Bucket='examplebucket-1250000000',
Index='idx-dim3',
QueryVector={"float32":[0.1, 0.2, 0.3]},
TopK=10
)
# print(resp)
pprint(data)

print("[删除向量]")
resp = client.delete_vectors(
Bucket='examplebucket-1250000000',
Index='idx-dim3',
Keys=['vector1', 'vector2']
)
print(resp)

print("[列出向量]")
resp, data = client.list_vectors(
Bucket='examplebucket-1250000000',
Index='idx-dim3',
MaxResults=10
)
# print(resp)
pprint(data)
注意:
运行代码前确保向量存储桶中已有向量桶策略。
# -*- coding=utf-8
import sys
import os
from pprint import pprint

from qcloud_cos import CosConfig
from qcloud_cos import CosVectorsClient
import logging

# 正常情况日志级别使用 INFO,需要定位时可以修改为 DEBUG,此时 SDK 会打印和服务端的通信信息
logging.basicConfig(level=logging.INFO, stream=sys.stdout)

# 1. 设置用户属性, 包括 secret_id, secret_key, region 等。Appid 已在 CosConfig 中移除,请在参数 Bucket 中带上 Appid。Bucket 由 BucketName-Appid 组成
secret_id = os.getenv("COS_VECTORS_SECRET_ID") # 用户的 SecretId,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
secret_key = os.getenv("COS_VECTORS_SECRET_KEY") # 用户的 SecretKey,建议使用子账号密钥,授权遵循最小权限指引,降低使用风险。子账号密钥获取可参见 https://cloud.tencent.com/document/product/598/37140
region = 'ap-guangzhou' # 替换为用户的 region,已创建桶归属的 region 可以在控制台查看,https://console.cloud.tencent.com/cos/bucket
# COS 支持的所有 region 列表参见 https://cloud.tencent.com/document/product/436/6224
token = None # 如果使用永久密钥不需要填入 token,如果使用临时密钥需要填入,临时密钥生成和使用指引参见 https://cloud.tencent.com/document/product/436/14048
scheme = 'http' # 指定使用 http/https 协议来访问 COS,默认为 https,可不填

config = CosConfig(
Region=region,
SecretId=secret_id,
SecretKey=secret_key,
Scheme=scheme,
Domain="vectors.ap-guangzhou.coslake.com",
Token=token,
)
client = CosVectorsClient(config)

print("[查看当前向量桶策略]")
resp, data = client.get_vector_bucket_policy(
Bucket='examplebucket-1250000000'
)
# print(resp)
pprint(data)

print("[配置向量桶策略(覆盖配置)]")
resp = client.put_vector_bucket_policy(
Bucket='examplebucket-1250000000',
Policy={
"Version": "2.0",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"qcs": [
"qcs::cam::uin/700000000000:uin/700001234567"
]
},
"Action": [
"name/cos:GetVectorBucket",
"name/cos:ListVectors"
],
"Resource": [
"qcs::cosvector:ap-guangzhou:uid/1250000000:bucket/examplebucket-1250000000/*"
]
}
]
}
)
print(resp)

print("[获取向量桶策略]")
resp, data = client.get_vector_bucket_policy(
Bucket='examplebucket-1250000000'
)
# print(resp)
pprint(data)

print("[删除向量桶策略]")
resp = client.delete_vector_bucket_policy(
Bucket='examplebucket-1250000000'
)
print(resp)