通過 OSS Go SDK V2 調用 PutDataPipelineConfiguration 建立一條資料管道(DataPipeline)規則。規則建立後,OSS 自動調用您的阿里雲百鍊對源 Bucket 中的未經處理資料進行向量化,並寫入向量 Bucket 的指定 Index。
前提條件
已安裝 OSS Go SDK V2,可通過
go get github.com/aliyun/alibabacloud-oss-go-sdk-v2擷取。已通過環境變數配置訪問憑證。本文樣本使用
credentials.NewEnvironmentVariableCredentialsProvider()從環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET讀取憑證。
範例程式碼
package main
import (
"context"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/dataprocess"
)
func main() {
region := "cn-hangzhou"
role := "acs:ram::<AccountId>:role/my-data-pipeline-role"
apiKey := "sk-xxxx"
dataPipelineName := "my-data-pipeline"
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
client := dataprocess.NewClient(cfg)
result, err := client.PutDataPipelineConfiguration(context.TODO(), &dataprocess.PutDataPipelineConfigurationRequest{
DataPipelineName: oss.Ptr(dataPipelineName),
Role: oss.Ptr(role),
DataPipelineConfiguration: &dataprocess.DataPipelineConfiguration{
DataPipelineDescription: oss.Ptr("Vectorize business data using the BERT multimodal model"),
Sources: []dataprocess.DataPipelineSource{
{
InputBucket: oss.Ptr("bucket"),
InputDataScope: oss.Ptr("All"),
FilterConfiguration: &dataprocess.DataPipelineSourceFilterConfiguration{
PrefixSet: []string{"prefix1"},
ObjectMediaTypes: []string{"text"},
},
},
},
DataPipelineEmbeddingConfiguration: &dataprocess.DataPipelineEmbeddingConfiguration{
ApiKey: oss.Ptr(apiKey),
EmbeddingProvider: oss.Ptr("bailian"),
FPS: oss.Ptr(float64(1)),
Model: oss.Ptr("qwen2.5-vl-embedding"),
},
Destination: &dataprocess.DataPipelineDestination{
VectorBucketName: oss.Ptr("my-vector-bucket"),
VectorIndexNames: []string{"index"},
VectorKeyPrefix: oss.Ptr("prefix"),
ObjectTagToMetadata: []string{"key1"},
UsermetaToMetadata: []string{"x-oss-meta-key1"},
},
DataPipelineError: &dataprocess.DataPipelineError{
ErrorMode: oss.Ptr("ignoreAndRecord"),
ErrorBucket: oss.Ptr("my-error-bucket"),
ErrorPrefix: oss.Ptr("error-output/"),
},
},
})
if err != nil {
log.Fatalf("failed to put pipeline configuration %v", err)
}
log.Printf("put pipeline configuration result:%#v\n", result)
}
相關文檔
完整範例程式碼,請參見 put_data_pipeline_configuration.go。