(Vorschau) Erweiterte Suchfunktionen mit einer Amazon S3 S3-Vektor-Engine - OpenSearch Amazon-Dienst

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.

(Vorschau) Erweiterte Suchfunktionen mit einer Amazon S3 S3-Vektor-Engine

Wichtig

Die Amazon S3 Vectors-Integration mit OpenSearch Service befindet sich in der Vorschauversion und kann sich ändern.

Amazon OpenSearch Service bietet die Möglichkeit, Amazon S3 als Vektor-Engine für Vektorindizes zu verwenden. Diese Funktion ermöglicht es Ihnen, Vektordaten auf Amazon S3 auszulagern und gleichzeitig die Vektorsuchfunktionen in Sekundenbruchteilen zu niedrigen Kosten beizubehalten.

Mit dieser Funktion werden Vektoreinbettungen in einem Amazon S3 S3-Vektorindex OpenSearch gespeichert, während andere Dokumentfelder im Speicher des OpenSearch Clusters aufbewahrt werden. Diese Architektur bietet die folgenden Vorteile:

  • Haltbarkeit: In S3 Vectors geschriebene Daten werden auf S3 gespeichert, das für eine Datenbeständigkeit von 11 bis 9 Sekunden ausgelegt ist.

  • Skalierbarkeit: Laden Sie große Vektordatensätze auf S3 aus, ohne Cluster-Speicher zu verbrauchen.

  • Wirtschaftlichkeit: Optimieren Sie die Speicherkosten für vektorlastige Workloads.

OpenSearch hat die folgenden Anforderungen für die Verwendung von S3-Vektorindizes:

  • OpenSearch Version 2.19 oder höher

  • OpenSearch Optimierte Instanzen

  • Aktuelle Patch-Version für Ihr OpenSearch Release

S3-Vektoren aktivieren

Wenn Sie eine neue Domain erstellen oder eine bestehende Domain aktualisieren, können Sie im Abschnitt Erweiterte Funktionen die Option S3-Vektoren als Engine aktivieren auswählen. Mit dieser Einstellung können OpenSearch Sie einen S3-Vektor-Bucket erstellen, wenn Sie S3-Vektoren als Engine verwenden. Wenn Sie diese Option aktivieren, OpenSearch konfiguriert Sie S3 Vectors für Ihre Domain wie folgt:

  1. Zwei neue Grants für den mit Ihrer Domain konfigurierten AWS KMS Schlüssel erstellen:

    • Ein Zuschuss für die Indexierungsaufträge im Hintergrund von S3 Vectors mit Entschlüsselungsrechten

    • Ein Zuschuss für die Erstellung OpenSearch von S3-Vektor-Buckets mit Berechtigungen GenerateDataKey

  2. Konfiguration des KMS-Schlüssels, der von Ihrer OpenSearch Domain als CMK für die Verschlüsselung aller übrigen Vektorindexdaten verwendet wird.

Indizes mit der S3-Vektor-Engine erstellen

Nachdem Sie eine Domain konfiguriert haben, können Sie einen oder mehrere k-NN-Indizes mit Feldern erstellen, die s3vector als Backend-Vektor-Engine in den Indexzuordnungen verwendet werden. Sie können je nach Anwendungsfall verschiedene Vektorfelder mit unterschiedlichen Engine-Typen konfigurieren.

Wichtig

Sie können die s3vector Engine nur verwenden, um eine Felddefinition während der Indexerstellung zuzuordnen. Sie können die Zuordnung mit der s3vector Engine nach der Indexerstellung nicht hinzufügen oder aktualisieren.

Hier sind einige Beispiele, die S3-Vektor-Engine-Indizes erstellen.

Beispiel: Erstellen eines k-NN-Indexes mit der S3-Vektor-Engine

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" } } } }

Beispiel: Erstellung eines k-NN-Index sowohl mit der S3-Vektor- als auch mit der FAISS-Engine

Dieses Beispiel unterstreicht die Tatsache, dass Sie mehrere Vektor-Engines innerhalb desselben Index verwenden können.

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 } } } } } }

Nicht unterstütztes Beispiel: Hinzufügen einer S3-Vektor-Engine nach der Indexerstellung

Der folgende Ansatz wird nicht unterstützt und schlägt fehl.

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" } } }

Funktionelle Einschränkungen

Beachten Sie die folgenden Einschränkungen, bevor Sie die s3vector Engine in einem Index verwenden:

Funktionen und Verhaltensweisen, die von der s3vector-Engine nicht unterstützt werden
Funktion Behavior

Split/Shrink/CloneIndex

Diese APIs schlagen fehl, wenn sie mit einem Index verwendet werden, der mit der s3vector Engine im knn_vector Feld konfiguriert ist.

