All Products
Search
Document Center

Object Storage Service:Ambil vektor (Go SDK V2)

Last Updated:Jun 04, 2026

Anda dapat menggunakan kit pengembangan perangkat lunak (software development kit/SDK) Go V2 untuk memanggil operasi QueryVectors dan melakukan pencarian kemiripan dalam indeks vektor.

Izin

Akun Alibaba Cloud memiliki semua izin secara default. Pengguna Resource Access Management (RAM) atau Peran RAM di bawah Akun Alibaba Cloud tidak memiliki izin secara default. Akun Alibaba Cloud atau administrator harus memberikan izin untuk operasi tersebut melalui ikhtisar kebijakan RAM atau kebijakan bucket.

API

Action

Deskripsi

QueryVectors

oss:QueryVectors

Menanyakan 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 selengkapnya, lihat QueryVectorsRequest.

optFns

...func(*Options)

(Opsional) Parameter konfigurasi tingkat antarmuka.

Untuk informasi selengkapnya, lihat Options.

Nilai kembali

Parameter

Tipe

Deskripsi

result

*QueryVectorsResult

Nilai kembali. Parameter ini hanya valid jika err bernilai nil. Untuk informasi selengkapnya, lihat QueryVectorsResult.

err

error

Pesan kesalahan. Jika operasi berhasil, parameter ini bernilai 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 Alibaba Cloud.")
	flag.StringVar(&indexName, "index", "", "Nama indeks vektor.")
}

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

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

	if len(accountId) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, account-id wajib diisi")
	}

	if len(indexName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, index wajib diisi")
	}

	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region).WithAccountId(accountId).
		// Untuk mengakses melalui internet publik, atur nilai ini menjadi false atau hapus baris ini.
		WithUseInternalEndpoint(true)

	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 kueri vektor:%#v\n", result)
}

Referensi

Untuk kode contoh lengkap tentang kueri vektor, lihat query_vectors.go.