全部产品
Search
文档中心

Object Storage Service:Buat indeks vektor (Go SDK V2)

更新时间:Nov 09, 2025

Gunakan Go SDK V2 untuk memanggil operasi PutVectorIndex guna membuat indeks vektor dalam bucket vektor.

Izin

Secara default, Akun Alibaba Cloud memiliki semua izin. Pengguna Manajemen Akses Sumber Daya (RAM) dan Peran RAM di bawah Akun Alibaba Cloud tidak memiliki izin secara default. Administrator Akun Alibaba Cloud harus memberikan izin kepada Pengguna RAM atau Peran RAM menggunakan Kebijakan RAM atau Kebijakan bucket.

API

Aksi

Deskripsi

PutVectorIndex

oss:PutVectorIndex

Membuat indeks vektor.

Definisi metode

func (c *VectorsClient) PutVectorIndex(ctx context.Context, request *PutVectorIndexRequest, optFns ...func(*oss.Options)) (*PutVectorIndexResult, error) 

Parameter permintaan

Parameter

Tipe

Deskripsi

ctx

context.Context

Konteks permintaan.

request

*PutVectorIndexRequest

Parameter permintaan. Untuk informasi lebih lanjut, lihat PutVectorIndexRequest.

optFns

...func(*Options)

(Opsional) Parameter konfigurasi tingkat operasi.

Untuk informasi lebih lanjut, lihat Options.

Nilai kembali

Parameter

Tipe

Deskripsi

result

*PutVectorIndexResult

Nilai kembali dari operasi. Parameter ini valid hanya jika err adalah nil. Untuk informasi lebih lanjut, lihat PutVectorIndexResult.

err

error

Status permintaan. Jika permintaan gagal, err bukan nil.

Kode contoh

package main

import (
	"context"
	"flag"
	"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/vectors"
)

var (
	region     string
	bucketName string
	accountId  string
	indexName  string
)

func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket vektor berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket vektor.")
	flag.StringVar(&accountId, "account-id", "", "ID akun vektor.")
	flag.StringVar(&indexName, "index", "", "Nama indeks vektor.")
}

func main() {
	flag.Parse()
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	if len(accountId) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, accountId diperlukan")
	}

	if len(indexName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, indeks diperlukan")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region).WithAccountId(accountId)

	client := vectors.NewVectorsClient(cfg)

	request := &vectors.PutVectorIndexRequest{
		Bucket:         oss.Ptr(bucketName),
		DataType:       oss.Ptr("float32"),
		Dimension:      oss.Ptr(128),
		DistanceMetric: oss.Ptr("cosine"),
		IndexName:      oss.Ptr(indexName),
		Metadata: map[string]any{
			"nonFilterableMetadataKeys": []string{"foo", "bar"},
		},
	}
	result, err := client.PutVectorIndex(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menempatkan indeks vektor %v", err)
	}
	log.Printf("hasil indeks vektor: %#v\n", result)
}

Referensi

Untuk kode contoh lengkap untuk membuat indeks vektor, lihat put_vector_index.go.