全部产品
Search
文档中心

Tablestore:Gunakan kueri vektor KNN

更新时间:Jul 06, 2025

Topik ini menjelaskan cara menggunakan fitur kueri vektor tetangga terdekat (KNN) untuk menanyakan data di konsol Tablestore atau dengan menggunakan SDK Tablestore.

Operasi API

Anda dapat memanggil operasi Search dan mengatur tipe kueri ke KnnVectorQuery untuk menggunakan fitur kueri vektor KNN.

Parameter

Parameter

Diperlukan

Deskripsi

fieldName

Ya

Nama kolom vektor.

topK

Ya

K hasil teratas yang memiliki kemiripan tertinggi sebagai vektor yang ingin Anda tanyakan. Untuk informasi tentang nilai maksimum parameter topK, lihat Batas indeks pencarian.

Penting
  • Nilai K yang lebih besar menunjukkan tingkat recall yang lebih tinggi, latensi kueri, dan biaya.

  • Jika nilai parameter topK kurang dari nilai parameter limit dalam SearchQuery, server secara otomatis menggunakan nilai parameter limit sebagai nilai parameter topK.

float32QueryVector

Ya

Vektor yang ingin Anda tanyakan kesamaannya.

filter

Tidak

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

Metode

Catatan

Jika terjadi pengecualian saat menggunakan fitur kueri vektor KNN, ajukan tiket.

Anda dapat menggunakan konsol Tablestore atau SDK Tablestore untuk menggunakan fitur kueri vektor KNN. Sebelum menggunakan fitur ini untuk menanyakan data, pastikan persyaratan berikut terpenuhi:

Gunakan Konsol Tablestore

  1. Buka tab Indexes.

    1. Masuk ke konsol Tablestore.

    2. Di bilah navigasi atas, pilih grup sumber daya dan wilayah.

    3. Di halaman Overview, klik nama instance yang ingin Anda kelola atau klik Manage Instance di kolom Actions instance.

    4. Di tab Tables pada tab Instance Details, klik nama tabel data atau klik Indexes di kolom Tindakan tabel data.

  2. Di tab Indexes, temukan indeks pencarian yang ingin Anda gunakan untuk menanyakan data dan klik Manage Data di kolom Actions.

  3. Di kotak dialog Search, tentukan kondisi kueri.

    1. Secara default, sistem mengembalikan semua kolom atribut. Untuk mengembalikan kolom atribut tertentu, matikan All Columns dan tentukan kolom atribut yang ingin Anda kembalikan. Pisahkan beberapa kolom atribut dengan koma (,).

      Catatan

      Secara default, sistem mengembalikan semua kolom kunci utama tabel data.

    2. Pilih operator logika And, Or, atau Not sesuai kebutuhan bisnis Anda.

      Jika Anda memilih operator logika And, data yang memenuhi kondisi kueri akan dikembalikan. Jika Anda memilih operator Or dan menentukan satu kondisi kueri, data yang memenuhi kondisi kueri akan dikembalikan. Jika Anda memilih operator logika Or dan menentukan beberapa kondisi kueri, data yang memenuhi salah satu kondisi kueri akan dikembalikan. Jika Anda memilih operator logika Not, data yang tidak memenuhi kondisi kueri akan dikembalikan.

    3. Pilih bidang vektor dan klik Add.

    4. Setel parameter Query Type ke KNN Vector Query(KnnVectorQuery) dan masukkan vektor yang ingin Anda tanyakan serta nilai parameter topK.

      Masukkan vektor dalam format yang valid sesuai petunjuk.

    5. Secara default, fitur pengurutan dinonaktifkan. Jika Anda ingin mengurutkan hasil kueri berdasarkan bidang tertentu, aktifkan Sort dan tentukan bidang berdasarkan mana Anda ingin mengurutkan hasil kueri dan urutan pengurutan.

    6. Secara default, fitur agregasi dinonaktifkan. Jika Anda ingin mengumpulkan statistik pada bidang tertentu, aktifkan Collect Statistics, tentukan bidang berdasarkan mana Anda ingin mengumpulkan statistik, dan konfigurasikan informasi yang diperlukan untuk mengumpulkan statistik.

  4. Klik OK.

    Data yang memenuhi kondisi kueri ditampilkan dalam urutan yang ditentukan di tab Indexes.

Gunakan SDK Tablestore

Penting

Fitur kueri vektor KNN didukung oleh Tablestore SDK for Java V5.17.0 dan versi lebih baru, Tablestore SDK for Go versi terbaru, Tablestore SDK for Python V5.4.4 dan versi lebih baru, serta Tablestore SDK for Node.js V5.5.0 dan versi lebih baru.

Anda dapat menggunakan Tablestore SDK for Java, Tablestore SDK for Go, Tablestore SDK for Python, atau Tablestore SDK for Node.js untuk menggunakan fitur kueri vektor KNN. Dalam contoh ini, Tablestore SDK for Java digunakan.

Penting

Sebelum menggunakan fitur kueri vektor KNN dengan Tablestore SDK for Java, Anda harus menginisialisasi klien. Untuk informasi lebih lanjut, lihat Inisialisasi klien Tablestore.

Kode sampel berikut memberikan contoh cara menanyakan 10 vektor teratas dalam tabel yang memiliki kemiripan tertinggi sebagai vektor yang ditentukan. Dalam contoh ini, 10 vektor teratas harus memenuhi kondisi kueri berikut: nilai kolom Col_Keyword adalah hangzhou dan nilai kolom 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 10 vektor teratas dalam tabel yang memiliki kemiripan tertinggi sebagai vektor yang ditentukan.
    query.setFloat32QueryVector(new float[]{0.1f, 0.2f, 0.3f, 0.4f});
    // Tentukan kondisi kueri untuk 10 vektor teratas: nilai kolom Col_Keyword adalah hangzhou dan nilai kolom Col_Long kurang dari 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 kueri 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 Search.
    SearchResponse resp = client.search(searchRequest);
    for (SearchHit hit : resp.getSearchHits()) {
        // Tampilkan skor.
        System.out.println(hit.getScore());
        // Tampilkan data.
        System.out.println(hit.getRow());
    }
}

FAQ

Bagaimana cara mengoptimalkan kinerja kueri vektor KNN Tablestore?

Referensi

  • Saat menggunakan indeks pencarian untuk menanyakan data, Anda dapat menggunakan metode kueri berikut: kueri tepat, kueri terms, kueri cocok semua, kueri cocok, kueri frasa cocok, kueri awalan, kueri rentang, kueri wildcard, kueri fuzzy, kueri Boolean, kueri geo, kueri nested, kueri vektor KNN, dan kueri exists. Anda dapat memilih metode kueri berdasarkan kebutuhan bisnis Anda untuk menanyakan data dari berbagai dimensi.

    Anda dapat mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri dengan menggunakan fitur pengurutan dan pembagian halaman. Untuk informasi lebih lanjut, lihat Lakukan pengurutan dan pembagian halaman.

    Anda dapat menggunakan fitur collapse (distinct) untuk meruntuhkan set hasil berdasarkan kolom tertentu. Dengan cara ini, data dari jenis yang ditentukan hanya muncul sekali dalam hasil kueri. 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 kueri tanpa perlu mengurutkan baris, Anda dapat memanggil operasi ParallelScan dan ComputeSplits untuk menggunakan fitur pemindaian paralel. Untuk informasi lebih lanjut, lihat Pemindaian paralel.