All Products
Search
Document Center

Object Storage Service:Mengambil Vektor (Go SDK V2)

Last Updated:Nov 09, 2025

Gunakan Go Software Development Kit (SDK) V2 untuk memanggil operasi QueryVectors dan melakukan pencarian kesamaan dalam indeks vektor.

Izin

Akun Alibaba Cloud memiliki semua izin secara default. Pengguna Resource Access Management (RAM) atau Peran RAM 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

QueryVectors

oss:QueryVectors

Mengambil data vektor.

Definisi Metode

func (c *VectorsClient) QueryVectors(ctx context.Context, request *QueryVectorsRequest, optFns ...func(*oss.Options)) (*QueryVectorsResult, error) 

Parameter Permintaan

Parameter

Tipe

Deskripsi

ctx

context.Context

Konteks permintaan.

request

*QueryVectorsRequest

Menetapkan parameter permintaan, termasuk vektor kueri, kondisi filter, dan jumlah hasil yang akan dikembalikan. Untuk informasi lebih lanjut, lihat QueryVectorsRequest.

optFns

...func(*Options)

(Opsional) Parameter konfigurasi tingkat antarmuka.

Untuk informasi lebih lanjut, lihat Options.

Nilai Kembali

Parameter

Tipe

Deskripsi

result

*QueryVectorsResult

Nilai kembali. Parameter ini valid hanya jika `err` adalah nil. Untuk informasi lebih lanjut, lihat QueryVectorsResult.

err

error

Pesan kesalahan. Jika operasi berhasil, parameter ini adalah 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.QueryVectorsRequest{
		Bucket:    oss.Ptr(bucketName),
		IndexName: oss.Ptr(indexName),
		Filter: map[string]any{
			"$and": []map[string]any{
				{
					"type": map[string]any{
						"$in": []string{"comedy", "documentary"},
					},
				},
			},
		},
		QueryVector: map[string]any{
			"float32": []float32{float32(32)},
		},
		ReturnMetadata: oss.Ptr(true),
		ReturnDistance: oss.Ptr(true),
		TopK:           oss.Ptr(10),
	}
	result, err := client.QueryVectors(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal mengambil vektor %v", err)
	}
	log.Printf("hasil pengambilan vektor:%#v\n", result)
}

Referensi

Untuk kode contoh lengkap mengenai cara mengambil vektor, lihat query_vectors.go.