Todos os produtos
Search
Central de documentação

Tablestore:Usar consulta vetorial KNN

Última atualização: Jun 30, 2026

Este tópico explica como usar consultas vetoriais de k-vizinhos mais próximos (KNN) no console do Tablestore ou com os SDKs do Tablestore.

API

Para executar uma consulta vetorial KNN, chame a operação Search e defina o tipo de consulta como KnnVectorQuery.

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.

Procedimento

Nota

Se encontrar problemas com consultas vetoriais KNN, envie um ticket.

Execute consultas vetoriais KNN no console do Tablestore ou via SDK. Antes de começar, conclua as seguintes tarefas:

Usar o console

  1. Acesse a aba Index Management.

    1. Faça login no console do Table Store.

    2. Na barra de navegação superior, selecione um grupo de recursos e uma região.

    3. Na página Overview, clique em nome da instância ou em Instance Management na coluna Actions.

    4. Na aba Instance Details, dentro da aba Data Table List, clique em nome da tabela de dados ou em Index Management na coluna Actions.

  2. Na aba Index Management, localize o Search Index desejado e clique em Search na coluna Actions.

  3. Na caixa de diálogo Search, configure os parâmetros de consulta.

    1. Por padrão, o sistema retorna todas as colunas. Para retornar colunas específicas, desative Retrieve All Columns e insira os nomes das colunas separados por vírgulas.

      Nota

      Por padrão, o Table Store retorna as colunas de chave primária da tabela de dados.

    2. Selecione um operador lógico: And, Or ou Not.

      Ao selecionar And, a consulta retorna dados que atendem a todas as condições especificadas. Se optar por Or, a consulta retorna dados que satisfazem pelo menos uma das condições. Já a opção Not faz com que a consulta retorne dados que não correspondem às condições definidas.

    3. Selecione um campo vetorial e clique em Add.

    4. Defina o tipo de consulta do campo vetorial como KNN vector query (KnnVectorQuery) e insira o vetor de consulta e o valor topK.

      Insira o vetor no formato solicitado na página.

    5. A ordenação vem desativada por padrão. Para classificar os resultados por um campo específico, ative Enable Sorting, adicione o campo de classificação e configure a ordem.

    6. A agregação também é desativada por padrão. Para realizar uma agregação estatística em um campo específico, ative Enable Aggregation, adicione o campo para agregação e defina as configurações.

  4. Clique em OK.

    Os resultados da consulta aparecem na aba Index Management.

Usar um SDK

Importante

O recurso de consulta vetorial KNN está disponível no Tablestore SDK for Java 5.17.0 ou posterior, na versão mais recente do Tablestore SDK for Go, no Tablestore SDK for Python 5.4.4 ou posterior e no Tablestore SDK for Node.js 5.5.0 ou posterior.

Execute consultas vetoriais KNN com o Java SDK, Go SDK, Python SDK ou Node.js SDK. O exemplo abaixo usa o Java SDK.

Importante

Antes de usar o Java SDK para executar uma consulta vetorial KNN, inicialize o cliente. Para mais informações, consulte Inicializar um cliente Tablestore.

O exemplo a seguir recupera os 10 vizinhos mais próximos de um determinado vetor, com pontuação mínima de similaridade de 0,1. Os resultados são filtrados adicionalmente para linhas onde Col_Keyword é 'hangzhou' e Col_Long é menor que 4.

private static void knnVectorQuery(SyncClient client) {
    SearchQuery searchQuery = new SearchQuery();
    KnnVectorQuery query = new KnnVectorQuery();
    query.setFieldName("Col_Vector");
    query.setTopK(10); // Return the top K nearest neighbors.
    query.setMinScore(0.1f); // Return only rows with a score greater than 0.1.
    query.setFloat32QueryVector(new float[]{0.1f, 0.2f, 0.3f, 0.4f});
    // The nearest neighbors must also satisfy the conditions: Col_Keyword = 'hangzhou' AND 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);
    // Sort the results by score.
    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);
    // Call the search operation.
    SearchResponse resp = client.search(searchRequest);
    for (SearchHit hit : resp.getSearchHits()) {
        // Print the score.
        System.out.println(hit.getScore());
        // Print the row data.
        System.out.println(hit.getRow());
    }
}

Perguntas frequentes

Como otimizar o desempenho de uma consulta vetorial KNN no Tablestore?

Documentos relacionados