Recursos avançados de pesquisa com um mecanismo vetorial Amazon S3 - OpenSearch Serviço Amazon

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Recursos avançados de pesquisa com um mecanismo vetorial Amazon S3

O Amazon OpenSearch Service oferece a capacidade de usar o Amazon S3 como um mecanismo vetorial para índices vetoriais. Esse atributo permite descarregar dados vetoriais para o Amazon S3 enquanto mantém recursos de pesquisa vetorial em fração de segundos por um preço baixo.

Com esse recurso, OpenSearch armazena incorporações vetoriais em um índice vetorial do Amazon S3 enquanto mantém outros campos do documento no armazenamento OpenSearch do cluster. Essa arquitetura oferece os seguintes benefícios:

  • Durabilidade: os dados gravados no S3 Vectors são armazenados no S3, que foi projetado para oferecer 99,999999999% de durabilidade de dados.

  • Escalabilidade: descarregue grandes conjuntos de dados vetoriais para o S3 sem consumir armazenamento em cluster.

  • Custo-benefício: otimize os custos de armazenamento para workloads com muitos vetores.

OpenSearch tem os seguintes requisitos para usar índices vetoriais S3:

  • OpenSearch versão 2.19 ou posterior

  • OpenSearch Instâncias otimizadas

  • Versão de patch mais recente para seu OpenSearch lançamento

Habilitar vetores do S3

Ao criar um novo domínio ou atualizar um domínio existente, você pode escolher a opção Habilitar o S3 Vectors como mecanismo na seção Recursos avançados. Essa configuração permite OpenSearch criar um bucket vetorial S3 quando você utiliza os vetores S3 como seu mecanismo. Quando você ativa essa opção, OpenSearch configura os vetores do S3 para seu domínio da seguinte forma:

  1. Criando duas novas concessões na AWS KMS chave configurada com seu domínio:

    • Uma concessão para os trabalhos de indexação em segundo plano do S3 Vectors com privilégios de descriptografia

    • Uma concessão OpenSearch para criar buckets de vetores S3 com permissões GenerateDataKey

  2. Configurando a chave KMS usada pelo seu OpenSearch domínio como CMK para criptografia em repouso de todos os dados de índice vetorial.

Criar índices com o mecanismo vetorial do S3

Depois de configurar um domínio, você pode criar um ou mais índices k-NN com campos usando o s3vector como mecanismo vetorial de backend nos mapeamentos de índices. Você pode configurar diferentes campos vetoriais com diferentes tipos de mecanismos com base no seu caso de uso.

Importante

Você só pode usar o mecanismo s3vector no mapeamento de uma definição de campo durante a criação do índice. Não é possível adicionar ou atualizar o mapeamento com o mecanismo s3vector após a criação do índice.

Aqui estão alguns exemplos que criam índices de mecanismo vetorial do S3.

Exemplo: criação de um índice k-NN com o mecanismo vetorial do S3

