全部产品
Search
文档中心

Tablestore:Kueri vektor KNN

更新时间:Oct 15, 2025

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

Prasyarat

Catatan penggunaan

  • Tablestore SDK for Java V5.17.0 atau lebih baru mendukung fitur kueri vektor KNN. Pastikan versi Tablestore SDK for Java yang benar telah diinstal.

    Catatan

    Untuk informasi tentang riwayat versi Tablestore SDK for Java, lihat Riwayat Versi Tablestore SDK for Java.

  • Batas diberlakukan pada jumlah Bidang Vektor dan jumlah dimensi untuk sebuah Bidang Vektor. Untuk informasi lebih lanjut, lihat Batas Indeks Pencarian.

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

Parameter

Parameter

Diperlukan

Deskripsi

fieldName

Ya

Nama bidang vektor.

topK

Ya

K hasil kueri teratas yang memiliki kemiripan tertinggi sebagai vektor yang ingin Anda query. 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 yang lebih tinggi.

float32QueryVector

Ya

Vektor yang ingin Anda query kesamaannya.

filter

Tidak

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

Contoh

Kode sampel berikut menunjukkan cara menanyakan 10 vektor teratas dalam tabel yang memiliki kemiripan tertinggi dengan 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 dengan 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 Pencarian. 
    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 istilah, Pencocokan Semua Kueri, kueri cocok, permintaan pencocokan frasa, kueri awalan, kueri rentang, kueri wildcard, kueri geografis, Kueri Vektor KNN, kueri Boolean, kueri bersarang, dan kueri eksistensi. Setelah membuat indeks pencarian, Anda dapat menggunakan metode kueri yang disediakan oleh indeks pencarian untuk menanyakan data dari berbagai dimensi sesuai dengan kebutuhan bisnis Anda.

    Anda dapat mengurutkan atau membagi halaman baris yang memenuhi kondisi kueri dengan menggunakan fitur pengurutan dan paging. Untuk informasi lebih lanjut, lihat Melakukan Pengurutan dan Paging.

    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 kueri. Untuk informasi lebih lanjut, lihat Collapse (Distinct).

  • Jika Anda ingin menganalisis data dalam tabel, Anda dapat memanggil operasi Pencarian untuk menggunakan fitur agregasi atau menggunakan fitur kueri SQL. Sebagai contoh, Anda dapat menanyakan nilai maksimum dan minimum, jumlah nilai, dan 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.