All Products
Search
Document Center

Tablestore:Kueri vektor KNN

Last Updated:Oct 09, 2026

Pencarian vektor menggunakan Tablestore SDK untuk Node.js mengembalikan data terdekat dalam indeks pencarian berdasarkan kemiripan vektor, serta mendukung ambang batas skor, jumlah kandidat, dan filter non-vektor.

Prasyarat

Catatan penggunaan

  • Fitur kueri vektor KNN didukung oleh Tablestore SDK untuk Node.js versi 5.5.0 atau yang lebih baru. Pastikan Anda telah menginstal versi Tablestore SDK untuk Node.js yang didukung.

    Catatan

    Untuk informasi mengenai riwayat versi Tablestore SDK untuk Node.js, lihat Riwayat versi Tablestore SDK untuk Java.

  • Batasan berlaku untuk 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 nilai maksimum, lihat Batasan 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.

Contoh

Kode contoh berikut menunjukkan cara mengkueri sepuluh tetangga terdekat dari vektor tertentu dalam tabel data. Dalam contoh ini, nilai kolom col_keyword dari vektor tetangga terdekat harus sama dengan "0", dan nilai kolom col_long dari vektor tetangga terdekat harus berada di antara 0 dan 50.

const tableName = "<TABLE_ANME>"
const indexName = "<SEARCH_INDEX_NAME>"

async function knnVectorQuery() {
    return new Promise(function (resolve, reject) {
        let params = {
            tableName: tableName,
            indexName: indexName,
            searchQuery: {
                offset: 0,
                limit: 10,
                query: {
                    queryType: TableStore.QueryType.KNN_VECTOR_QUERY,
                    query: {
                        fieldName: "col_vector",
                        topK: TableStore.Long.fromNumber(10),
                        float32QueryVector: [1.0, 1.1, 1.2, -1.3],
                        filter: {
                            queryType: TableStore.QueryType.BOOL_QUERY,
                            query: {
                                mustQueries: [
                                    {
                                        queryType: TableStore.QueryType.RANGE_QUERY,
                                        query: {
                                            fieldName: "col_long",
                                            rangeFrom: TableStore.Long.fromNumber(0),
                                            includeLower: true,
                                            rangeTo: TableStore.Long.fromNumber(50),
                                            includeUpper: true,
                                        }
                                    },
                                    {
                                        queryType: TableStore.QueryType.TERM_QUERY,
                                        query: {
                                            fieldName: "col_keyword",
                                            term: "0",
                                        }
                                    },
                                ],
                            }
                        },
                    },
                },
                sort: {
                    sorters: [
                        {
                            scoreSort: {
                                order: TableStore.SortOrder.SORT_ORDER_DESC // Urutkan hasil kueri berdasarkan skor secara menurun.
                            }
                        }
                    ],
                },
                getTotalCount: false,
            },
            columnToGet: {
                returnType: TableStore.ColumnReturnType.RETURN_SPECIFIED,
                returnNames: ["col_long", "col_keyword"]
            },
            timeoutMs: 10000,
        }
        client.search(params, function (err, data) {
            if (err) {
                console.log('search error:', err.toString());
                reject(err);
            } else {
                console.log('RequestId:', data.RequestId);
                for (let i = 0; i < data.searchHits.length; i++) {
                    let hit = data.searchHits[i]
                    console.log('Score:', hit.score, 'Row:', hit.row);
                }
                resolve(data)
            }
        });
    })
}
knnVectorQuery();

FAQ

Optimalkan performa pengambilan vektor di Tablestore

Referensi

  • Jenis kueri berikut didukung oleh indeks pencarian: kueri tepat, kueri istilah, Pencocokan semua kueri, kueri cocok, kueri frasa cocok, kueri awalan, kueri rentang, kueri wildcard, kueri Boolean, kueri geografis, kueri bersarang, kueri vektor, dan kueri exists. Anda dapat memilih jenis kueri sesuai kebutuhan bisnis Anda.

    Jika Anda ingin mengurutkan atau melakukan paginasi pada baris yang memenuhi kondisi kueri, Anda dapat menggunakan fitur pengurutan dan paginasi. Untuk informasi selengkapnya, lihat Pengurutan dan paginasi.

    Jika Anda ingin menciutkan set hasil berdasarkan kolom tertentu, Anda dapat menggunakan fitur collapse (distinct). Dengan cara ini, data dari tipe yang ditentukan hanya muncul sekali dalam hasil kueri. Untuk informasi selengkapnya, lihat Collapse (distinct).

  • Jika Anda ingin menganalisis data dalam tabel data, seperti mendapatkan nilai ekstrem, jumlah total, dan jumlah baris, Anda dapat melakukan operasi agregasi atau mengeksekusi pernyataan SQL. Untuk informasi selengkapnya, lihat Agregasi dan Kueri SQL.

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