Gunakan Tablestore SDK for Go untuk mengkueri TopK baris yang vektornya paling mirip dengan vektor kueri.
Prasyarat
Sebelum memulai, selesaikan persiapan berikut:
-
Instal Tablestore Go SDK dan inisialisasi client.
-
Buat search index yang berisi bidang Vector. Untuk informasi selengkapnya, lihat Create a search index.
Deskripsi
Pencarian vektor menggunakan KnnVectorQuery untuk menghitung jarak antara vektor kueri dan vektor dalam bidang Vector, lalu mengembalikan TopK baris paling mirip. Anda dapat menggunakan Filter untuk membatasi kandidat dan MinScore untuk mengecualikan baris di bawah ambang batas skor tertentu.
Batasan berlaku terhadap jumlah dan dimensi bidang Vector serta parameter seperti TopK. Untuk informasi selengkapnya, lihat Search index limits.
Search index terdiri dari beberapa partisi server-side. Setiap partisi mengembalikan TopK baris terdekatnya sendiri, dan koordinator menggabungkan hasil tersebut. Oleh karena itu, saat menggunakan pagination berbasis token, jumlah total baris yang dapat diambil bergantung pada jumlah partisi indeks.
func (client *tablestore.TableStoreClient) Search(request *tablestore.SearchRequest) (*tablestore.SearchResponse, error)
query := &search.KnnVectorQuery{
FieldName: "embedding",
TopK: proto.Int32(10),
NumCandidates: proto.Int32(100),
Float32QueryVector: []float32{1, 0, 0, 0},
MinScore: proto.Float32(0.1),
Filter: &search.TermQuery{
FieldName: "category",
Term: "books",
},
}
searchQuery := search.NewSearchQuery().
SetQuery(query).
SetSort(&search.Sort{Sorters: []search.Sorter{search.NewScoreSort()}})
response, err := client.Search(&tablestore.SearchRequest{
TableName: "example_table",
IndexName: "example_vector_index",
SearchQuery: searchQuery,
ColumnsToGet: &tablestore.ColumnsToGet{
ReturnAllFromIndex: true,
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(response.SearchHits)
Parameter
Permintaan kueri
|
Name |
Type |
Description |
|
TableName (required) |
string |
Nama tabel data. |
|
IndexName (required) |
string |
Nama search index. |
|
SearchQuery (required) |
search.SearchQuery |
Kondisi kueri dan konfigurasi kueri umum. |
|
ColumnsToGet (optional) |
*tablestore.ColumnsToGet |
Konfigurasi kolom yang dikembalikan. Jika parameter ini dihilangkan, hanya kolom kunci primer yang dikembalikan. |
|
RoutingValues (optional) |
[]*tablestore.PrimaryKey |
Nilai kunci primer untuk bidang routing kustom. Hilangkan parameter ini jika routing kustom tidak dikonfigurasi. |
|
TimeoutMs (optional) |
*int32 |
Periode waktu tunggu permintaan dalam milidetik. |
Konfigurasi kueri
|
Name |
Type |
Description |
|
SetQuery (required) |
search.Query |
Menentukan kondisi kueri. |
|
SetOffset (optional) |
int32 |
Menentukan posisi awal. Nilai default: 0. Untuk pagination berbasis offset, Offset + Limit tidak boleh melebihi 100.000. |
|
SetLimit (optional) |
int32 |
Menentukan jumlah maksimum baris yang dikembalikan. Nilai default: 10. Nilai maksimum: 100. Nilai 0 tidak mengembalikan baris apa pun. |
|
SetCollapse (optional) |
*search.Collapse |
Melipat hasil kueri. Untuk informasi selengkapnya, lihat Collapse query results. |
|
SetSort (optional) |
*search.Sort |
Menentukan urutan pengurutan hasil. Untuk informasi selengkapnya, lihat Sort and paginate results. |
|
SetGetTotalCount (optional) |
bool |
Menentukan apakah akan menghitung semua baris yang sesuai. Nilai default: false. |
|
SetToken (optional) |
[]byte |
Menentukan nilai NextToken yang dikembalikan oleh respons sebelumnya. Metode ini menghapus Sort karena token berisi kondisi pengurutan halaman sebelumnya. Jangan tentukan Offset saat menggunakan pagination berbasis token. |
|
SetSearchFilter (optional) |
*search.SearchFilter |
Menerapkan filter pasca-kueri. Untuk informasi selengkapnya, lihat Use post-query filters. |
|
Aggregation (optional) |
...search.Aggregation |
Mengonfigurasi agregasi. Untuk informasi selengkapnya, lihat Aggregation. |
|
GroupBy (optional) |
...search.GroupBy |
Mengonfigurasi pengelompokan. Untuk informasi selengkapnya, lihat Aggregation. |
Kondisi kueri vektor
|
Name |
Type |
Description |
|
FieldName (required) |
string |
Nama bidang Vector. |
|
TopK (required) |
*int32 |
Jumlah baris terdekat yang dikembalikan. Nilai yang lebih besar umumnya meningkatkan Recall tetapi menambah latensi dan biaya. |
|
Float32QueryVector (required) |
[]float32 |
Vektor kueri. Dimensinya harus sesuai dengan konfigurasi bidang indeks. |
|
Filter (optional) |
search.Query |
Filter untuk baris kandidat. Semua jenis kueri kecuali pencarian vektor didukung. |
|
MinScore (optional) |
*float32 |
Ambang batas skor minimum. Nilainya harus lebih besar dari atau sama dengan 0. Nilai default: 0. Hanya baris dengan skor lebih besar dari nilai ini yang dikembalikan. |
|
NumCandidates (optional) |
*int32 |
Jumlah vektor kandidat untuk penyusunan ulang. Nilainya harus tidak kurang dari TopK. Nilai yang lebih besar umumnya meningkatkan Recall tetapi menambah latensi. |
|
Weight (optional) |
*float32 |
Bobot relevansi kondisi kueri. |
Kolom yang dikembalikan
|
Name |
Type |
Description |
|
Columns (optional) |
[]string |
Kolom atribut yang dikembalikan. Parameter ini hanya berlaku ketika ReturnAll dan ReturnAllFromIndex keduanya bernilai false. |
|
ReturnAll (optional) |
bool |
Menentukan apakah akan mengembalikan semua kolom atribut dalam tabel data. Nilai default: false. |
|
ReturnAllFromIndex (optional) |
bool |
Menentukan apakah akan mengembalikan semua kolom atribut yang diindeks. Nilai default: false. Jangan atur parameter ini dan ReturnAll ke true secara bersamaan. |
Respons
|
Name |
Type |
Description |
|
TotalCount |
int64 |
Jumlah total baris yang sesuai. Nilainya bergantung pada SetGetTotalCount. |
|
Rows |
[]*tablestore.Row |
Baris yang dikembalikan oleh kueri saat ini. Jumlahnya tidak melebihi nilai yang ditentukan oleh SetLimit. |
|
SearchHits |
[]*tablestore.SearchHit |
Hasil pencarian. Baca bidang ini saat Anda menggunakan penyorotan, nested inner hits, atau skor relevansi. |
|
NextToken |
[]byte |
Token untuk halaman berikutnya. Jika nilainya tidak kosong, teruskan ke kueri berikutnya. |
|
IsAllSuccess |
bool |
Menunjukkan apakah semua partisi indeks telah dikueri. Jika nilainya false, hasil parsial dikembalikan dan TotalCount mungkin kurang dari jumlah aktual baris yang sesuai. |
|
AggregationResults |
search.AggregationResults |
Hasil agregasi. |
|
GroupByResults |
search.GroupByResults |
Hasil pengelompokan. |