Create a Fusion mode vector index (Java SDK V2)

Updated at:

This topic describes how to call the PutVectorIndexFusion operation by using the OSS Java SDK V2 to create a Fusion mode vector index in a vector bucket.

Note

Fusion Mode is currently in invitational preview and is available only in the Indonesia (Jakarta) region. For creating a vector index in Standard Mode, see Create a vector index (Java SDK V2).

Permissions

By default, an Alibaba Cloud account has full permissions. RAM users and RAM roles have no permissions by default. The Alibaba Cloud account owner or an administrator must grant the required permissions by using a RAM policy or a bucket policy.

API

Actions

Description

PutVectorIndexFusion

oss:PutVectorIndex

Creates a Fusion mode vector index.

Sample code

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.AnalyzerParameters;
import com.aliyun.sdk.service.oss2.vectors.models.AnalyzerType;
import com.aliyun.sdk.service.oss2.vectors.models.DistanceMetricType;
import com.aliyun.sdk.service.oss2.vectors.models.FieldSchema;
import com.aliyun.sdk.service.oss2.vectors.models.FieldType;
import com.aliyun.sdk.service.oss2.vectors.models.IndexModeType;
import com.aliyun.sdk.service.oss2.vectors.models.PutVectorIndexFusionRequest;
import com.aliyun.sdk.service.oss2.vectors.models.PutVectorIndexFusionResult;
import com.aliyun.sdk.service.oss2.vectors.models.SchemaConfiguration;
import com.aliyun.sdk.service.oss2.vectors.models.TextSchema;
import com.aliyun.sdk.service.oss2.vectors.models.VectorDataType;

import java.util.Arrays;
import java.util.List;

public class PutVectorIndexFusionSample {
    public static void main(String[] args) {
        CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();

        try (OSSVectorsClient client = OSSVectorsClient.newBuilder()
                .region("cn-hangzhou")
                .accountId("1234567890")
                .credentialsProvider(provider)
                .build()) {

            String bucket = "examplebucket";
            String indexName = "exampleindex";

            // Define the vector field.
            FieldSchema vectorField = FieldSchema.newBuilder()
                    .name("vector_1")
                    .type(FieldType.VECTOR)
                    .dataType(VectorDataType.FLOAT32)
                    .dimension(1024)
                    .distanceMetric(DistanceMetricType.COSINE)
                    .build();

            // Define the partition key field. Only one string field can be the partition key.
            FieldSchema partitionKey = FieldSchema.newBuilder()
                    .name("user_id")
                    .type(FieldType.STRING)
                    .isPartitionKey(true)
                    .build();

            // Define a string field with full-text search enabled.
            FieldSchema title = FieldSchema.newBuilder()
                    .name("title")
                    .type(FieldType.STRING)
                    .exactMatch(true)
                    .text(TextSchema.newBuilder()
                            .enabled(true)
                            .analyzer(AnalyzerType.STANDARD)
                            .analyzerParameters(AnalyzerParameters.newBuilder()
                                    .caseSensitive(false)
                                    .delimitWord(false)
                                    .build())
                            .build())
                    .build();

            // Define an array field.
            FieldSchema timestamps = FieldSchema.newBuilder()
                    .name("timestamps")
                    .type(FieldType.LONG)
                    .isArray(true)
                    .build();

            List<FieldSchema> fields = Arrays.asList(vectorField, partitionKey, title, timestamps);

            // Build the request. The mode is FUSION by default.
            PutVectorIndexFusionRequest request = PutVectorIndexFusionRequest.newBuilder()
                    .bucket(bucket)
                    .indexName(indexName)
                    .mode(IndexModeType.FUSION)
                    .schemaConfiguration(SchemaConfiguration.newBuilder().fields(fields).build())
                    .build();

            PutVectorIndexFusionResult result = client.putVectorIndexFusion(request);

            System.out.printf("Status code:%d, request id:%s%n",
                    result.statusCode(), result.requestId());
        }
    }
}