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

对象存储

复制全文
下载 pdf
向量
QueryVectors(TOS Vectors Java SDK)
复制全文
下载 pdf
QueryVectors(TOS Vectors Java SDK)
QueryVectors 接口用于检索与目标向量最相似的向量列表,本文介绍如何通过 TOS Vectors Java SDK 的 QueryVectors 接口执行向量相似度查询并返回 TopK 结果。​
注意事项​
  • 为了防止密钥泄露,本文示例代码需要从环境变量中读取 Access Key ID 和 Secret Access Key。因此使用 SDK 前,您需要配置长期访问凭证,详细介绍,请参见 配置长期访问凭证。​
  • TOS Vectors Java SDK 支持使用临时访问凭证;也支持配置超时机制、重试策略等多种机制,您可以根据业务需求灵活设置,提升应用安全性,详细介绍,请参见 常见配置场景。​
权限说明​
主账号默认拥有全部权限,但是 IAM 用户默认没有任何权限。如果您需要使用 IAM 用户执行 QueryVectors 操作,主账号需通过 IAM策略和桶策略为该 IAM 用户授予以下权限:tosvectors:QueryVectors​
代码示例​
查询距离最近 TopK 向量​
​
// 查询距离最近TopK向量​
import com.volcengine.tos.TOSVectorsClientBuilder;​
import com.volcengine.tos.TOSVectors;​
import com.volcengine.tos.TosClientException;​
import com.volcengine.tos.TosServerException;​
import com.volcengine.tos.model.vectors.QueryVectorsInput;​
import com.volcengine.tos.model.vectors.QueryVectorsOutput;​
import com.volcengine.tos.model.vectors.VectorData;​
import com.volcengine.tos.model.vectors.DistanceVector;​
​
import java.util.HashMap;​
import java.util.Map;​
​
public class QueryVectorsExample {​
public static void main(String[] args) {​
String endpoint = "Provide your endpoint";​
String region = "Provide your region";​
String accessKey = System.getenv("TOS_ACCESS_KEY");​
String secretKey = System.getenv("TOS_SECRET_KEY");​
String accountID = System.getenv("TOS_ACCOUNT_ID");​
​
// 填写 BucketName​
String bucketName = "Provide your bucket name";​
​
// 初始化客户端​
TOSVectors client = new TOSVectorsClientBuilder().build(region, endpoint, accessKey, secretKey);​
​
try {​
// 准备查询向量数据(128维浮点向量)​
float[] queryVector = new float[128];​
for (int i = 0; i < 128; i++) {​
queryVector[i] = (float) Math.random();​
}​
​
// 设置过滤条件(可选)​
// Map<String, Object> filter = new HashMap<>();​
// filter.put("category", "A");​
​
// 构建查询请求​
QueryVectorsInput input = QueryVectorsInput.builder()​
.vectorBucketName(bucketName)​
.accountId(accountID)​
.indexName("testindex") // 替换为实际的索引名称​
.topK(5) // 查询最相似的5个向量​
.returnDistance(true) // 返回距离信息​
.returnMetadata(true) // 返回元数据信息​
.queryVector(VectorData.builder().float32(queryVector).build())​
//.filter(filter) // 可选:添加过滤条件​
.build();​
​
// 执行查询​
QueryVectorsOutput output = client.queryVectors(input);​
​
// 处理查询结果​
System.out.println("RequestID: " + output.getRequestInfo().getRequestId());​
System.out.println("StatusCode: " + output.getRequestInfo().getStatusCode());​
​
if (output.getVectors() != null && !output.getVectors().isEmpty()) {​
System.out.println("查询到 " + output.getVectors().size() + " 个相似向量:");​
for (int i = 0; i < output.getVectors().size(); i++) {​
DistanceVector vector = output.getVectors().get(i);​
System.out.println("向量 " + (i + 1) + ":");​
System.out.println(" Key: " + vector.getKey());​
System.out.println(" Distance: " + vector.getDistance());​
if (vector.getMetadata() != null) {​
System.out.println(" Metadata: " + vector.getMetadata());​
}​
}​
} else {​
System.out.println("未查询到相似向量");​
}​
​
} catch (TosClientException e) {​
// 操作失败,捕获客户端异常,一般情况是请求参数错误,此时请求并未发送​
System.out.println("操作失败");​
System.out.println("Message: " + e.getMessage());​
if (e.getCause() != null) {​
e.getCause().printStackTrace();​
}​
} catch (TosServerException e) {​
// 操作失败,捕获服务端异常,可以获取到从服务端返回的详细错误信息​
System.out.println("操作失败");​
System.out.println("StatusCode: " + e.getStatusCode());​
System.out.println("Code: " + e.getCode());​
System.out.println("Message: " + e.getMessage());​
System.out.println("RequestID: " + e.getRequestID());​
} catch (Throwable t) {​
// 作为兜底捕获其他异常,一般不会执行到这里​
System.out.println("操作失败");​
System.out.println("unexpected exception, message: " + t.getMessage());​
}​
}​
}​
​
​
最近更新时间:2026.08.10 17:31:39
这个页面对您有帮助吗?
有用
有用
无用
无用