Otimização automática - 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á.

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 como documentos OpenSearch JSON em formato parquet 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 o conjunto de dados disponível como um conjunto (um ou vários) arquivos de parquet em uma pasta de bucket do Amazon S3. Por exemplo, se o conjunto de dados for dividido em dois arquivos chamados s3://dataset-bucket-us-east-1/dataset_folder/first_half.parquet es3://dataset-bucket-us-east-1/dataset_folder/second_half.parquet, você deverá colocá-lo s3://dataset-bucket-us-east-1/dataset_folder/ aqui. 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 do parquet 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_data nomeados para cada 768 dimensã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 automaticamente índices e ingerir dados), você deve configurar seu OpenSearch cluster para dar permissão de otimização automática para ingerir seu conjunto de dados de parquet 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:SubmitAutoOptimizeJob

    • opensearch:GetAutoOptimizeJob

    • opensearch:DeleteAutoOptimizeJob

    • opensearch:CancelAutoOptimizeJob

    • opensearch: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

    • 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.

Conversão de JSONL para Parquet

Se seus dados estiverem no formato JSONL, você poderá usar o seguinte script Python para convertê-los para o formato Parquet para uso com a otimização automática:

#!/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}") def print_parquet_rows(parquet_path: str, limit: int = 5): """Print first N rows from the parquet file.""" table = pq.read_table(parquet_path) df = table.to_pandas() print(f"\n=== Showing first {min(limit, len(df))} rows from {parquet_path} ===") print(df.head(limit).to_string()) print("===========================================================\n") if __name__ == "__main__": INPUT_JSON = "movies_10k.json" OUTPUT_PARQUET = "movies.parquet" # Convert JSON → Parquet json_to_parquet(INPUT_JSON, OUTPUT_PARQUET) # Print some rows from Parquet print_parquet_rows(OUTPUT_PARQUET, limit=3)

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: