Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Automatisch optimieren
Auto-Optimize ist ein Service, der Vektorindex-Optimierungen automatisiert und es Benutzern ermöglicht, ein ausgewogenes Verhältnis zwischen Suchqualität, Geschwindigkeit und Kosten zu finden, ohne dass wochenlanges manuelles Tuning durch Experten erforderlich ist. Er bewertet Indexkonfigurationen auf der Grundlage benutzerdefinierter Latenz- und Abrufanforderungen und generiert Optimierungsempfehlungen, sodass nur minimales Fachwissen erforderlich ist. Empfehlungen werden in der Regel innerhalb von 30 bis 60 Minuten übermittelt.
Die herkömmliche Konfiguration von Vektorindexen erfordert umfangreiche Fachkenntnisse und Experimente, um eine optimale Leistung zu erzielen. Parameter wie ef_construction (steuert die Qualität der Indexerstellung), m (bestimmt die Anzahl der Graphverbindungen), ef_search (steuert die HNSW-Suche) und Quantisierungsmethoden (Binäre Quantisierung (32x, 16x, 8x), Skalare Quantisierung (4x)) wirken sich sowohl auf die Suchgenauigkeit als auch auf die Ressourcennutzung erheblich aus. Die automatische Optimierung verwendet Algorithmen zur Hyperparameter-Optimierung, um Indexkonfigurationen zu ermitteln, die für Ihren Datensatz innerhalb Ihrer definierten Latenz- und Abrufanforderungen einzigartig optimal sind.
Vorteile
Die automatische Optimierung für OpenSearch bietet die folgenden Vorteile:
-
Automatisierte Parameterabstimmung — Macht das manuelle Experimentieren mit Algorithmus- (HNSW), Quantisierung, Rescoring und Engine-Parametern überflüssig, spart Zeit und reduziert die Lernkurve für die Optimierung der Vektorsuche.
-
Suchgeschwindigkeit optimieren — OpenSearch Ist standardmäßig für In-Memory-Leistung konfiguriert. Durch die automatische Optimierung werden günstige Kompromisse erkannt, die die Suchqualität verbessern und Kosten sparen, während gleichzeitig eine akzeptable Suchgeschwindigkeit beibehalten wird.
-
Kostenoptimierung — Senkt die Kosten, indem Optionen gefunden werden, um den Speicherbedarf Ihres Indexes zu reduzieren und gleichzeitig Kompromisse bei Suchqualität und Geschwindigkeit zu minimieren.
-
Optimieren Sie die Suchqualität — Erzielen Sie potenziell einen höheren Erinnerungswert als mit den Standardeinstellungen oder finden Sie günstige Kompromisse, die zu erheblichen Kosteneinsparungen bei minimalem Abrufverlust führen.
Die automatische Optimierung funktioniert zusammen mit anderen OpenSearch Funktionen, z. B. GPU-Beschleunigung für die Vektorindizierung zur umfassenden Leistungsoptimierung für Workloads bei der Vektorsuche.
Funktionsweise
Die automatische Optimierung basiert auf einer auftragsbasierten Architektur, die Ihre Vektordaten analysiert und Optimierungsempfehlungen gibt. Die wichtigsten Punkte:
-
Benutzer teilen ihre Datensätze als OpenSearch JSON-Dokumente im Parquet-Format in einem Amazon S3 S3-Bucket.
-
Sie konfigurieren serverlose Jobs zur automatischen Optimierung, indem sie ihre akzeptablen Rückruf- und Latenzschwellenwerte konfigurieren. Lockere Schwellenwerte ermöglichen es dem Service, signifikantere Kostenoptimierungen zu entdecken.
-
Automatische Optimierung von Jobs, die auf einer Infrastruktur ausgeführt werden, die vollständig von Amazon OpenSearch Service verwaltet wird. Jobs verbrauchen keine Ressourcen auf Ihrer Domain oder Ihren Sammlungen. Die Mitarbeiter arbeiten parallel, um Indexkonfigurationen auszuwerten, und verwenden Stichproben für große Datensätze, um Ergebnisse in der Regel innerhalb von 30 bis 60 Minuten zu liefern.
-
Jeder Auftrag wird nach einem vorhersehbaren Pauschalpreis abgerechnet. Preisinformationen finden Sie unter Amazon OpenSearch Service Pricing
.
Voraussetzungen
-
Datensatzformat und Berechtigungen — Der Datensatz muss als Satz (eine oder mehrere) Parquet-Dateien in einem Amazon S3 S3-Bucket-Ordner verfügbar sein. Wenn der Datensatz beispielsweise in zwei Dateien mit dem Namen
s3://dataset-bucket-us-east-1/dataset_folder/first_half.parquetund aufgeteilt ists3://dataset-bucket-us-east-1/dataset_folder/second_half.parquet, sollten Sie ihns3://dataset-bucket-us-east-1/dataset_folder/hier platzieren. Dieser Datensatz wird zur Generierung der Empfehlungen verwendet. Stellen Sie sicher, dass Ihre Verbundrolle über die folgenden Amazon S3 S3-Berechtigungen für diese Ressource verfügt:"s3:Get*", "s3:List*", "s3:Describe*". -
Geben Sie die richtigen Datensatz-Metadaten an — Der bereitgestellte Parquet-Datensatz muss Zeilen mit Float-Werten enthalten. Der Name jeder Spalte und die Dimensionalität jedes Vektors müssen den in der Konsole bereitgestellten Optionen entsprechen. Wenn der Datensatz beispielsweise benannte Vektoren enthält,
train_datadie jeder768Dimension entsprechen, müssen diese Werte mit der Konsole für die automatische Optimierung übereinstimmen. -
(Wenn Sie die Funktion zur Vektoraufnahme verwenden) — Wenn Sie die Aufnahmefunktion verwenden möchten (anhand von Empfehlungen zur automatischen Optimierung, um automatisch Index- und Aufnahmedaten zu erstellen), müssen Sie Ihren Cluster so konfigurieren, dass er die automatische Optimierungsberechtigung für die Aufnahme Ihres Parquet-Datensatzes in den OpenSearch Cluster erteilt. OpenSearch Bei OpenSearch Domänen mit einer Domänenzugriffsrichtlinie gewähren Sie der neu erstellten Rolle Zugriff über diese Richtlinie. Fügen Sie für OpenSearch Domänen mit detaillierter Zugriffskontrolle die Pipeline-Rolle als Backend-Rolle hinzu. Fügen Sie für OpenSearch serverlose Sammlungen die Pipeline-Rolle zur Datenzugriffsrichtlinie hinzu.
-
IAM-Berechtigungen — Sie benötigen die folgenden IAM-Berechtigungen, um die automatische Optimierung verwenden zu können:
opensearch:SubmitAutoOptimizeJobopensearch:GetAutoOptimizeJobopensearch:DeleteAutoOptimizeJobopensearch:CancelAutoOptimizeJobopensearch:ListAutoOptimizeJobs
Anmerkung
Dies sind identitätsbasierte Richtlinien. Auto-Optimize unterstützt keine ressourcenbasierten Richtlinien.
-
Ablauf von Anmeldeinformationen — Konfigurieren Sie Ihre Verbundbenutzersitzung so, dass die Anmeldedaten mindestens 1 Stunde ablaufen. Bei sehr großen Datensätzen oder großen Datenmengen sollten Sie erwägen, die Ablaufdauer auf bis zu 3 Stunden zu erhöhen.
Anwendungsfälle für die automatische Optimierung
Die automatische Optimierung ist in den folgenden Szenarien besonders nützlich:
Optimierung der Erstkonfiguration
Bei der ersten Implementierung von Vektorsuchanwendungen erfordert die Bestimmung der optimalen HNSW-Parameter häufig umfangreiche Tests und Fachwissen. Durch die automatische Optimierung entfällt dieser trial-and-error Prozess, da Ihre Daten und Workload-Merkmale analysiert werden, um produktionsreife Konfigurationen zu empfehlen.
Dieser Anwendungsfall ist ideal für Teams, die mit der Vektorsuche noch nicht vertraut sind, oder für Teams, die von anderen Vektordatenbankplattformen migrieren und schnell Basiskonfigurationen einrichten müssen.
Skalierung und Optimierung
Wenn Ihr Vektordatensatz von Tausenden auf Millionen von Vektoren anwächst, können Parameter, die anfangs gut funktionierten, suboptimal werden. Die automatische Optimierung empfiehlt Anpassungen, um die Leistung im großen Maßstab aufrechtzuerhalten.
Senkung der Kosten
Vektorindizes können erhebliche Rechen- und Speicherressourcen beanspruchen, insbesondere bei hochdimensionalen Einbettungen. Die automatische Optimierung identifiziert Möglichkeiten zur Kostensenkung, indem effizientere Parameterkonfigurationen gefunden werden, die das erforderliche Leistungsniveau beibehalten und gleichzeitig weniger Ressourcen verbrauchen.
Bei der automatischen Optimierung könnte beispielsweise festgestellt werden, dass Ihr aktueller m Wert (Grafikverbundenheit) höher ist als für Ihre Genauigkeitsanforderungen erforderlich, sodass Sie die Indizierungszeit und den Speicherplatz reduzieren können, ohne die Suchqualität zu beeinträchtigen.
Fehlerbehebung bei der Leistung
Wenn bei Vektorsuchoperationen eine langsame Abfrageleistung oder eine hohe Latenz auftreten, kann die automatische Optimierung Ihren Datensatz analysieren und eine optimalere Konfiguration ermitteln. Der Service bietet spezifische Empfehlungen zur Behebung von Leistungsengpässen, z. B. zur Anpassung der Grafikkonnektivität oder der Suchparameter.
Einschränkungen
-
Regionale Verfügbarkeit — Die automatische Optimierung ist nur in den folgenden Regionen verfügbar: 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
-
Sammlungstypen — Die automatische Optimierung wird nur für Sammlungen und OpenSearch Domains mit Vektorsuche (2.19, 3.1 und 3.3) unterstützt.
-
Engine-Unterstützung
Motorunterstützung nach Einsatzart Engine Serverless OpenSearch Verwaltet Lucene Nein Ja Faiß Ja Ja Nmslib Nein Nein -
Unterstützung von Algorithmen — Auto-Optimize unterstützt nur HNSW-basierte Vektorindizes.
-
Gleichzeitige Jobs — Sie können bis zu 10 gleichzeitige Optimierungsjobs pro Konto und Region ausführen. Wenn das Limit erreicht ist, können keine neuen Jobs akzeptiert werden.
-
Auftragsdauer — Optimierungsaufträge können je nach Datensatzgröße, Dimension und erforderlichen Leistungskennzahlen zwischen 15 Minuten und mehreren Stunden dauern.
-
Empfehlungen — Die automatische Optimierung schlägt nur bis zu 3 Empfehlungen vor.
-
Datensatz
Unterstützte Formate: Parkett
Datenspeicher: Amazon S3
Fakturierung und Kosten
Auto-Optimize verwendet ein Preismodell pro Auftrag, bei dem Sie für jeden erfolgreichen Optimierungsjob zahlen, unabhängig von der Datensatzgröße und den Optimierungskonfigurationen. Fehlgeschlagene oder stornierte Jobs werden Ihnen nicht in Rechnung gestellt. Darüber hinaus wird die automatische Optimierung auf einer anderen Infrastruktur als auf verwalteten oder serverlosen OpenSearch Clustern ausgeführt, sodass die Ressourcennutzung bereits vorhandener Cluster nicht beeinträchtigt wird.
Preismodell
Die Kosten für die automatische Optimierung werden getrennt von den standardmäßigen Rechen- und Speicherkosten für OpenSearch serverlose oder OpenSearch verwaltete Domänen in Rechnung gestellt.
Preisinformationen finden Sie unter Amazon OpenSearch Service Pricing
JSONL zu Parquet konvertieren
Wenn Ihre Daten im JSONL-Format vorliegen, können Sie sie mit dem folgenden Python-Skript in das Parquet-Format für die automatische Optimierung konvertieren:
#!/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)
Verwandte Funktionen
Die automatische Optimierung arbeitet mit anderen Funktionen von Amazon OpenSearch Service zusammen, um Sie bei der Erstellung und Optimierung von Vektorsuchanwendungen zu unterstützen:
-
GPU-Beschleunigung für die Vektorindizierung- Beschleunigen Sie die Erstellung von Vektorindizes mithilfe der GPU-Beschleunigung, um Zeit und Kosten für die Indizierung zu reduzieren.
-
Aufnahme von Vektoren- Schnelles Investieren und Indexieren von Vektordaten aus Amazon S3 in Ihre Domain oder Sammlung.