この記事では、OSS Java SDK V2 を使用して QueryVectors API を呼び出し、指定したベクトルインデックスからクエリベクトルに最も類似するベクトルを取得する方法を説明します。
権限
Alibaba Cloud アカウントにはデフォルトでフル権限がありますが、RAM ユーザーと RAM ロールには権限がありません。Alibaba Cloud アカウントの所有者または管理者は、RAM ポリシーまたはバケットポリシーを使用してアクセス権限を付与する必要があります。
API | アクション | 説明 |
QueryVectors | oss:QueryVectors | 類似性クエリを使用してベクトルを取得します。 |
サンプルコード
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.vectors.OSSVectorsClient;
import com.aliyun.sdk.service.oss2.vectors.models.QueryVectorsRequest;
import com.aliyun.sdk.service.oss2.vectors.models.QueryVectorsResult;
import java.util.*;
public class QueryVectorsSample {
public static void main(String[] args) throws Exception {
CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
try (OSSVectorsClient client = OSSVectorsClient.newBuilder()
.region("cn-hangzhou")
.accountId("1234567890")
.credentialsProvider(provider)
.build()) {
Map<String, Object> queryVector = new HashMap<>();
queryVector.put("float32", new float[]{0.1f, 0.2f, 0.3f});
QueryVectorsRequest request = QueryVectorsRequest.newBuilder()
.bucket("examplebucket")
.indexName("exampleindex")
.queryVector(queryVector)
.topK(10)
.returnDistance(true)
.returnMetadata(false)
.build();
QueryVectorsResult result = client.queryVectors(request);
System.out.printf("status code: %d, request id: %s%n", result.statusCode(), result.requestId());
}
}
}関連ドキュメント
同期のコードサンプルについては、QueryVectors.java をご参照ください。
非同期のコードサンプルについては、QueryVectorsAsync.java をご参照ください。