You need to enable JavaScript to run this app.
文档中心
对象存储

对象存储

复制全文
下载 pdf
向量
QueryVectors(TOS Vectors Python SDK)
复制全文
下载 pdf
QueryVectors(TOS Vectors Python SDK)
query_vectors 接口用于检索向量,本文介绍如何通过 TOS Vectors Python SDK 的 query_vectors 接口执行向量检索并返回相似结果。​
注意事项​
  • 为了防止密钥泄露,本文示例代码需要从环境变量中读取 Access Key ID 和 Secret Access Key。因此使用 SDK 前,您需要配置长期访问凭证,详细介绍,请参见 配置长期访问凭证。​
  • TOS Vectors Python SDK 支持使用临时访问凭证;也支持配置超时机制、重试策略等多种机制,您可以根据业务需求灵活设置,提升应用安全性,详细介绍,请参见 常见配置场景。​
  • TOS Vectors 底层支持向量 float32 精度,如果传入高于此精度的向量,可能会导致精度损失。​
权限说明​
主账号默认拥有全部权限,但是 IAM 用户默认没有任何权限。如果您需要使用 IAM 用户执行 query_vectors 操作,主账号需通过 IAM策略和桶策略为该 IAM 用户授予以下权限:tosvectors:QueryVectors​
代码示例​
查询距离最近 TopK 向量​
​
# 查询距离最近TopK向量​
import os​
import random​
import tos​
from tos.models2 import VectorData​
​
# 从环境变量获取 AK 和 SK 信息。​
ak = os.getenv('TOS_ACCESS_KEY')​
sk = os.getenv('TOS_SECRET_KEY')​
# your endpoint 和 your region 填写Bucket 所在区域对应的Endpoint。# 以华北2(北京)为例,your endpoint 填写 https://tosvectors-cn-beijing.volces.com,your region 填写 cn-beijing。​
endpoint = 'Provide your endpoint'​
region = 'Provide your region'​
account_id = os.getenv('TOS_ACCOUNT_ID')​
vector_bucket_name = 'Provide your bucket name'​
index_name = "testindex"​
​
try:​
# 创建 VectorClient 对象,对向量的操作都通过 VectorClient 实现​
client = tos.VectorClient(ak, sk, endpoint, region)​
​
# 创建查询向量数据,维度为128的浮点向量​
query_vector = VectorData(float32=[float(random.random()) for _ in range(128)])​
​
# 执行向量搜索,返回最相似的5个向量​
result = client.query_vectors(​
vector_bucket_name=vector_bucket_name,​
account_id=account_id,​
index_name=index_name,​
query_vector=query_vector,​
top_k=5, # 返回最相似的5个向量​
return_distance=True, # 返回向量距离​
return_metadata=True # 返回向量元数据​
)​
​
# 打印请求信息​
print('Request ID: {}'.format(result.request_id))​
print('Status Code: {}'.format(result.status_code))​
print('Found {} similar vectors'.format(len(result.vectors)))​
​
# 打印搜索结果​
for i, vector in enumerate(result.vectors):​
print('\nTop {}:'.format(i + 1))​
print(' Key: {}'.format(vector.key))​
print(' Distance: {:.4f}'.format(vector.distance))​
print(' Metadata: {}'.format(vector.metadata))​
if vector.data and vector.data.float32:​
print(' Vector dimension: {}'.format(len(vector.data.float32)))​
​
except tos.exceptions.TosClientError as e:​
# 操作失败,捕获客户端异常,一般情况为非法请求参数或网络异常​
print('fail with client error, message:{}, cause: {}'.format(e.message, e.cause))​
except tos.exceptions.TosServerError as e:​
# 操作失败,捕获服务端异常,可从返回信息中获取详细错误信息​
print('fail with server error, code: {}'.format(e.code))​
# request id 可定位具体问题,强烈建议日志中保存​
print('error with request id: {}'.format(e.request_id))​
print('error with message: {}'.format(e.message))​
print('error with http code: {}'.format(e.status_code))​
print('error with ec: {}'.format(e.ec))​
print('error with request url: {}'.format(e.request_url))​
except Exception as e:​
print('fail with unknown error: {}'.format(e))​
​
相关文档​
关于 QueryVectors 的 API 文档,请参见 QueryVectors。​
​
最近更新时间:2026.07.31 10:34:30
这个页面对您有帮助吗?
有用
有用
无用
无用