Ottimizzazione automatica - OpenSearch Servizio Amazon

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Ottimizzazione automatica

Auto-optimize è un servizio che automatizza le ottimizzazioni degli indici vettoriali, consentendo agli utenti di bilanciare qualità, velocità e costi della ricerca senza richiedere settimane di ottimizzazione manuale da parte di esperti. Valuta le configurazioni degli indici in base ai requisiti di latenza e richiamo definiti dall'utente e genera consigli di ottimizzazione, quindi è richiesta una competenza minima. I consigli vengono in genere forniti entro 30-60 minuti.

La configurazione tradizionale degli indici vettoriali richiede competenze e sperimentazioni significative per ottenere prestazioni ottimali. Parametri come ef_construction (che controlla la qualità di costruzione dell'indice), m (che determina il numero di connessioni grafiche), ef_search (che controlla la ricerca HNSW) e metodi di quantizzazione (quantizzazione binaria (32x, 16x, 8x), quantizzazione scalare (4x)) influiscono in modo significativo sia sulla precisione della ricerca che sull'utilizzo delle risorse. L'ottimizzazione automatica utilizza algoritmi di ottimizzazione degli iperparametri per scoprire configurazioni di indici che sono unicamente ottimali per il set di dati entro i requisiti di latenza e richiamo definiti.

Vantaggi

L'ottimizzazione automatica per offre i seguenti vantaggi: OpenSearch

  • Regolazione automatica dei parametri: elimina la sperimentazione manuale con algoritmi (HNSW), quantizzazione, rescoring e parametri del motore, risparmiando tempo e riducendo la curva di apprendimento per l'ottimizzazione della ricerca vettoriale.

  • Ottimizza la velocità di ricerca: per impostazione predefinita, è configurato per le prestazioni in memoria. OpenSearch L'ottimizzazione automatica rileva compromessi favorevoli che migliorano la qualità della ricerca e consentono di risparmiare sui costi, mantenendo al contempo una velocità di ricerca accettabile.

  • Ottimizzazione dei costi: riduce i costi trovando opzioni per ridurre i requisiti di memoria dell'indice, riducendo al minimo i compromessi in termini di qualità della ricerca e velocità.

  • Ottimizza la qualità della ricerca: offri potenzialmente un numero di richiami più elevato rispetto alle impostazioni predefinite o scopri compromessi vantaggiosi che offrono risparmi significativi sui costi con una perdita minima di richiami.

L'ottimizzazione automatica funziona insieme ad altre OpenSearch funzionalità come l'ottimizzazione completa delle prestazioni Accelerazione GPU per l'indicizzazione vettoriale per i carichi di lavoro di ricerca vettoriale.

Come funziona

L'ottimizzazione automatica funziona attraverso un'architettura basata sul lavoro che analizza i dati vettoriali e fornisce consigli di ottimizzazione. Punti chiave:

  • Gli utenti condividono i propri set di dati come documenti OpenSearch JSON in formato parquet in un bucket Amazon S3.

  • Configurano i processi di ottimizzazione automatica senza server configurando le soglie di richiamo e latenza accettabili. Soglie più rilassate consentono al servizio di scoprire ottimizzazioni dei costi più significative.

  • Ottimizza automaticamente i lavori eseguiti su un'infrastruttura completamente gestita da Amazon Service. OpenSearch I lavori non consumano risorse sul tuo dominio o sulle tue raccolte. I lavoratori eseguono in parallelo per valutare le configurazioni degli indici e utilizzano il campionamento su set di dati di grandi dimensioni per fornire risultati in genere entro 30-60 minuti.

  • Ogni lavoro viene fatturato in base a una tariffa forfettaria prevedibile. Per informazioni sui prezzi, consulta la pagina dei prezzi OpenSearch di Amazon Service.

Prerequisiti

  • Formato e autorizzazioni del set di dati: è necessario che il set di dati sia disponibile come set (uno o più) file parquet in una cartella bucket Amazon S3. Ad esempio, se il set di dati è diviso in due file chiamati s3://dataset-bucket-us-east-1/dataset_folder/first_half.parquet es3://dataset-bucket-us-east-1/dataset_folder/second_half.parquet, allora dovresti posizionarlo qui. s3://dataset-bucket-us-east-1/dataset_folder/ Questo set di dati verrà utilizzato per generare i consigli. Assicurati che il tuo ruolo federato disponga delle seguenti autorizzazioni Amazon S3 su quella risorsa:. "s3:Get*", "s3:List*", "s3:Describe*"

  • Specificate i metadati corretti del set di dati: il set di dati in parquet fornito deve contenere righe di valori float. Il nome di ogni colonna e la dimensionalità di ogni vettore devono corrispondere alle opzioni fornite nella console. Ad esempio, se il set di dati contiene vettori denominati train_data che rappresentano ciascuna 768 dimensione, questi valori devono corrispondere alla console di ottimizzazione automatica.

  • (Se si utilizza la funzione di inserimento vettoriale) - Se si prevede di utilizzare la funzione di inserimento (seguendo i consigli di ottimizzazione automatica per creare automaticamente dati di indice e inserimento), è necessario configurare il cluster in modo da concedere l'autorizzazione all'ottimizzazione automatica per importare il set di dati del parquet nel OpenSearch cluster. OpenSearch Per i OpenSearch domini con una politica di accesso al dominio, concedi l'accesso al ruolo appena creato tramite tale politica. Per i OpenSearch domini con controllo granulare degli accessi, aggiungi il ruolo pipeline come ruolo di backend. Per le raccolte OpenSearch serverless, aggiungi il ruolo pipeline alla politica di accesso ai dati.

  • Autorizzazioni IAM: sono necessarie le seguenti autorizzazioni IAM per utilizzare l'ottimizzazione automatica:

    • opensearch:SubmitAutoOptimizeJob

    • opensearch:GetAutoOptimizeJob

    • opensearch:DeleteAutoOptimizeJob

    • opensearch:CancelAutoOptimizeJob

    • opensearch:ListAutoOptimizeJobs

    Nota

    Si tratta di politiche basate sull'identità. L'ottimizzazione automatica non supporta politiche basate sulle risorse.

  • Scadenza delle credenziali: configura la sessione utente federata in modo che abbia una scadenza minima delle credenziali di almeno 1 ora. Per set di dati molto grandi o di dimensioni elevate, valuta la possibilità di aumentare la durata di scadenza fino a 3 ore.

Casi d'uso per l'ottimizzazione automatica

L'ottimizzazione automatica è particolarmente utile nei seguenti scenari:

Ottimizzazione della configurazione iniziale

Quando si implementano per la prima volta applicazioni di ricerca vettoriale, la determinazione dei parametri HNSW ottimali richiede spesso test approfonditi e competenze di settore. L'ottimizzazione automatica elimina questo trial-and-error processo analizzando i dati e le caratteristiche del carico di lavoro per consigliare configurazioni pronte per la produzione.

Questo caso d'uso è ideale per i team alle prime armi con la ricerca vettoriale o per coloro che migrano da altre piattaforme di database vettoriali e che devono stabilire rapidamente configurazioni di base.

Ottimizzazione della scalabilità

Man mano che il set di dati vettoriali passa da migliaia a milioni di vettori, i parametri che inizialmente funzionavano bene potrebbero diventare non ottimali. L'ottimizzazione automatica consiglia le regolazioni per mantenere le prestazioni su larga scala.

Riduzione dei costi

Gli indici vettoriali possono consumare notevoli risorse di calcolo e archiviazione, in particolare con incorporamenti ad alta dimensione. L'ottimizzazione automatica identifica le opportunità di riduzione dei costi trovando configurazioni di parametri più efficienti che mantengano i livelli di prestazioni richiesti utilizzando meno risorse.

Ad esempio, l'ottimizzazione automatica potrebbe scoprire che il m valore corrente (connessione al grafico) è superiore a quello necessario per i requisiti di precisione, consentendoti di ridurre il tempo di indicizzazione e lo spazio di archiviazione senza influire sulla qualità della ricerca.

Risoluzione dei problemi relativi alle prestazioni

In caso di prestazioni di query lente o latenza elevata nelle operazioni di ricerca vettoriale, l'ottimizzazione automatica può analizzare il set di dati e identificare una configurazione più ottimale. Il servizio fornisce raccomandazioni specifiche per risolvere i problemi di prestazioni, come la regolazione della connettività dei grafici o dei parametri di ricerca.

Limitazioni

  • Disponibilità regionale: l'ottimizzazione automatica è disponibile solo nelle seguenti regioni: AWS

    • 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

  • Tipi di raccolta: l'ottimizzazione automatica è supportata solo per le raccolte e i OpenSearch domini di ricerca vettoriale (2.19, 3.1 e 3.3).

  • Supporto per i motori

    Supporto del motore per tipo di implementazione
    Motore Serverless OpenSearch Gestito
    Lucene No
    Faiss
    Nmslib No No
  • Supporto per algoritmi: l'ottimizzazione automatica supporta solo indici vettoriali basati su HNSW.

  • Lavori simultanei: puoi eseguire fino a 10 lavori di ottimizzazione simultanei per account per regione. Nessun nuovo lavoro può essere accettato se viene raggiunto il limite.

  • Durata del lavoro: i processi di ottimizzazione possono richiedere da 15 minuti a diverse ore a seconda della dimensione del set di dati, della dimensione e delle metriche prestazionali richieste.

  • Consigli: l'ottimizzazione automatica suggerisce solo fino a 3 consigli.

  • Set di dati

    • Formati supportati: parquet

    • Archivio dati: Amazon S3

Fatturazione e costi

L'ottimizzazione automatica utilizza un modello di prezzo per processo in cui si paga per ogni lavoro di ottimizzazione riuscito indipendentemente dalle dimensioni del set di dati e dalle configurazioni di ottimizzazione. Non ti verranno addebitati costi per lavori non riusciti o annullati. Inoltre, l'ottimizzazione automatica viene eseguita su un'infrastruttura separata rispetto ai OpenSearch cluster gestiti o senza server, quindi non influisce sull'utilizzo delle risorse dei cluster preesistenti.

Modello tariffario

I costi di ottimizzazione automatica vengono fatturati separatamente dai costi standard di elaborazione e storage dei domini OpenSearch serverless o gestiti. OpenSearch

Per informazioni sui prezzi, consulta la pagina dei prezzi OpenSearch di Amazon Service.

Converti JSONL in Parquet

Se i tuoi dati sono in formato JSONL, puoi usare il seguente script Python per convertirli in formato Parquet da utilizzare con l'ottimizzazione automatica:

#!/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)

Auto-optimize collabora con altre funzionalità OpenSearch di Amazon Service per aiutarti a creare e ottimizzare applicazioni di ricerca vettoriale: