All Products
Search
Document Center

Tablestore:Pencarian vektor

Last Updated:Apr 11, 2026

Gunakan KnnVectorQuery untuk melakukan pencarian tetangga terdekat aproksimasi dengan vektor numerik guna menemukan item data yang paling mirip dalam set data berskala besar.

Prasyarat

Catatan penggunaan

  • Pastikan versi terbaru Tablestore SDK untuk Go telah diinstal. Untuk informasi selengkapnya, lihat Instal Tablestore SDK untuk Go.

  • Batas berlaku untuk jumlah tipe bidang vektor, dimensi, dan properti lainnya. Untuk informasi selengkapnya, lihat Batas indeks pencarian.

  • Indeks pencarian dipartisi di sisi server. Setiap partisi mengembalikan TopK tetangga terdekatnya sendiri, lalu hasil tersebut diagregasi di node klien. Oleh karena itu, jika token digunakan untuk melakukan paginasi melalui seluruh data, jumlah total baris yang dikembalikan bergantung pada jumlah partisi di sisi server.

Parameter

Parameter

Wajib

Deskripsi

FieldName

Ya

Nama bidang vektor.

TopK

Ya

Hasil kueri Top K dengan kemiripan tertinggi terhadap vektor yang ingin Anda kueri. Untuk informasi mengenai nilai maksimum parameter TopK, lihat Batas indeks pencarian.

Penting

Nilai K yang lebih besar meningkatkan tingkat recall, latensi kueri, dan biaya.

Float32QueryVector

Ya

Vektor yang digunakan untuk pencarian kemiripan.

MinScore

Tidak

Ambang batas skor. Kueri hanya mengembalikan baris dengan skor lebih besar dari nilai ini. Nilainya harus 0 atau lebih. Nilai default-nya adalah 0.

Filter

Tidak

Filter. Anda dapat menggunakan kombinasi kondisi kueri yang bukan merupakan kondisi kueri vektor KNN.

Contoh

Contoh ini mengkueri 10 tetangga terdekat teratas terhadap suatu vektor tertentu, hanya mengambil hasil dengan skor lebih besar dari 0,1 dan kolom col_keyword bernilai "hangzhou".

func query(client *tablestore.TableStoreClient) {
    searchQuery := search.NewSearchQuery()
    searchQuery.Query = &search.KnnVectorQuery{
        FieldName:          "col_vector",
        TopK:               proto.Int32(10),
        MinScore:           proto.Float32(0.1),
        Float32QueryVector: []float32{-1.4, 1, 1, 1.2},
        Filter: &search.BoolQuery{
            ShouldQueries: []search.Query{
                &search.TermQuery{
                    FieldName: "col_keyword",
                    Term:      "hangzhou",
                },
            },
        },
    }
    searchQuery.Sort = &search.Sort{
        Sorters: []search.Sorter{
            search.NewScoreSort(), // Urutkan berdasarkan skor.
        },
    }
    searchRequest := &tablestore.SearchRequest{
        SearchQuery: searchQuery,
        TableName:   "<TABLE_NAME>",
        IndexName:   "<SEARCH_INDEX_NAME>",
        ColumnsToGet: &tablestore.ColumnsToGet{Columns: []string{
            "col_keyword",
            "col_long",
        }},
    }

    if resp, err := client.Search(searchRequest); err != nil {
        fmt.Println("kueri vektor float32 gagal: ", err)
    } else {
        for _, hit := range resp.SearchHits {
            fmt.Println("skor:", *hit.Score)
            jsonBody, err := json.Marshal(hit.Row)
            if err != nil {
                panic(err)
            }
            fmt.Println("baris: ", string(jsonBody))
        }  
    }
}

FAQ

Cara mengoptimalkan performa AISearch

Referensi

  • Saat menggunakan indeks pencarian untuk mengkueri data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri istilah, Pencocokan semua kueri, kueri cocok, kueri frasa cocok, kueri awalan, kueri rentang, kueri wildcard, kueri geografis, Kueri Boolean, Kueri vektor KNN, kueri bersarang, dan kueri eksis. Anda dapat menggunakan metode kueri yang disediakan oleh indeks pencarian untuk mengkueri data dari berbagai dimensi sesuai kebutuhan bisnis Anda.

    Anda dapat mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri dengan menggunakan fitur Pengurutan dan paging. Untuk informasi selengkapnya, lihat Pengurutan dan paging.

    Anda dapat menggunakan fitur collapse (distinct) untuk menciutkan set hasil berdasarkan kolom tertentu. Dengan cara ini, data jenis tertentu hanya muncul sekali dalam hasil kueri. Untuk informasi selengkapnya, lihat Collapse (menghapus duplikat).

  • Jika ingin menganalisis data dalam tabel data, Anda dapat menggunakan fitur agregasi operasi Search atau mengeksekusi pernyataan SQL. Misalnya, Anda dapat memperoleh nilai minimum dan maksimum, jumlah total, serta jumlah baris. Untuk informasi selengkapnya, lihat Agregasi dan Kueri SQL.

  • Jika ingin memperoleh semua baris yang memenuhi kondisi kueri tanpa perlu mengurutkan baris tersebut, Anda dapat memanggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi selengkapnya, lihat Lakukan pemindaian paralel.