All Products
Search
Document Center

Object Storage Service:Pencarian Vektor (Go SDK V2)

Last Updated:Nov 09, 2025

Pencarian Vektor memungkinkan Anda mencari objek target secara cepat di antara banyak objek berdasarkan kondisi seperti konten semantik, metadata objek, metadata multimedia, ETags objek dan tag, serta metadata kustom. Fitur ini meningkatkan efisiensi pencarian. Topik ini menjelaskan cara melakukan Pencarian Vektor menggunakan Object Storage Service (OSS) SDK untuk Go 2.0.

Catatan penggunaan

  • Kode contoh dalam topik ini menggunakan Wilayah China (Hangzhou) (cn-hangzhou) sebagai contoh. Secara default, Titik akhir publik digunakan untuk mengakses sumber daya dalam bucket. Jika Anda mengakses sumber daya dari layanan Alibaba Cloud lainnya di wilayah yang sama dengan bucket, gunakan Titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir OSS, lihat Wilayah dan Titik Akhir OSS.

  • Dalam topik ini, kredensial akses yang diperoleh dari variabel lingkungan digunakan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasi Kredensial Akses.

Contoh

Aktifkan fitur AISearch

Berikut adalah kode contoh untuk mengaktifkan Pencarian Vektor pada sebuah bucket:

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
)

// Fungsi init dieksekusi sebelum fungsi utama untuk menginisialisasi program.
func init() {
	// Gunakan parameter baris perintah untuk menentukan wilayah.
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	// Gunakan parameter baris perintah untuk menentukan nama bucket.
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	flag.Parse() // Parsing parameter baris perintah.

	// Periksa apakah nama bucket ditentukan. Jika nama bucket tidak ditentukan, kembalikan parameter default dan keluar dari program.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah wilayah ditentukan. Jika wilayah tidak ditentukan, kembalikan parameter default dan keluar dari program.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Buat dan konfigurasikan klien dan gunakan variabel lingkungan untuk melewati penyedia kredensial.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Gunakan konfigurasi klien untuk membuat instance OSSClient baru.

	// Buat permintaan OpenMetaQuery untuk mengaktifkan Pencarian Vektor untuk bucket tertentu.
	request := &oss.OpenMetaQueryRequest{
		Bucket: oss.Ptr(bucketName),
		Mode: oss.Ptr("semantic"), // Atur Mode ke semantic, yang menentukan bahwa Pencarian Vektor diaktifkan.
	}
	result, err := client.OpenMetaQuery(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal membuka meta query %v", err)
	}

	log.Printf("hasil pembukaan meta query:%#v\n", result) // Tampilkan hasil permintaan.
}

Kueri pustaka indeks metadata sebuah bucket

Berikut adalah kode contoh untuk mengkueri pustaka indeks metadata sebuah bucket:

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() {
	// Gunakan parameter baris perintah untuk menentukan wilayah.
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	// Gunakan parameter baris perintah untuk menentukan nama bucket.
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	flag.Parse() // Parsing parameter baris perintah.

	// Periksa apakah nama bucket ditentukan. Jika nama bucket tidak ditentukan, kembalikan parameter default dan keluar dari program.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan") // Catat kesalahan dan keluar dari program.
	}

	// Periksa apakah wilayah ditentukan. Jika wilayah tidak ditentukan, kembalikan parameter default dan keluar dari program.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan") // Catat kesalahan dan keluar dari program.
	}

	// Buat dan konfigurasikan klien dan gunakan variabel lingkungan untuk melewati penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Buat instance OSSClient baru.

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

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

Kueri objek yang memenuhi kondisi tertentu

Berikut adalah kode contoh untuk menggunakan Pencarian Vektor guna mengkueri objek yang memenuhi kondisi 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() {
	// Gunakan parameter baris perintah untuk menentukan wilayah. Secara default, parameter tersebut adalah string kosong.
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	// Gunakan parameter baris perintah untuk menentukan nama bucket. Secara default, parameter tersebut adalah string kosong.
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	flag.Parse() // Parsing parameter baris perintah.

	// Periksa apakah nama bucket ditentukan. Jika nama bucket tidak ditentukan, kembalikan parameter default dan keluar dari program.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah wilayah ditentukan. Jika wilayah tidak ditentukan, kembalikan parameter default dan keluar dari program.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Buat dan konfigurasikan klien dan gunakan variabel lingkungan untuk melewati penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Gunakan konfigurasi klien untuk membuat instance OSSClient baru.

	// Lakukan Pencarian Vektor untuk mengkueri objek yang memenuhi kondisi semantik tertentu.
	request := &oss.DoMetaQueryRequest{
		Bucket: oss.Ptr(bucketName),
		Mode:   oss.Ptr("semantic"),
		MetaQuery: &oss.MetaQuery{
			MaxResults:  oss.Ptr(int64(99)),
			Query: oss.Ptr("Lihat hutan bersalju"), // Tentukan konten semantik.
			MediaType: oss.Ptr("image"), // Tentukan jenis media yang akan dikueri. Dalam contoh ini, jenis medianya diatur ke gambar.
			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 meta query:%#v\n", result)
}

Nonaktifkan AISearch

Berikut adalah kode contoh untuk menonaktifkan Pencarian Vektor pada sebuah bucket:

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() {
	// Gunakan parameter baris perintah untuk menentukan wilayah.
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	// Gunakan parameter baris perintah untuk menentukan nama bucket.
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}


func main() {
	flag.Parse() // Parsing parameter baris perintah.

	// Periksa apakah nama bucket ditentukan. Jika nama bucket tidak ditentukan, kembalikan parameter default dan keluar dari program.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan") // Catat kesalahan dan keluar dari program.
	}

	// Periksa apakah wilayah ditentukan. Jika wilayah tidak ditentukan, kembalikan parameter default dan keluar dari program.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Buat dan konfigurasikan klien dan gunakan variabel lingkungan untuk melewati penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	client := oss.NewClient(cfg) // Buat instance OSSClient baru.

	// Buat permintaan CloseMetaQuery untuk menonaktifkan fitur manajemen metadata untuk bucket tertentu.
	request := &oss.CloseMetaQueryRequest{
		Bucket: oss.Ptr(bucketName), // Tentukan nama bucket.
	}
	result, err := client.CloseMetaQuery(context.TODO(), request) // Eksekusi permintaan untuk menonaktifkan fitur manajemen metadata untuk bucket.
	if err != nil {
		log.Fatalf("gagal menutup meta query %v", err)
	}

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

Referensi

  • Untuk informasi lebih lanjut, lihat AISearch.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengelola pengindeksan data, lihat Pengindeksan Data.

  • Untuk kode contoh lengkap yang digunakan untuk mengelola Pencarian Vektor, kunjungi GitHub.