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 |
|
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(®ion, "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.