Todos os produtos
Search
Central de documentação

Tablestore:Consulta vetorial KNN

Última atualização: Jun 30, 2026

A KnnVectorQuery executa buscas de vizinhos mais próximos aproximados (ANN) ao comparar um vetor numérico com grandes conjuntos de dados para identificar os itens mais semelhantes.

Pré-requisitos

Observações de uso

  • O recurso de consulta vetorial KNN exige o Tablestore SDK for Node.js versão 5.5.0 ou posterior. Verifique se você instalou uma versão compatível do Tablestore SDK for Node.js.

    Nota

    Para obter informações sobre o histórico de versões do Tablestore SDK for Node.js, consulte Histórico de versões do Tablestore SDK for Java.

  • Há limites para o número de tipos de campos vetoriais, dimensões e outras propriedades. Para obter mais informações, consulte Limites do índice de busca.

  • O índice de busca é particionado no servidor. Cada partição retorna seus próprios TopK vizinhos mais próximos e o nó cliente agrega os resultados. Portanto, ao usar um token para paginar todos os dados, o total de linhas retornadas depende da quantidade de partições do servidor.

Parâmetros

Parâmetro

Obrigatório

Descrição

fieldName

Sim

Nome do campo vetorial.

topK

Sim

Número de vizinhos mais próximos a retornar. Para o valor máximo, consulte Limites do índice de busca.

Importante

Um valor K maior aumenta a revocação, mas também eleva a latência e o custo da consulta.

float32QueryVector

Sim

Vetor de consulta usado na busca por similaridade.

minScore

Não

Limiar mínimo de pontuação. O sistema retorna apenas linhas com pontuação superior a este valor. O valor deve ser maior ou igual a 0. Padrão: 0.

filter

Não

Filtro que aceita qualquer combinação de condições de consulta não vetoriais.

Exemplo

O código de exemplo abaixo demonstra como consultar os dez vizinhos mais próximos de um vetor específico em uma tabela de dados. Neste cenário, o valor da coluna col_keyword dos vetores vizinhos deve ser igual a "0" e o valor da coluna col_long deve estar entre 0 e 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 // Sort the query results based on the scores in descending order.
                            }
                        }
                    ],
                },
                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();

Perguntas frequentes

Otimizar o desempenho de recuperação vetorial no Tablestore

Referências