Todos os produtos
Search
Central de documentação

Tablestore:Vector search

Última atualização: Jul 03, 2026

O KnnVectorQuery realiza 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

Notas de uso

  • A busca vetorial requer o Tablestore SDK for Java 5.17.0 ou posterior. Certifique-se de instalar a versão correta do SDK.

    Nota

    Para consultar o histórico de versões do Tablestore SDK for Java, veja Histórico de versões do Java SDK.

  • Há limites para o número de tipos de campos vetoriais, dimensões e outras propriedades. Para 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. Por isso, ao usar um token para paginar todos os dados, o total de linhas retornadas depende da quantidade de partições no 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 exemplo a seguir recupera os 10 vizinhos mais próximos de um vetor específico, com pontuação mínima de similaridade de 0,1. Os resultados incluem apenas linhas em que Col_Keyword seja 'hangzhou' e Col_Long seja 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());
    }
}

FAQ

Otimizar o desempenho da busca vetorial no Tablestore

Tópicos relacionados