All Products
Search
Document Center

Tablestore:Gunakan kueri vektor KNN

Last Updated:May 07, 2026

Topik ini menjelaskan cara menggunakan kueri vektor k-nearest neighbor (KNN) di Konsol Tablestore atau dengan SDK Tablestore.

API

Untuk menjalankan kueri vektor KNN, panggil operasi Search dan atur jenis kueri ke KnnVectorQuery.

Parameter

Parameter

Wajib

Deskripsi

fieldName

Ya

Nama bidang vektor.

topK

Ya

Jumlah tetangga terdekat yang akan dikembalikan. Untuk nilai maksimum, lihat Batas indeks pencarian.

Penting

Nilai K yang lebih besar meningkatkan recall tetapi juga meningkatkan latensi kueri dan biaya.

float32QueryVector

Ya

Vektor kueri yang digunakan untuk pencarian kemiripan.

minScore

Tidak

Ambang batas skor minimum. Hanya baris dengan skor lebih besar dari nilai ini yang dikembalikan. Nilainya harus lebih besar dari atau sama dengan 0. Default: 0.

filter

Tidak

Filter yang mendukung kombinasi apa pun dari kondisi kueri non-vektor.

Prosedur

Catatan

Jika Anda mengalami masalah dengan kueri vektor KNN, kirimkan tiket.

Anda dapat menjalankan kueri vektor KNN di Konsol Tablestore atau menggunakan SDK. Sebelum memulai, selesaikan tugas-tugas berikut:

Gunakan konsol

  1. Buka tab Index Management.

    1. Login ke Table Store console.

    2. Pada bilah navigasi atas, pilih kelompok sumber daya dan wilayah.

    3. Pada halaman Overview, klik nama instans atau klik Instance Management di kolom Actions.

    4. Pada tab Instance Details, di tab Data Table List, klik nama tabel data atau klik Index Management di kolom Actions.

  2. Pada tab Index Management, temukan Search Index yang dituju lalu klik Search di kolom Actions.

  3. Pada kotak dialog Search, konfigurasikan parameter kueri.

    1. Secara default, semua kolom dikembalikan. Untuk mengembalikan kolom tertentu, matikan Retrieve All Columns dan masukkan nama kolom, dipisahkan koma.

      Catatan

      Secara default, Table Store mengembalikan kolom kunci primer dari tabel data.

    2. Pilih operator logika: And, Or, atau Not.

      Jika Anda memilih And, kueri mengembalikan data yang memenuhi semua kondisi yang ditentukan. Jika Anda memilih Or, kueri mengembalikan data yang memenuhi setidaknya satu dari kondisi yang ditentukan. Jika Anda memilih Not, kueri mengembalikan data yang tidak memenuhi kondisi yang ditentukan.

    3. Pilih bidang vektor dan klik Add.

    4. Atur jenis kueri bidang vektor ke KNN vector query (KnnVectorQuery), lalu masukkan vektor kueri dan nilai topK.

      Masukkan vektor dalam format yang diminta pada halaman.

    5. Secara default, pengurutan dinonaktifkan. Untuk mengurutkan hasil berdasarkan bidang tertentu, aktifkan Enable Sorting, tambahkan bidang pengurutan, dan konfigurasikan urutan pengurutan.

    6. Secara default, agregasi dinonaktifkan. Untuk melakukan agregasi statistik pada bidang tertentu, aktifkan Enable Aggregation, tambahkan bidang untuk agregasi, dan konfigurasikan pengaturan agregasi.

  4. Klik OK.

    Hasil kueri ditampilkan pada tab Index Management.

Gunakan SDK

Penting

Fitur kueri vektor KNN tersedia di Tablestore SDK for Java 5.17.0 atau versi lebih baru, versi terbaru Tablestore SDK for Go, Tablestore SDK for Python 5.4.4 atau versi lebih baru, dan Tablestore SDK for Node.js 5.5.0 atau versi lebih baru.

Anda dapat menjalankan kueri vektor KNN menggunakan Java SDK, Go SDK, Python SDK, atau Node.js SDK. Contoh berikut menggunakan Java SDK.

Penting

Sebelum menggunakan Java SDK untuk menjalankan kueri vektor KNN, Anda harus menginisialisasi client. Untuk informasi selengkapnya, lihat Inisialisasi client Tablestore.

Contoh berikut mengambil 10 tetangga terdekat dari vektor yang diberikan, dengan skor kemiripan minimum 0,1. Hasilnya selanjutnya difilter ke baris-baris di mana Col_Keyword adalah 'hangzhou' dan Col_Long kurang dari 4.

private static void knnVectorQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    KnnVectorQuery query = new KnnVectorQuery();
    query.setFieldName("Col_Vector");
    query.setTopK(10); // Mengembalikan K tetangga terdekat teratas.
    query.setMinScore(0.1f); // Mengembalikan hanya baris dengan skor lebih besar dari 0.1.
    query.setFloat32QueryVector(new float[]{0.1f, 0.2f, 0.3f, 0.4f});
    // Tetangga terdekat juga harus memenuhi kondisi: Col_Keyword = 'hangzhou' DAN Col_Long < 4.
    query.setFilter(QueryBuilders.bool()
            .must(QueryBuilders.term("Col_Keyword", "hangzhou"))
            .must(QueryBuilders.range("Col_Long").lessThan(4))
    );
    searchQuery.setQuery(query);
    searchQuery.setLimit(10);
    // Urutkan hasil berdasarkan skor.
    searchQuery.setSort(new Sort(Collections.singletonList(new ScoreSort())));
    SearchRequest searchRequest = new SearchRequest("<TABLE_NAME>", "<SEARCH_INDEX_NAME>", searchQuery);
    SearchRequest.ColumnsToGet columnsToGet = new SearchRequest.ColumnsToGet();
    columnsToGet.setColumns(Arrays.asList("Col_Keyword", "Col_Long"));
    searchRequest.setColumnsToGet(columnsToGet);
    // Panggil operasi pencarian.
    SearchResponse resp = client.search(searchRequest);
    for (SearchHit hit : resp.getSearchHits()) {
        // Cetak skor.
        System.out.println(hit.getScore());
        // Cetak data baris.
        System.out.println(hit.getRow());
    }
}

FAQ

Bagaimana cara mengoptimalkan kinerja kueri vektor KNN di Tablestore?

Dokumen terkait