全部产品
Search
文档中心

Tablestore:Permintaan vektor KNN

更新时间:Nov 04, 2025

Fitur permintaan vektor k-nearest neighbor (KNN) memungkinkan pencarian tetangga terdekat secara aproksimatif berdasarkan vektor. Fitur ini membantu menemukan item data yang paling mirip dengan vektor yang di-query dalam dataset berskala besar.

Prasyarat

Catatan penggunaan

  • Pastikan versi terbaru dari Tablestore SDK for Go telah terinstal. Untuk informasi lebih lanjut, lihat Instal Tablestore SDK for Go.

  • Batasan diberlakukan pada jumlah bidang Vektor dan jumlah dimensi untuk bidang Vektor. Untuk informasi lebih lanjut, lihat Batasan indeks pencarian.

  • Server indeks pencarian memiliki beberapa partisi. Setiap partisi server indeks pencarian mengembalikan K tetangga terdekat ke vektor yang ingin Anda query. K tetangga terdekat yang dikembalikan oleh partisi digabungkan pada node klien. Jika Anda ingin menggunakan token untuk mem-query semua data per halaman, jumlah total baris dalam tanggapan terkait dengan jumlah partisi server indeks pencarian.

Parameter

Parameter

Diperlukan

Deskripsi

NamaBidang

Ya

Nama bidang vektor.

TopK

Ya

K hasil query teratas yang memiliki kemiripan tertinggi dengan vektor yang ingin Anda query. Untuk informasi tentang nilai maksimum parameter TopK, lihat Batasan indeks pencarian.

Penting

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

Float32QueryVector

Ya

Vektor yang ingin Anda query untuk kemiripannya.

Filter

Tidak

Filter. Anda dapat menggunakan kombinasi kondisi query yang bukan kondisi query vektor KNN.

Contoh

Kode sampel berikut menunjukkan cara mem-query 10 vektor teratas dalam tabel dengan kemiripan tertinggi ke vektor yang Anda tentukan. Dalam contoh ini, 10 vektor teratas harus memenuhi kondisi ini: nilai kolom col_keyword adalah Hangzhou.

func query(client *tablestore.TableStoreClient) {
    searchQuery := search.NewSearchQuery()
    searchQuery.Query = &search.KnnVectorQuery{
        FieldName:          "col_vector",
        TopK:               proto.Int32(10),
        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 hasil query 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("permintaan 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

Bagaimana cara mengoptimalkan performa AISearch

Referensi

  • Saat menggunakan indeks pencarian untuk mem-query data, Anda dapat menggunakan metode query berikut: kueri tepat, kueri istilah, Pencocokan semua kueri, kueri cocok, permintaan pencocokan frasa, kueri awalan, kueri rentang, kueri wildcard, kueri geografis, kueri Boolean, Permintaan vektor KNN, kueri bersarang, dan kueri eksistensi. Anda dapat menggunakan metode query yang disediakan oleh indeks pencarian untuk mem-query data dari berbagai dimensi sesuai dengan kebutuhan bisnis Anda.

    Anda dapat mengurutkan atau mem-paginasi baris yang memenuhi kondisi query dengan menggunakan fitur pengurutan dan paginasi. Untuk informasi lebih lanjut, lihat Pengurutan dan paginasi.

    Anda dapat menggunakan fitur collapse (distinct) untuk meruntuhkan set hasil berdasarkan kolom tertentu. Dengan cara ini, data dari tipe yang ditentukan muncul hanya sekali dalam hasil query. Untuk informasi lebih lanjut, lihat Collapse (distinct).

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

  • Jika Anda ingin mendapatkan semua baris yang memenuhi kondisi query tanpa perlu mengurutkan baris, Anda dapat memanggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi lebih lanjut, lihat Melakukan pemindaian paralel.