Snapshots

Indizes, die die s3vector Engine verwenden, unterstützen keine Snapshots. Für verwaltete Domänen:

  • Automatisierte Snapshots enthalten nur Indizes, die die s3vector Engine nicht verwenden.

  • Manuelle Snapshot-Anfragen für s3vector Indizes schlagen fehl.

Anmerkung

Snapshots werden zwar nicht für die point-in-time Wiederherstellung unterstützt, aber die s3vector Engine bietet zusammen mit OpenSearch optimierten Instanzen eine Haltbarkeit von 11 Neunen.

UltraWarm Stufe

Mit der s3vector Engine konfigurierte Indizes können nicht zur UltraWarm Stufe migriert werden.

Cluster-übergreifende Replikation

Mit der s3vector Engine konfigurierte Indizes unterstützen keine clusterübergreifende Replikation.

Schutz vor versehentlichem Löschen

Da Snapshots für Indizes, die die s3vector Engine verwenden, nicht unterstützt werden, ist der Schutz vor versehentlichem Löschen nicht verfügbar. Sie können weiterhin andere Indizes in der Domain wiederherstellen.

Radiale Suche

Abfragen mit radialer Suche werden für Felder, die die s3vector Engine verwenden, nicht unterstützt.

Dokumente werden indexiert

Nachdem Sie einen Index mit der S3-Vektor-Engine erstellt haben, können Sie Dokumente mithilfe der _bulk Standard-API aufnehmen. OpenSearch überträgt Vektordaten von knn_vector Feldern, die die s3vector Engine verwenden, automatisch in Echtzeit in den S3-Vektorindex. Daten, die zu anderen Feldern oder knn_vector Feldern gehören, die andere Engines verwenden, werden OpenSearch in einer eigenen Speicherebene gespeichert.

OpenSearch Garantiert für alle bestätigten Sammelanfragen, dass alle Daten (Vektordaten und Nicht-Vektordaten) dauerhaft sind. Wenn eine Anfrage negativ bestätigt wird, gibt es keine Garantie für die Dauerhaftigkeit der Dokumente in dieser Sammelanfrage. Sie sollten solche Anfragen erneut versuchen.

Beispiel für eine Massenindizierung

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 }

Dokumente durchsuchen

Sie können Ihren Index mithilfe der _search Standard-API durchsuchen, um Text-, k-NN- oder Hybridanfragen auszuführen. Bei Abfragen von knn_vector Feldern, die mit der s3vector Engine konfiguriert wurden, OpenSearch wird die Abfrage automatisch in den entsprechenden S3-Vektorindex ausgelagert.

Anmerkung

Bei der s3vector Engine gilt die Aktualisierungssemantik nur für Felder, die die Engine nicht verwendens3vector. Ihre ausgelagerten Vektordaten sind jedoch s3vector sofort sichtbar, nachdem ein Dokument erfolgreich indexiert wurde.

Beispiel für eine Suchabfrage

GET my-first-s3vector-index/_search { "size": 2, "query": { "knn": { "my_vector_1": { "vector": [2.5, 3.5], "k": 2 } } } }

Unterstützte Zuordnungsparameter

Mit der s3vector Engine unterstützt das knn_vector Feld die folgenden Parameter in den Zuordnungen.

Vektor-Feldparameter
Parameter Erforderlich Beschreibung Unterstützte Werte
type Ja Der Feldtyp, der im Dokument vorhanden ist. knn_vector
dimension Ja Die Dimension jedes Vektors, der in den Index aufgenommen wird. >0, <=4096
space_type Nein Der Vektorraum, der zur Berechnung des Abstands zwischen Vektoren verwendet wird. l2, cosinesimil
method.engine Ja Die ungefähre k-NN-Engine, die für Indizierung und Suche verwendet werden soll. s3vector
method.name Nein Die Methode „Nächster Nachbar“ ""
Wichtig

Verschachtelte knn_vector Feldtypen werden von der Engine nicht unterstützt s3vector

Erfassung und Abrechnung

Bis zur Ankündigung der Zählerfassung wird diese Funktion nicht in Rechnung gestellt.

Deaktivierung der s3vector-Engine

Bevor Sie die s3vector Engine deaktivieren, löschen Sie alle Indizes, die sie derzeit verwenden. Wenn Sie dies nicht tun, schlägt jeder Versuch, die Engine zu deaktivieren, fehl.

Beachten Sie auch, dass die Aktivierung oder Deaktivierung der s3vector Engine eine blaue/grüne Bereitstellung auf Ihrer Domain auslöst.

Um die s3vector Engine zu deaktivieren, bearbeiten Sie Ihre Domain-Konfiguration und stellen Sie sie ein. S3VectorsEngine.Enabled: false