本文介绍如何使用 OSS Java SDK V2 调用 PutVectorIndexFusion 接口在向量Bucket中创建Fusion模式的向量索引(Index)。
说明
Fusion Mode 目前处于邀测阶段,仅在印度尼西亚(雅加达)地域提供。Standard 模式向量索引的创建请参见 创建向量Index(Java SDK V2)。
权限说明
阿里云账号默认拥有全部权限。阿里云账号下的 RAM 用户或 RAM 角色默认没有任何权限,需要阿里云账号或账号管理员通过 RAM Policy 或 Bucket Policy 授予操作权限。
|
API |
Action |
说明 |
|
PutVectorIndexFusion |
oss:PutVectorIndex |
创建Fusion模式的向量索引(Index)。 |
示例代码
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";
// 定义向量字段
FieldSchema vectorField = FieldSchema.newBuilder()
.name("vector_1")
.type(FieldType.VECTOR)
.dataType(VectorDataType.FLOAT32)
.dimension(1024)
.distanceMetric(DistanceMetricType.COSINE)
.build();
// 定义分区键字段(仅支持一个 String 类型字段作为分区键)
FieldSchema partitionKey = FieldSchema.newBuilder()
.name("user_id")
.type(FieldType.STRING)
.isPartitionKey(true)
.build();
// 定义启用全文检索的字符串字段
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();
// 定义数组字段
FieldSchema timestamps = FieldSchema.newBuilder()
.name("timestamps")
.type(FieldType.LONG)
.isArray(true)
.build();
List<FieldSchema> fields = Arrays.asList(vectorField, partitionKey, title, timestamps);
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());
}
}
}
该文章对您有帮助吗?