Panggil PutDataPipelineConfiguration melalui OSS Java SDK V2 untuk membuat aturan pipa data (DataPipeline). Setelah aturan dibuat, OSS secara otomatis memanggil Alibaba Cloud Model Studio untuk melakukan penyematan (vectorize) data mentah di bucket sumber dan menulis data vektor ke indeks yang ditentukan di bucket vektor.
Prasyarat
OSS Java SDK V2 telah diinstal. Jika Anda menggunakan Maven, tambahkan dependensi
com.aliyun:alibabacloud-oss-v2ke file pom.xml Anda.Kredensial akses dikonfigurasi menggunakan variabel lingkungan. Contoh dalam topik ini menggunakan
EnvironmentVariableCredentialsProvideruntuk membaca kredensial dari variabel lingkunganOSS_ACCESS_KEY_IDdanOSS_ACCESS_KEY_SECRET.Operasi DataPipeline diteruskan oleh OSS ke layanan alur kerja (workflow) yang mendasarinya. Pastikan bucket sumber dan bucket vektor tujuan berada di Wilayah yang sama.
Kode contoh
import com.aliyun.sdk.service.oss2.credentials.CredentialsProvider;
import com.aliyun.sdk.service.oss2.credentials.EnvironmentVariableCredentialsProvider;
import com.aliyun.sdk.service.oss2.dataprocess.OSSDataProcessClient;
import com.aliyun.sdk.service.oss2.dataprocess.models.*;
import java.util.Arrays;
import java.util.Collections;
public class PutDataPipelineConfigurationSample {
public static void main(String[] args) throws Exception {
String role = "acs:ram::<AccountId>:role/my-data-pipeline-role";
CredentialsProvider provider = new EnvironmentVariableCredentialsProvider();
try (OSSDataProcessClient client = OSSDataProcessClient.newBuilder()
.region("cn-hangzhou")
.credentialsProvider(provider)
.build()) {
DataPipelineSourceFilterConfiguration filterConfig =
DataPipelineSourceFilterConfiguration.newBuilder()
.prefixSet(Arrays.asList("data/"))
.objectMediaTypes(Arrays.asList("image", "video"))
.build();
DataPipelineSource source = DataPipelineSource.newBuilder()
.inputBucket("my-bucket")
.inputDataScope("All")
.ignoreDelete(true)
.filterConfiguration(filterConfig)
.build();
DataPipelineEmbeddingConfiguration embeddingConfig =
DataPipelineEmbeddingConfiguration.newBuilder()
.embeddingProvider("bailian")
.apiKey("sk-xxxx")
.model("qwen2.5-vl-embedding")
.fps(1.0f)
.build();
DataPipelineDestination destination = DataPipelineDestination.newBuilder()
.vectorBucketName("my-vector-bucket")
.vectorIndexNames(Collections.singletonList("my-index"))
.build();
PutDataPipelineConfigurationConfiguration config =
PutDataPipelineConfigurationConfiguration.newBuilder()
.dataPipelineDescription("Contoh pipa data")
.sources(Collections.singletonList(source))
.dataPipelineEmbeddingConfiguration(embeddingConfig)
.destination(destination)
.build();
PutDataPipelineConfigurationResult result = client.putDataPipelineConfiguration(
PutDataPipelineConfigurationRequest.newBuilder()
.dataPipelineName("my-data-pipeline")
.role(role)
.putDataPipelineConfigurationConfiguration(config)
.build());
System.out.printf("Kode status:%d, ID permintaan:%s%n",
result.statusCode(), result.requestId());
} catch (Exception e) {
System.out.printf("error:%n%s", e);
}
}
}Referensi
Untuk kode contoh sinkron, lihat PutDataPipelineConfiguration.java.
Untuk kode contoh asinkron, lihat PutDataPipelineConfigurationAsync.java.