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

Notas de uso

  • O Tablestore SDK for Python V5.4.4 ou posterior oferece suporte ao recurso de consulta vetorial KNN. Recomendamos usar a versão mais recente do Tablestore SDK for Python.

    Nota

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

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

  • O índice de busca é particionado no lado do 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 número total de linhas retornadas depende da quantidade de partições no servidor.

Parâmetros

Parâmetro

Obrigatório

Descrição

field_name

Sim

Nome do campo vetorial.

top_k

Sim

Os k principais resultados da consulta com maior similaridade em relação ao vetor desejado. Para informações sobre o valor máximo do parâmetro top_k, consulte Limites do índice de busca.

Importante

Um valor maior de k indica maior taxa de recall, latência de consulta e custos.

float32_query_vector

Sim

Vetor usado como referência para consultar a similaridade.

filter

Não

Filtro aplicado à consulta. Use uma combinação de condições que não sejam consultas vetoriais KNN.

Exemplos

O código de exemplo a seguir demonstra como consultar os 10 principais vetores em uma tabela com maior similaridade em relação a um vetor especificado. Neste cenário, os 10 vetores devem atender às seguintes condições: o valor da coluna col_keyword deve ser 0 e o valor da coluna col_long deve estar entre 0 e 50.

def knn_vector_query(client):
    filter_query = BoolQuery(
        must_queries=[
            TermQuery(field_name='col_keyword', column_value="0"),
            RangeQuery(field_name='col_long', range_from=0, range_to=50),
        ]
    )
    query = KnnVectorQuery(field_name='col_vector', top_k=10, float32_query_vector=[1.0, 1.1, 1.2, -1.3], filter=filter_query)
    # Sort the query results based on scores. 
    sort = Sort(sorters=[ScoreSort(sort_order=SortOrder.DESC)])
    search_query = SearchQuery(query, limit=10, get_total_count=False, sort=sort)
    search_response = client.search(
        table_name='<TABLE_NAME>',
        index_name='<SEARCH_INDEX_NAME>',
        search_query=search_query,
        columns_to_get=ColumnsToGet(column_names=["col_keyword", "col_long"], return_type=ColumnReturnType.SPECIFIED)
    )
    print("requestId:", search_response.request_id)
    # If the Tablestore SDK for Python that you use cannot obtain search_hits, use Tablestore SDK for Python V6.1.0 or later.
    for hit in search_response.search_hits:
    # Obtain the row data.
        row = hit.row
        print(row)
    # Obtain the score.
        score = hit.score
        print(score)

Perguntas frequentes

Otimizar o desempenho de recuperação vetorial no Tablestore

Referências