PUT my-first-s3vector-index { "settings": { "index": { "knn": true } }, "mappings": { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" } } } }

Exemplo: Criação de um índice k-NN com os mecanismos vetoriais e FAISS do S3

Este exemplo destaca o fato de que é possível usar vários mecanismos vetoriais dentro do mesmo índice.

PUT my-vector-index { "settings": { "index": { "knn": true } }, "mappings": { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" }, "my_vector_2": { "type": "knn_vector", "dimension": 2, "space_type": "cosine", "method": { "name": "hnsw", "engine": "faiss", "parameters": { "ef_construction": 128, "m": 24 } } } } } }

Exemplo do que não é compatível: adição do mecanismo vetorial do S3 após a criação do índice

A abordagem a seguir não é compatível e não funcionará.

PUT my-first-s3vector-index { "settings": { "index": { "knn": true } } } PUT my-first-s3vector-index/_mapping { "properties": { "my_vector_1": { "type": "knn_vector", "dimension": 2, "space_type": "l2", "method": { "engine": "s3vector" } }, "price": { "type": "float" } } }

Limitações de funcionalidade

Considere as seguintes limitações antes de usar o mecanismo s3vector em um índice:

Características e comportamentos não compatíveis com o mecanismo s3vector
Recurso Comportamento

Índice do Split/Shrink/Clone

Eles APIs falham quando usados com um índice configurado com o s3vector mecanismo em knn_vector campo.

Snapshots

Os índices que usam o mecanismo s3vector não são compatíveis com snapshots. Para domínios gerenciados:

  • Os snapshots automatizados incluem apenas os índices que não usam o mecanismo s3vector.

  • Ocorre falha nas solicitações manuais de snapshots para índices do s3vector.

nota

Embora os snapshots não sejam compatíveis com a point-in-time recuperação, o s3vector engine, junto com as instâncias OpenSearch otimizadas, oferecem 11 nove de durabilidade.

UltraWarm nível

Os índices configurados com o s3vector mecanismo não podem migrar para UltraWarm o nível.

Replicação entre clusters

Os índices configurados com o mecanismo s3vector não são compatíveis com replicação entre clusters.

Proteção contra exclusão acidental

Como os snapshots não são compatíveis com índices que usam o mecanismo s3vector, a proteção contra exclusão acidental não está disponível. Você ainda pode restaurar outros índices no domínio.

Pesquisa radial

As consultas com pesquisa radial não são compatíveis em campos que usam o mecanismo s3vector.

Indexar documentos

Depois de criar um índice com o mecanismo vetorial S3, você pode ingerir documentos usando a API padrão_bulk. OpenSearch descarrega automaticamente os dados vetoriais dos knn_vector campos usando o s3vector mecanismo para o índice vetorial S3 em tempo real. Os dados pertencentes a outros knn_vector campos ou campos que usam mecanismos diferentes serão mantidos OpenSearch em sua própria camada de armazenamento.

Para todas as solicitações em massa que são reconhecidas, OpenSearch garante que todos os dados (vetoriais e não vetoriais) sejam duráveis. Se uma solicitação receber uma confirmação negativa, não há garantia de durabilidade dos documentos dessa solicitação em massa. Você deve repetir essas solicitações, de preferência depois de excluir a solicitação anterior que falhou, usando o ID do documento para evitar documentos duplicados nesses casos raros.

Exemplo de indexação em massa

POST _bulk { "index": { "_index": "my-first-s3vector-index", "_id": "1" } } { "my_vector_1": [1.5, 2.5], "price": 12.2 } { "index": { "_index": "my-first-s3vector-index", "_id": "2" } } { "my_vector_1": [2.5, 3.5], "price": 7.1 } { "index": { "_index": "my-first-s3vector-index", "_id": "3" } } { "my_vector_1": [3.5, 4.5], "price": 12.9 } { "index": { "_index": "my-first-s3vector-index", "_id": "4" } } { "my_vector_1": [5.5, 6.5], "price": 1.2 } { "index": { "_index": "my-first-s3vector-index", "_id": "5" } } { "my_vector_1": [4.5, 5.5], "price": 3.7 }

Pesquisar documentos

Você pode pesquisar seu índice usando a API _search padrão para executar consultas de texto, k-NN ou híbridas. Para consultas em knn_vector campos configurados com o s3vector mecanismo, descarrega OpenSearch automaticamente a consulta para o índice de vetores S3 correspondente.

nota

Com o s3vector motor, as consultas de pesquisa k-NN suportam um k valor máximo de 100. Isso significa que no máximo 100 vizinhos mais próximos podem ser retornados nos resultados da pesquisa.

Exemplo de consulta de pesquisa

GET my-first-s3vector-index/_search { "size": 2, "query": { "knn": { "my_vector_1": { "vector": [2.5, 3.5], "k": 2 } } } }

Você pode executar uma pesquisa vetorial filtrada no índice OpenSearch kNN usando o mecanismo s3vector. OpenSearch aplica o filtro como pós-filtro e usa o mecanismo de sobreamostragem com base em certas heurísticas para equilibrar recuperação versus latência.

Exemplo de consulta de pesquisa com filtro:

GET my-index/_search { "size": 10, "query": { "knn": { "my_vector_field": { "vector": [2.5, 3.5, 1.2, 4.8], "k": 10, "filter": { "range": { "price": { "gte": 10, "lte": 100 } } } } } } }

Parâmetros de mapeamento compatíveis

Com o mecanismo s3vector, o campo knn_vector é compatível com os seguintes parâmetros nos mapeamentos.

Parâmetros de campo vetorial
Parâmetro Obrigatório Description Valores com suporte
type Sim O tipo de campo presente no documento. knn_vector
dimension Sim A dimensão de cada vetor que será ingerido no índice. >0, <=4096
space_type Não O espaço vetorial usado para calcular a distância entre vetores. l2, cosinesimil
method.engine Sim O mecanismo de k-NN aproximado a ser usado para indexação e pesquisa. s3vector
method.name Não O método de vizinho mais próximo ""
store N/D Habilitar ou desabilitar esse parâmetro de mapeamento não é operacional, pois os dados knn_vector não são armazenados em. OpenSearch Não suportado
doc_values N/D Habilitar ou desabilitar esse parâmetro de mapeamento não é operacional, pois os dados knn_vector não são armazenados em. OpenSearch Não suportado
Importante

Os tipos de campo knn_vector aninhados não são compatíveis com o mecanismo s3vector

Medição e faturamento

Para obter informações sobre medição e cobrança desse recurso, consulte os preços do Amazon OpenSearch Service.

Desabilitar o mecanismo s3vector

Antes de desabilitar o mecanismo s3vector, exclua todos os índices que o usam atualmente. Se você não fizer isso, qualquer tentativa de desabilitar o mecanismo será malsucedida.

Observe também que habilitar ou desabilitar o mecanismo s3vector aciona uma implantação azul/verde no domínio.

Para desabilitar o mecanismo s3vector, edite a configuração do domínio e defina S3VectorsEngine.Enabled: false.