Todos os produtos
Search
Central de documentação

Elasticsearch:Guia do usuário do Alibaba Cloud Elasticsearch Vector Engine

Última atualização: Jun 27, 2026

O mecanismo de vetores do Alibaba Cloud Elasticsearch permite executar buscas de similaridade vetorial em grande escala junto com pesquisas de texto completo em um único cluster. Utilize-o para criar sistemas de recomendação, pipelines de recuperação de imagens e aplicações de processamento de linguagem natural.

O mecanismo de vetores armazena índices HNSW na memória off-heap. Antes de selecionar a especificação e a quantidade de nós de dados, estime o uso de memória off-heap seguindo as orientações de cálculo de memória apresentadas mais adiante neste tópico.
O mecanismo de vetores recebe atualizações regularmente. Utilize a versão mais recente do Alibaba Cloud Elasticsearch 8.x para obter o melhor desempenho e custo-benefício.

Pré-requisitos

Antes de começar, verifique se você possui:

O mecanismo de vetores utiliza grandes quantidades de memória off-heap para armazenar índices vetoriais em cache. Para escolher a especificação e a quantidade adequadas de nós de dados, estime o consumo de memória off-heap conforme as diretrizes de cálculo descritas posteriormente neste tópico.

Escolha um método de busca

Antes de criar um índice, determine qual método de busca kNN melhor atende ao seu caso de uso:

Método

Funcionamento

Mais indicado para

kNN aproximado

Emprega a cláusula knn com indexação HNSW para oferecer buscas rápidas e escaláveis

A maioria das cargas de trabalho em produção

kNN exato

Executa uma consulta script_score que pontua todos os documentos por força bruta

Conjuntos de dados pequenos ou cenários que exigem pontuação precisa

O kNN aproximado proporciona baixa latência e boa precisão. Já o kNN exato garante resultados totalmente precisos, mas não escala adequadamente para grandes volumes de dados.

Etapa 1: Crie um índice

Crie um índice contendo um campo dense_vector para armazenar os dados vetoriais:

PUT /my_vector_index
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "my_vector": {
        "type": "dense_vector",
        "dims": 3
      },
      "my_text": {
        "type": "keyword"
      }
    }
  }
}

Pontos importantes:

  • Defina dims como a dimensão de saída do seu modelo de embedding. Todos os documentos no índice devem utilizar a mesma dimensão.

  • Determine os valores de number_of_shards e number_of_replicas considerando o volume de dados e os requisitos de desempenho.

  • O tipo dense_vector aceita parâmetros adicionais, como métricas de similaridade e opções de indexação. Consulte Tipo de campo Dense vector para acessar a lista completa.

Etapa 2: Indexe documentos

Adicione documentos por meio da Bulk API ou de requisições individuais de indexação. O vetor de cada documento deve corresponder ao valor de dims definido no mapeamento:

PUT my_vector_index/_doc/1
{
  "my_text": "text1",
  "my_vector": [0.5, 10, 6]
}

PUT my_vector_index/_doc/2
{
  "my_text": "text2",
  "my_vector": [-0.5, 10, 10]
}
Importante

Se a dimensão do vetor de um documento não coincidir com o valor de dims no mapeamento, o Elasticsearch rejeitará o documento e retornará um erro.

Etapa 3: Execute uma busca kNN

kNN aproximado (recomendado)

Envie uma consulta kNN especificando o vetor de busca e a quantidade de resultados desejada:

GET my_vector_index/_search
{
  "knn": {
    "field": "my_vector",
    "query_vector": [-5, 9, -12],
    "k": 10,
    "num_candidates": 100
  },
  "fields": ["my_text"]
}
Parâmetro Descrição
k Quantidade de vizinhos mais próximos a serem retornados. Deve ser menor ou igual a num_candidates. Assume por padrão o valor de size.
num_candidates Número de candidatos a vizinhos mais próximos coletados por shard antes da mesclagem dos resultados. Precisa ser maior que k e menor ou igual a 10.000. O valor padrão é Math.min(1.5 * k, 10000). Valores maiores aumentam o recall, porém elevam a latência.
No contexto do algoritmo HNSW, num_candidates corresponde ao valor de ef (fator de exploração) durante a consulta — ele define quantos documentos candidatos cada shard examina antes de devolver seus principais resultados. k representa a quantidade final de documentos retornados após a consolidação de todos os shards.

kNN exato

Utilize uma consulta script_score combinada com uma função vetorial para realizar pontuação por força bruta. Essa abordagem percorre todos os documentos do índice e não é adequada para grandes conjuntos de dados.

Recursos adicionais de busca kNN

A cláusula knn oferece suporte aos seguintes recursos:

Recurso

Descrição

Filtragem

Inclua uma cláusula filter para limitar os resultados a um subconjunto específico de documentos antes de executar a busca kNN.

Limiar de pontuação mínima

Aplique o parâmetro similarity para descartar documentos cuja pontuação de similaridade fique abaixo do mínimo definido.

Campos aninhados

Realize buscas kNN sobre vetores armazenados em campos nested.

kNN multicampo

Consulte vários campos knn em uma única requisição.

Repontuação

Reordene os resultados do kNN aproximado utilizando um rescore via script para alcançar maior precisão.

Para consultar a referência completa de recursos, acesse Busca k-nearest neighbor (kNN).

Considerações para produção

Planejamento de memória

O mecanismo de vetores mantém os índices HNSW na memória off-heap. Subestimar essa memória provoca evições e prejudica a latência das buscas. Dimensione corretamente seus nós de dados antes de implantar em produção, seguindo as orientações de cálculo de memória disponíveis neste tópico.

Ajuste de num_candidates

Comece com o valor padrão (Math.min(1.5 * k, 10000)). Se o recall estiver abaixo da meta esperada, aumente num_candidates gradualmente. Valores mais altos melhoram o recall, mas também elevam o custo de desempenho.

Planejamento de shards

Configure number_of_shards e number_of_replicas levando em conta o volume de dados previsto, o throughput de consultas e os requisitos de disponibilidade.

Consistência de dimensões

Defina dims exatamente como a dimensão de saída do seu modelo de embedding. Divergências de dimensão geram erros durante a indexação.

Mantenha o Elasticsearch atualizado

O mecanismo de vetores recebe melhorias contínuas de desempenho e eficiência de custos. Execute sempre a versão mais recente do Alibaba Cloud Elasticsearch 8.x para aproveitar essas otimizações.