All Products
Search
Document Center

:Pencarian vektor (Go SDK v2)

Last Updated:Apr 03, 2026

Pencarian vektor OSS memungkinkan Anda menemukan objek tertentu secara cepat dalam set data besar dengan mengkueri konten semantiknya, metadata OSS, metadata multimedia, ETag objek, tag, dan metadata kustom. Topik ini menjelaskan cara menggunakan Go SDK v2 untuk melakukan pencarian vektor.

Catatan penggunaan

  • Kode contoh dalam topik ini ditujukan untuk wilayah China (Hangzhou) (ID wilayah: cn-hangzhou) dan menggunakan titik akhir publik secara default. Jika Anda ingin mengakses OSS dari produk Alibaba Cloud lain di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut mengenai wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan titik akhir.

  • Topik ini memberikan contoh pembacaan kredensial akses dari variabel lingkungan. Untuk informasi tentang cara mengonfigurasi kredensial akses, lihat Konfigurasi kredensial akses.

Contoh

Aktifkan pencarian vektor

Kode berikut menunjukkan cara mengaktifkan pencarian vektor untuk bucket tertentu.

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"
)

var (
	region     string
	bucketName string
)

func init() {
	// Tetapkan flag command line untuk menentukan wilayah.
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	// Tetapkan flag command line untuk menentukan nama bucket.
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}

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

	// Buat konfigurasi client dan gunakan kredensial dari variabel lingkungan.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Buat client OSS.

	// Buat permintaan untuk mengaktifkan AISearch pada bucket yang ditentukan.
	request := &oss.OpenMetaQueryRequest{
		Bucket: oss.Ptr(bucketName),
		Mode:   oss.Ptr("semantic"), // Atur mode ke "semantic" untuk mengaktifkan kemampuan pencarian semantik.
	}
	result, err := client.OpenMetaQuery(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal membuka meta query %v", err)
	}

	log.Printf("hasil open meta query:%#v\n", result)
}

Dapatkan status indeks metadata

Kode berikut menunjukkan cara mendapatkan status pustaka indeks metadata untuk bucket tertentu.

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"
)

var (
	region     string 
	bucketName string
)

func init() {
	// Tetapkan flag command line untuk menentukan wilayah.
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	// Tetapkan flag command line untuk menentukan nama bucket.
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}

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

	// Buat konfigurasi client dan gunakan kredensial dari variabel lingkungan serta wilayah yang ditentukan.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Buat client OSS.

	// Buat permintaan untuk mendapatkan status pustaka indeks metadata.
	request := &oss.GetMetaQueryStatusRequest{
		Bucket: oss.Ptr(bucketName), // Tentukan bucket yang akan dikueri.
	}
	result, err := client.GetMetaQueryStatus(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal mendapatkan status meta query %v", err)
	}

	log.Printf("hasil get meta query status:%#v\n", result)
}

Kueri objek

Kode berikut menunjukkan cara menggunakan pencarian vektor untuk mengkueri objek yang sesuai dengan kriteria semantik tertentu.

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"
)

var (
	region     string
	bucketName string
)

func init() {
	// Tetapkan flag command line untuk menentukan wilayah.
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	// Tetapkan flag command line untuk menentukan nama bucket.
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}

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

	// Buat konfigurasi client dan gunakan kredensial dari variabel lingkungan serta wilayah yang ditentukan.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Buat client OSS.

	// Lakukan operasi AISearch.
	request := &oss.DoMetaQueryRequest{
		Bucket: oss.Ptr(bucketName),
		Mode:   oss.Ptr("semantic"),
		MetaQuery: &oss.MetaQuery{
			MaxResults: oss.Ptr(int64(99)),
			Query:      oss.Ptr("Overlook the snow-covered forest"), // Berikan string kueri semantik. Ini adalah contoh.
			MediaTypes: &oss.MetaQueryMediaTypes{
				MediaTypes: []string{"image"}, // Tentukan jenis media yang akan dicari. Pada contoh ini, "image".
			},
			SimpleQuery: oss.Ptr(`{"Operation":"gt", "Field": "Size", "Value": "30"}`),
		},
	}
	result, err := client.DoMetaQuery(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal melakukan meta query %v", err)
	}

	log.Printf("hasil do meta query:%#v\n", result)
}

Nonaktifkan pencarian vektor

Kode berikut menunjukkan cara menonaktifkan pencarian vektor untuk bucket tertentu.

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" 
)

var (
	region     string
	bucketName string
)

func init() {
	// Tetapkan flag command line untuk menentukan wilayah.
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	// Tetapkan flag command line untuk menentukan nama bucket.
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}


func main() {
	flag.Parse()

	// Periksa apakah nama bucket telah diberikan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket wajib diisi")
	}

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

	// Buat konfigurasi client dan gunakan kredensial dari variabel lingkungan serta wilayah yang ditentukan.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Buat client OSS.

	// Buat permintaan untuk menonaktifkan AISearch pada bucket yang ditentukan.
	request := &oss.CloseMetaQueryRequest{
		Bucket: oss.Ptr(bucketName), // Tentukan bucket target.
	}
	result, err := client.CloseMetaQuery(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menutup meta query %v", err)
	}

	log.Printf("hasil close meta query:%#v\n", result)
}

Referensi