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:
-
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
-
-
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:
| Recurso | Comportamento |
|---|---|
Índice do Split/Shrink/Clone |
Eles APIs falham quando usados com um índice configurado com o |
Snapshots |
Os índices que usam o mecanismo
notaEmbora os snapshots não sejam compatíveis com a point-in-time recuperação, o |
UltraWarm nível |
Os índices configurados com o |
Replicação entre clusters |
Os índices configurados com o mecanismo |
Proteção contra exclusão acidental |
Como os snapshots não são compatíveis com índices que usam o mecanismo |
Pesquisa radial |
As consultas com pesquisa radial não são compatíveis em campos que usam o mecanismo |
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â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.