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á.
Otimização automática
A otimização automática é um serviço que automatiza as otimizações do índice vetorial, permitindo que os usuários equilibrem a qualidade, a velocidade e o custo da pesquisa sem exigir semanas de ajustes manuais especializados. Ele avalia as configurações do índice com base nos requisitos de latência e recall definidos pelo usuário e gera recomendações de otimização, portanto, é necessária uma experiência mínima. Normalmente, as recomendações são entregues em 30 a 60 minutos.
A configuração tradicional do índice vetorial requer experiência e experimentação significativas para alcançar o desempenho ideal. Parâmetros como ef_construction (que controla a qualidade de construção do índice), m (que determina o número de conexões gráficas), ef_search (que controla a pesquisa HNSW) e métodos de quantização (quantização binária (32x, 16x, 8x), quantização escalar (4x)) afetam significativamente a precisão da pesquisa e a utilização de recursos. A otimização automática usa algoritmos de otimização de hiperparâmetros para descobrir configurações de índice que são exclusivamente ideais para seu conjunto de dados dentro dos requisitos definidos de latência e recuperação.
Benefícios
A otimização automática para OpenSearch fornece os seguintes benefícios:
-
Ajuste automatizado de parâmetros - Elimina a experimentação manual com algoritmo (HNSW), quantização, repontuação e parâmetros do mecanismo, economizando tempo e reduzindo a curva de aprendizado para a otimização da pesquisa vetorial.
-
Otimize a velocidade de pesquisa - Por padrão, OpenSearch está configurado para desempenho na memória. A otimização automática descobre compensações favoráveis que melhoram a qualidade da pesquisa e a economia de custos, mantendo uma velocidade de pesquisa aceitável.
-
Otimização de custos - reduz os custos ao encontrar opções para reduzir seus requisitos de memória de índice e, ao mesmo tempo, minimizar as compensações de qualidade e velocidade da pesquisa.
-
Otimize a qualidade da pesquisa - Ofereça potencialmente um recall maior do que as configurações padrão ou descubra compensações favoráveis que proporcionam economias de custo significativas com perda mínima de recall.
A otimização automática funciona junto com outros OpenSearch recursos, como Aceleração por GPU para indexação vetorial fornecer uma otimização abrangente do desempenho para cargas de trabalho de pesquisa vetorial.
Como funciona
A otimização automática opera por meio de uma arquitetura baseada em tarefas que analisa seus dados vetoriais e fornece recomendações de otimização. Principais pontos:
-
Os usuários compartilham seus conjuntos de dados no formato Parquet ou JSONL em um bucket do Amazon S3.
-
Eles configuram tarefas de otimização automática sem servidor configurando seus limites aceitáveis de recuperação e latência. Limites mais flexíveis permitem que o serviço descubra otimizações de custo mais significativas.
-
Otimize automaticamente as tarefas executadas em uma infraestrutura totalmente gerenciada pelo Amazon Service. OpenSearch Os trabalhos não consomem recursos em seu domínio ou coleções. Os trabalhadores trabalham paralelamente para avaliar as configurações do índice e usam a amostragem em grandes conjuntos de dados para fornecer resultados normalmente em 30 a 60 minutos.
-
Cada trabalho é cobrado com uma taxa fixa previsível. Para obter informações sobre preços, consulte Amazon OpenSearch Service Pricing
.
Pré-requisitos
-
Formato e permissões do conjunto de dados - Você deve ter seu conjunto de dados disponível como um ou mais arquivos Parquet ou JSONL em uma pasta de bucket do Amazon S3. Por exemplo:
-
Parquet:
s3://dataset-bucket-us-east-1/dataset_folder/first_half.parquetes3://dataset-bucket-us-east-1/dataset_folder/second_half.parquet -
JSON:
s3://dataset-bucket-us-east-1/dataset_folder/data.jsonl
Forneça o URI da pasta anexa (por exemplo,
s3://dataset-bucket-us-east-1/dataset_folder/). A pasta deve conter arquivos de um único formato — não misture arquivos Parquet e JSONL na mesma pasta. Esse conjunto de dados será usado para gerar as recomendações. Certifique-se de que sua função federada tenha as seguintes permissões do Amazon S3 nesse recurso:."s3:Get*", "s3:List*", "s3:Describe*" -
-
Especifique os metadados corretos do conjunto de dados: o conjunto de dados fornecido deve conter linhas de valores flutuantes. O nome de cada coluna e a dimensionalidade de cada vetor devem corresponder às opções fornecidas no console. Por exemplo, se o conjunto de dados contiver vetores
train_datanomeados para cada768dimensão, esses valores deverão corresponder ao console de otimização automática. -
(Se estiver usando o recurso de ingestão vetorial) - Se você planeja utilizar o recurso de ingestão (seguindo recomendações de otimização automática para criar índices e ingerir dados automaticamente), você deve configurar seu OpenSearch cluster para dar permissão de otimização automática para ingerir seu conjunto de dados no cluster. OpenSearch Para OpenSearch domínios com uma política de acesso ao domínio, conceda à função recém-criada acesso por meio dessa política. Para OpenSearch domínios com controle de acesso refinado, adicione a função de pipeline como uma função de back-end. Para coleções OpenSearch sem servidor, adicione a função de pipeline à política de acesso a dados.
-
Permissões do IAM — você precisa das seguintes permissões do IAM para usar a otimização automática:
opensearch:SubmitAutoOptimizeJobopensearch:GetAutoOptimizeJobopensearch:DeleteAutoOptimizeJobopensearch:CancelAutoOptimizeJobopensearch:ListAutoOptimizeJobs
nota
Essas são políticas baseadas em identidade. A otimização automática não oferece suporte a políticas baseadas em recursos.
-
Expiração da credencial - configure sua sessão de usuário federado para ter uma expiração mínima de credencial de pelo menos 1 hora. Para conjuntos de dados muito grandes ou dimensões altas, considere aumentar a duração da expiração em até 3 horas.
Casos de uso para otimização automática
A otimização automática é particularmente valiosa nos seguintes cenários:
Otimização da configuração inicial
Ao implantar pela primeira vez aplicativos de pesquisa vetorial, determinar os parâmetros ideais de HNSW geralmente requer testes extensivos e experiência no domínio. A otimização automática elimina esse trial-and-error processo analisando seus dados e as características da carga de trabalho para recomendar configurações prontas para produção.
Esse caso de uso é ideal para equipes iniciantes na pesquisa vetorial ou para aquelas que estão migrando de outras plataformas de banco de dados vetoriais e que precisam estabelecer configurações básicas rapidamente.
Otimização de escalabilidade
À medida que seu conjunto de dados vetoriais cresce de milhares para milhões de vetores, os parâmetros que funcionaram bem inicialmente podem ficar abaixo do ideal. A otimização automática recomenda ajustes para manter o desempenho em grande escala.
Redução de custos
Os índices vetoriais podem consumir recursos significativos de computação e armazenamento, especialmente com incorporações de alta dimensão. A otimização automática identifica oportunidades de reduzir custos encontrando configurações de parâmetros mais eficientes que mantêm os níveis de desempenho necessários enquanto usam menos recursos.
Por exemplo, a otimização automática pode descobrir que seu m valor atual (conexão gráfica) é maior do que o necessário para seus requisitos de precisão, permitindo que você reduza o tempo de indexação e o armazenamento sem afetar a qualidade da pesquisa.
Solução de problemas de performance
Ao experimentar um desempenho de consulta lento ou alta latência nas operações de pesquisa vetorial, a otimização automática pode analisar seu conjunto de dados e identificar uma configuração mais ideal. O serviço fornece recomendações específicas para lidar com gargalos de desempenho, como ajustar a conectividade gráfica ou os parâmetros de pesquisa.
Limitações
-
Disponibilidade regional — a otimização automática está disponível somente nas seguintes AWS regiões:
ap-south-1
eu-west-1
us-west-2
us-east-2
us-east-1
eu-central-1
ap-southeast-2
ap-northeast-1
ap-southeast-1
-
Tipos de coleção - A otimização automática é suportada somente para coleções e OpenSearch domínios de pesquisa vetorial (2.19, 3.1 e 3.3).
-
Suporte do motor
Suporte do mecanismo por tipo de implantação Mecanismo Sem servidor OpenSearch Gerenciado Lucene Não Sim Faiss Sim Sim Nmslib Não Não -
Suporte a algoritmos - A otimização automática suporta somente índices vetoriais baseados em HNSW.
-
Trabalhos simultâneos - Você pode executar até 10 trabalhos de otimização simultâneos por conta por região. Nenhum novo emprego pode ser aceito se o limite for atingido.
-
Duração do trabalho — Os trabalhos de otimização podem levar de 15 minutos a várias horas, dependendo do tamanho do conjunto de dados, da dimensão e das métricas de desempenho necessárias.
-
Recomendações - A otimização automática sugere apenas até 3 recomendações.
-
Conjunto de dados
Formatos suportados: Parquet, JSONL
Armazenamento de dados: Amazon S3
Faturamento e custos
A otimização automática usa um modelo de precificação por trabalho em que você paga por cada trabalho de otimização bem-sucedido, independentemente do tamanho do conjunto de dados e das configurações de otimização. Você não será cobrado por trabalhos fracassados ou cancelados. Além disso, a otimização automática é executada em uma infraestrutura diferente da dos OpenSearch clusters gerenciados ou sem servidor, portanto, não afeta a utilização de recursos dos clusters preexistentes.
Modelo de definição de preços
Os custos de otimização automática são cobrados separadamente dos custos padrão de computação e armazenamento em domínio OpenSearch gerenciado ou OpenSearch sem servidor.
Para obter informações sobre preços, consulte Amazon OpenSearch Service Pricing
Formatos de dados compatíveis
A otimização automática oferece suporte aos seguintes formatos de dados para conjuntos de dados vetoriais armazenados no Amazon S3:
Formato Parquet
O Parquet é um formato de armazenamento em colunas otimizado para cargas de trabalho analíticas. Cada arquivo Parquet deve conter uma coluna de matrizes flutuantes representando seus dados vetoriais.
Exemplo de estrutura de arquivo Parquet (vista como uma tabela):
| id | train_data | |-----|--------------------------------| | 1 | [0.12, 0.45, 0.78, ..., 0.33] | | 2 | [0.56, 0.89, 0.12, ..., 0.67] | | 3 | [0.34, 0.67, 0.90, ..., 0.11] |
Formato JSONL
JSONL (Linhas JSON) é um formato de texto em que cada linha é um objeto JSON válido. Cada linha deve conter um campo com uma matriz flutuante representando seus dados vetoriais.
Exemplo de arquivo JSONL:
{"id": 1, "train_data": [0.12, 0.45, 0.78, 0.33]} {"id": 2, "train_data": [0.56, 0.89, 0.12, 0.67]} {"id": 3, "train_data": [0.34, 0.67, 0.90, 0.11]}
Conversão entre formatos
Se seus dados estiverem em um formato diferente, você poderá usar os seguintes scripts Python para convertê-los.
Converter JSON ou JSONL em Parquet
#!/usr/bin/env python3 import json import pyarrow as pa import pyarrow.parquet as pq from pathlib import Path from typing import Any, Dict, List def load_json_any(path: Path) -> List[Dict[str, Any]]: """ Load JSON that can be: - a list of objects - a single object - JSON Lines (one object per line) Returns list[dict]. """ text = path.read_text().strip() # Try full JSON file try: obj = json.loads(text) if isinstance(obj, list): return obj if isinstance(obj, dict): return [obj] except json.JSONDecodeError: pass # Fallback → JSON Lines records = [] for i, line in enumerate(text.splitlines(), start=1): line = line.strip() if not line: continue try: rec = json.loads(line) except json.JSONDecodeError as e: raise ValueError(f"Invalid JSON on line {i}: {e}") if not isinstance(rec, dict): raise ValueError(f"Line {i} must contain a JSON object") records.append(rec) return records def json_to_parquet(json_path: str, parquet_path: str, compression: str = "snappy"): """Convert ANY JSON to Parquet (schema inferred).""" records = load_json_any(Path(json_path)) table = pa.Table.from_pylist(records) pq.write_table(table, parquet_path, compression=compression) print(f"Wrote {len(records)} rows to {parquet_path}") if __name__ == "__main__": INPUT_JSON = "vectors.jsonl" OUTPUT_PARQUET = "vectors.parquet" json_to_parquet(INPUT_JSON, OUTPUT_PARQUET)
Conversão de Parquet para JSONL
#!/usr/bin/env python3 import json import pyarrow.parquet as pq def parquet_to_jsonl(parquet_path: str, jsonl_path: str): """Convert a Parquet file to JSONL format.""" table = pq.read_table(parquet_path) rows = table.to_pylist() with open(jsonl_path, "w") as f: for row in rows: f.write(json.dumps(row) + "\n") print(f"Wrote {len(rows)} rows to {jsonl_path}") if __name__ == "__main__": INPUT_PARQUET = "vectors.parquet" OUTPUT_JSONL = "vectors.jsonl" parquet_to_jsonl(INPUT_PARQUET, OUTPUT_JSONL)
Características relacionadas
A otimização automática funciona em conjunto com outros recursos do Amazon OpenSearch Service para ajudar você a criar e otimizar aplicativos de pesquisa vetorial:
-
Aceleração por GPU para indexação vetorial- Acelere a criação de índices vetoriais usando a aceleração por GPU para reduzir o tempo e os custos de indexação.
-
Ingestão de vetores- Ingira e indexe rapidamente dados vetoriais do Amazon S3 em seu domínio ou coleção.