All Products
Search
Document Center

Tablestore:Pencarian vektor

Last Updated:Apr 11, 2026

Gunakan KnnVectorQuery untuk melakukan pencarian tetangga terdekat hampiran (approximate nearest neighbor search) dengan vektor numerik guna menemukan item data yang paling mirip dalam set data berskala besar.

Prasyarat

Catatan penggunaan

  • Fitur pencarian vektor didukung di Tablestore SDK untuk Java versi 5.17.0 ke atas. Pastikan Anda telah menginstal versi SDK yang sesuai.

    Catatan

    Untuk informasi lebih lanjut mengenai riwayat versi Tablestore SDK untuk Java, lihat Riwayat versi Java SDK.

  • Berlaku batasan terhadap jumlah tipe bidang vektor, dimensi, dan properti lainnya. Untuk informasi selengkapnya, lihat Batasan indeks pencarian.

  • Indeks pencarian dipartisi di sisi server. Setiap partisi mengembalikan TopK tetangga terdekatnya sendiri, dan hasil tersebut kemudian 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

Jumlah tetangga terdekat yang akan dikembalikan. Untuk informasi mengenai nilai maksimum, lihat Batasan indeks pencarian.

Penting

Nilai K yang lebih besar meningkatkan Recall namun menambah latensi kueri dan biaya.

float32QueryVector

Ya

Vektor untuk pencarian kemiripan.

minScore

Tidak

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

filter

Tidak

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

Contoh

Contoh ini melakukan kueri untuk 10 tetangga terdekat dari vektor tertentu. Kueri ini mensyaratkan skor kemiripan lebih besar dari 0,1 dan memfilter item yang kolom Col_Keyword-nya bernilai 'hangzhou' serta 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 K tetangga terdekat teratas.
    query.setMinScore(0.1f); // Hanya mengembalikan 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

Optimalkan performa pencarian vektor di Tablestore

Topik terkait

  • 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, KNN vector query, Boolean query, kueri bersarang, dan kueri eksis. Setelah membuat indeks pencarian, Anda dapat menggunakan metode kueri yang disediakan oleh indeks pencarian untuk mengkueri data dari berbagai dimensi sesuai kebutuhan bisnis Anda.

    Anda dapat mengurutkan atau melakukan paginasi terhadap baris yang memenuhi kondisi kueri dengan menggunakan fitur Pengurutan dan paginasi. Untuk informasi selengkapnya, lihat Lakukan Pengurutan dan paginasi.

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

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

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