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