Tutorial: Erste Schritte mit S3 Vectors - Amazon Simple Storage Service

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.

Tutorial: Erste Schritte mit S3 Vectors

Anmerkung

Amazon S3 Vectors befindet sich in der Vorschauversion für Amazon Simple Storage Service und kann sich ändern.

In diesem Tutorial erstellen Sie einen S3-Vektor-Bucket und einen Vektorindex in einer AWS-Region in der Amazon S3 S3-Konsole. Als Nächstes verwenden Sie ein Amazon Bedrock-Einbettungsmodell, um Vektoreinbettungen Ihrer Daten zu generieren und sie in Ihrem Vektorindex zu speichern, um semantische Suchen durchzuführen.

Eröffnen Sie zunächst ein AWS Konto, falls Sie noch keines haben. Weitere Informationen zur Einrichtung eines Kontos finden Sie unterErste Schritte mit Amazon S3.

Schritt 1: Erstellen Sie mit der Konsole einen Vektor-Bucket

S3-Vektor-Buckets sind eine Art von Amazon S3 S3-Bucket, der speziell zum Speichern und Abfragen von Vektoren entwickelt wurde. Sie verwenden spezielle API-Operationen, um Vektordaten zu schreiben und abzufragen. Sie können den Zugriff auf Ihre Vektordaten mit Zugriffskontrollmechanismen wie identitätsbasierten IAM-Richtlinien und ressourcenbasierten Richtlinien kontrollieren.

In diesem Schritt verwenden Sie die Amazon S3 S3-Konsole, um Ihren ersten Vektor-Bucket zu erstellen. Weitere Möglichkeiten, einen Vektor-Bucket zu erstellen, finden Sie unterEinen Vektor-Bucket erstellen.

So erstellen Sie einen Vektor-Bucket

  1. Melden Sie sich bei der an AWS Management Console und öffnen Sie die Amazon S3 S3-Konsole unter https://console.aws.amazon.com/s3/.

  2. Wählen Sie im linken Navigationsbereich Vector Buckets aus.

  3. Wählen Sie auf der Seite Vektor-Buckets die Option Vektor-Bucket erstellen aus.

  4. Geben Sie auf der Seite Vektor-Bucket erstellen in das Feld Vector-Bucket-Name einen Namen ein. In diesem Tutorial verwenden media-embeddings wir den Namen des Vektor-Buckets. Vektor-Bucket-Namen müssen 3 bis 63 Zeichen lang sein und innerhalb eines eindeutig sein AWS-Region. Gültige Zeichen sind Kleinbuchstaben (a-z), Zahlen (0-9) und Bindestriche (-).

    Anmerkung

    Der Name des Vektor-Buckets kann nicht geändert werden, nachdem der Bucket erstellt wurde.

  5. Wählen Sie unter Verschlüsselung die Option Verschlüsselungstyp angeben aus. Sie haben die Möglichkeit, den Verschlüsselungstyp als serverseitige Verschlüsselung mit AWS Key Management Service Schlüsseln (SSE-KMS) oder als serverseitige Standardverschlüsselung mit verwalteten Amazon S3 S3-Schlüsseln (SSE-S3) anzugeben. In diesem Tutorial wählen wir serverseitige Verschlüsselung mit verwalteten Amazon S3 S3-Schlüsseln (SSE-S3). Weitere Informationen zur Einstellung der Verschlüsselungskonfiguration für Vektor-Buckets finden Sie unter. Datenschutz und Verschlüsselung in S3 Vectors

    Anmerkung

    Der Verschlüsselungstyp kann nicht geändert werden, nachdem der Vektor-Bucket erstellt wurde.

  6. Wählen Sie „Vektor-Bucket erstellen“.

Schritt 2: Erstellen Sie mit der Konsole einen Vektorindex in einem Vektor-Bucket

Anmerkung

Wählen Sie Ihre Konfigurationsparameter für den Vektorindex sorgfältig aus. Nachdem Sie einen Vektorindex erstellt haben, können Sie den Namen, die Dimension, die Entfernungsmetrik oder die nicht filterbaren Metadatenschlüssel des Vektorindexes nicht mehr aktualisieren. Um einen dieser Werte zu ändern, müssen Sie einen neuen Vektorindex erstellen.

In diesem Schritt erstellen Sie einen Vektorindex in Ihrem Vektor-Bucket. Der Vektorindex wird verwendet, um Ihre Vektoreinbettungen zu speichern und abzufragen. Weitere Hinweise zu Vektorindizes finden Sie unter. Vektor-Indizes

So erstellen Sie einen Vektorindex

  1. Navigieren Sie in der Vector-Bucket-Liste der Amazon S3 S3-Konsole zu dem neu erstellten Vektor-Bucket.

  2. Wählen Sie Vektorindex erstellen.

  3. Geben Sie auf der Seite Vektorindex erstellen einen Namen in das Feld Vektorindexname ein. In diesem Tutorial verwenden movies wir den Namen für den Vektorindex.

    Vektorindexnamen müssen 3 bis 63 Zeichen lang sein und innerhalb dieses Vektor-Buckets eindeutig sein. Gültige Zeichen sind Kleinbuchstaben (a-z), Zahlen (0-9), Bindestriche (-) und Punkte (.).

    Der Name des Vektorindex kann nach der Indexerstellung nicht geändert werden.

  4. Geben Sie unter Dimension einen numerischen Wert zwischen 1 und 4096 an, der bestimmt, wie viele Zahlen in jedem Vektor enthalten sein sollen, der von Ihrem Vektoreinbettungsmodell generiert wird. Einbettungsmodelle sind spezialisierte Modelle für maschinelles Lernen (ML), die Daten (wie Text oder Bilder) in numerische Vektoren umwandeln. Beim Einbetten von Modellen werden in der Regel Ausgaben zwischen 500 und 2000 Dimensionen erzeugt, wobei jede Dimension eine Fließkommazahl ist. In diesem Tutorial verwenden wir das Titan Text v2-Einbettungsmodell von Amazon Bedrock. Dieses Einbettungsmodell verwendet standardmäßig 1024-dimensionale Vektoren, daher setzen wir die Dimension für den Vektorindex auf. 1024

    Der Dimensionswert kann nach der Indexerstellung nicht geändert werden. Geben Sie den Dimensionswert sorgfältig auf der Grundlage der Empfehlungen Ihres Einbettungsmodells an.

  5. Wählen Sie unter Entfernungsmetrik entweder Kosinus (zur Messung der Winkelähnlichkeit) oder Euklidisch (zur Messung der geradlinigen Entfernung) als Entfernungsmetrik aus, um zu definieren, wie Ähnlichkeit zwischen Vektoren bei Abfragen berechnet wird. In diesem Tutorial wählen wir Cosinus.

    Die Entfernungsmetrik kann nach der Indexerstellung nicht geändert werden. Wählen Sie die Entfernungsmetrik sorgfältig auf der Grundlage der Empfehlungen Ihres Einbettungsmodells aus.

  6. Unter Zusätzliche Einstellungen (optional) können Sie nicht filterbare Metadatenschlüssel angeben, um zusätzliche Informationen neben Ihren Vektoreinbettungen zu speichern.

    Anmerkung

    Sie können filterbare Metadaten als Schlüssel-Wert-Paare an jeden Vektor anhängen, wenn Sie Vektordaten nach der Indexerstellung einfügen. Standardmäßig sind alle Metadatenschlüssel, die Vektoren zugeordnet sind, filterbar und können als Filter in einer Ähnlichkeitsabfrage verwendet werden. Nur Metadatenschlüssel, die bei der Erstellung des Vektorindexes als nicht filterbar angegeben wurden, werden von der Filterung ausgeschlossen.

    Jeder nicht filterbare Metadatenschlüssel muss zwischen 1 und 63 Zeichen lang sein und innerhalb des Vektorindex eindeutig sein. Diese Schlüssel sind nützlich, um Referenzinformationen zu speichern, nach denen Sie bei Ähnlichkeitsabfragen nicht filtern müssen. Wenn Sie beispielsweise mit Texteinbettungen arbeiten, möchten Sie möglicherweise die ursprünglichen Textblöcke zu Referenzzwecken beibehalten. In diesem Tutorial fügen wir einen nicht filterbaren Metadatenschlüssel hinzu, der so benannt ist, dass er die Textdaten speichertsource_text, für die wir Vektoreinbettungen erstellen möchten.

    Sie können nicht filterbare Metadatenschlüssel nach der Indexerstellung nicht aktualisieren. Planen Sie Ihre Metadatenstruktur sorgfältig.

  7. Wählen Sie Vektorindex erstellen.

Vergewissern Sie sich, dass Ihr neuer Vektorindex im Bucket angezeigt wird.

Schritt 3: Fügen Sie Vektoren mit dem SDK for Python (Boto3) in einen Vektorindex ein

Verwenden Sie die Amazon S3 S3-REST-API, um Vektoren einzufügen AWS SDKs AWS CLI, aufzulisten und abzufragen.

In diesem Schritt fügen Sie mithilfe der PutVectorsAPI-Operation Vektoreinbettungen in Ihren Vektorindex ein.

Sie müssen zuerst Vektoreinbettungen mithilfe des Einbettungsmodells Ihrer Wahl generieren. Wenn Sie Amazon Bedrock verwenden, generieren Sie Einbettungen mithilfe der InvokeModelAPI-Operation, um Ihr bevorzugtes Einbettungsmodell anzugeben. Informationen zum Generieren und Einfügen von Vektoreinbettungen mit einem einzigen Befehl finden Sie alternativ unter. (Optional) Automatisieren Sie die Erstellung von Vektoreinbettungen mit der S3 Vectors Embed CLI

Der folgende Beispielcode generiert 1024-dimensionale Vektoreinbettungen mit dem Titan Text Embeddings V2-Modell von Amazon Bedrock unter Verwendung von und speichert sie mithilfe der AWS SDK für Python (Boto3) API in Ihrem Vektorindex. PutVectors Zusammen mit jedem Vektor fügen wir Schlüssel-Wert-Paare als filterbare Metadaten hinzu. Darüber hinaus verwenden wir einen nicht filterbaren Metadatenschlüssel, der so benannt ist, dass der Originaltext, aus source_text dem jeder Vektor abgeleitet ist, erhalten bleibt. Um den Durchsatz von Anfragen zu maximieren und Geschwindigkeit und Effizienz zu optimieren, empfehlen wir, Vektoren stapelweise einzufügen und zu löschen. Weitere Informationen finden Sie unter Bewährte Methoden für S3 Vectors.

# Populate a vector index with embeddings from Amazon Titan Text Embeddings V2. import boto3 import json # Create Bedrock Runtime and S3 Vectors clients in the AWS Region of your choice. bedrock = boto3.client("bedrock-runtime", region_name="us-west-2") s3vectors = boto3.client("s3vectors", region_name="us-west-2") # Texts to convert to embeddings. texts = [ "Star Wars: A farm boy joins rebels to fight an evil empire in space", "Jurassic Park: Scientists create dinosaurs in a theme park that goes wrong", "Finding Nemo: A father fish searches the ocean to find his lost son" ] # Generate vector embeddings. embeddings = [] for text in texts: response = bedrock.invoke_model( modelId="amazon.titan-embed-text-v2:0", body=json.dumps({"inputText": text}) ) # Extract embedding from response. response_body = json.loads(response["body"].read()) embeddings.append(response_body["embedding"]) # Write embeddings into vector index with metadata. s3vectors.put_vectors( vectorBucketName="media-embeddings", indexName="movies", vectors=[ { "key": "Star Wars", "data": {"float32": embeddings[0]}, "metadata": {"source_text": texts[0], "genre":"scifi"} }, { "key": "Jurassic Park", "data": {"float32": embeddings[1]}, "metadata": {"source_text": texts[1], "genre":"scifi"} }, { "key": "Finding Nemo", "data": {"float32": embeddings[2]}, "metadata": {"source_text": texts[2], "genre":"family"} } ] )

Schritt 4. Abfragen von Vektoren in einem Vektorindex mit dem SDK for Python (Boto3)

Nachdem Sie Ihre Vektoreinbettungen im Vektorindex gespeichert haben, können Sie mithilfe der API-Operation eine Ähnlichkeitssuche durchführen. QueryVectors

Sie müssen zuerst Ihre Vektor-Einbettungen für Abfragen generieren, indem Sie dasselbe Einbettungsmodell verwenden, das beim Einfügen verwendet wurde. Schritt 3: Fügen Sie Vektoren mit dem SDK for Python (Boto3) in einen Vektorindex ein Verwenden Sie in diesem Tutorial das Titan Text Embeddings V2-Modell von Amazon Bedrock über das SDK for Python (Boto3).

Sie können eine Ähnlichkeitssuche durchführen, um die am ehesten passenden Vektoren zurückzugeben. Bei einer Ähnlichkeitssuche können Sie optional mithilfe von Metadatenschlüsseln filtern, um die Ergebnisse anhand bestimmter Kriterien einzugrenzen und gleichzeitig die semantische Relevanz beizubehalten.

# Query a vector index with an embedding from Amazon Titan Text Embeddings V2. import boto3 import json # Create Bedrock Runtime and S3 Vectors clients in the AWS Region of your choice. bedrock = boto3.client("bedrock-runtime", region_name="us-west-2") s3vectors = boto3.client("s3vectors", region_name="us-west-2") # Query text to convert to an embedding. input_text = "adventures in space" # Generate the vector embedding. response = bedrock.invoke_model( modelId="amazon.titan-embed-text-v2:0", body=json.dumps({"inputText": input_text}) ) # Extract embedding from response. model_response = json.loads(response["body"].read()) embedding = model_response["embedding"] # Query vector index. response = s3vectors.query_vectors( vectorBucketName="media-embeddings", indexName="movies", queryVector={"float32": embedding}, topK=3, returnDistance=True, returnMetadata=True ) print(json.dumps(response["vectors"], indent=2)) # Query vector index with a metadata filter. response = s3vectors.query_vectors( vectorBucketName="media-embeddings", indexName="movies", queryVector={"float32": embedding}, topK=3, filter={"genre": "scifi"}, returnDistance=True, returnMetadata=True ) print(json.dumps(response["vectors"], indent=2))

(Optional) Automatisieren Sie die Erstellung von Vektoreinbettungen mit der S3 Vectors Embed CLI

Amazon S3 Vectors Embed CLI ist ein eigenständiges Befehlszeilentool, das die Arbeit mit Vektoreinbettungen in S3 Vectors vereinfacht. Mit einzelnen Befehlen können Sie mithilfe von Amazon Bedrock Vektoreinbettungen für Ihre Daten erstellen und diese in Ihrem S3-Vektorindex speichern und abfragen. Das Tool unterstützt die folgenden Befehle:

  • s3vectors-embed put: Generieren Sie Vektoreinbettungen von Text, Dateiinhalten oder S3-Objekten und speichern Sie sie als Vektoren in einem S3-Vektorindex.

  • s3vectors-embed query: Betten Sie eine Abfrageeingabe ein und suchen Sie nach ähnlichen Vektoren in einem S3-Vektorindex.

Weitere Informationen zu den Befehlen und ihrer Verwendung finden Sie im Amazon S3 Vectors Embed GitHub CLI-Repository.

(Optional) Integrieren Sie S3-Vektoren in Amazon Bedrock Knowledge Bases

Amazon Bedrock Knowledge Bases lässt sich in S3 Vectors integrieren, um Vektordatensätze kostengünstig und langfristig zu speichern.

Voraussetzungen

Erfüllen Sie die Voraussetzungen, um sicherzustellen, dass Sie über die erforderlichen Berechtigungen für die Erstellung einer Amazon Bedrock-Wissensdatenbank verfügen.

  • Entsprechende IAM-Berechtigungen für S3 Vectors und Amazon Bedrock Services. Weitere Informationen zu IAM-Berechtigungen für S3 Vectors finden Sie unter. Identitäts- und Zugriffsmanagement in S3 Vectors

  • Ihre Quelldokumente wurden für die Aufnahme in die Wissensdatenbank vorbereitet.

  • Ein Verständnis Ihrer Anforderungen an das Einbettungsmodell.

Erstellen Sie eine Amazon Bedrock-Wissensdatenbank mit S3 Vectors in der Konsole

Amazon Bedrock Knowledge Bases bietet einen vollständig verwalteten end-to-end RAG-Workflow. Wenn Sie mit S3 Vectors eine Wissensdatenbank erstellen, ruft Amazon Bedrock automatisch Daten aus Ihrer S3-Datenquelle ab, konvertiert Inhalte in Textblöcke, generiert Einbettungen und speichert sie in Ihrem Vektorindex. Anschließend können Sie die Wissensdatenbank abfragen und Antworten auf der Grundlage von Blöcken generieren, die aus Ihren Quelldaten abgerufen wurden.

So erstellen Sie eine Amazon Bedrock-Wissensdatenbank mit S3 Vectors in der Konsole
  1. Melden Sie sich bei der Rolle AWS Management Console Using an IAM mit Amazon Bedrock-Berechtigungen an und öffnen Sie die Amazon Bedrock-Konsole unter. https://console.aws.amazon.com/bedrock/

  2. Wählen Sie im linken Navigationsbereich Knowledge Bases aus.

  3. Wählen Sie im Abschnitt Wissensdatenbanken die Option Erstellen aus. Wählen Sie in der Dropdownliste die Option Wissensdatenbank mit Vektorspeicher aus.

  4. Behalten Sie in diesem Tutorial die Standardwerte für den Namen der Wissensdatenbank, die Beschreibung der Wissensdatenbank und die IAM-Berechtigungen bei.

  5. Wählen Sie unter Datenquellentyp auswählen die Datenquelle aus, mit der Ihre Wissensdatenbank verbunden werden soll. Wählen Sie in diesem Tutorial Amazon S3 aus.

  6. (Optional) Geben Sie alle Tags oder Anwendungsprotokolle an.

  7. Wählen Sie Weiter aus.

  8. Behalten Sie auf der Seite Datenquelle konfigurieren die Standardeinstellungen für den Namen der Datenquelle, den Speicherort der Datenquelle, die Analysestrategie und die Chunking-Strategie in diesem Tutorial bei.

  9. Geben Sie in der S3-URI den S3-Allzweck-Bucket ein, der Ihre Quelldateien enthält, oder wählen Sie Browse S3 und dann den S3-Allzweck-Bucket aus.

  10. Wählen Sie für verschlüsselte S3-Daten die Option Kundenverwalteten KMS-Schlüssel für S3-Daten hinzufügen aus und geben Sie Ihren vom Kunden verwalteten KMS-Schlüssel an.

  11. Wählen Sie Weiter, um mit dem nächsten Schritt fortzufahren, in dem das Embeddings-Modell und die Vector Store-Optionen angegeben werden.

  12. Wählen Sie im Abschnitt Einbettungsmodell die Option Modell auswählen und wählen Sie ein Einbettungsmodell aus, das für die Verwendung mit S3 Vectors kompatibel ist. Sie müssen Gleitkomma-Einbettungen verwenden. Der binäre Typ wird nicht unterstützt.

  13. (Optional) Erweitern Sie den Abschnitt Zusätzliche Konfigurationen, um die folgenden Konfigurationsoptionen anzuzeigen (nicht alle Modelle unterstützen alle Konfigurationen):

    • Einbettungstyp — Gibt an, ob die Daten in Gleitkomma-Vektor-Einbettungen (Float32) (genauer, aber teurer) oder binäre Vektor-Einbettungen (weniger präzise, aber kostengünstiger) konvertiert werden sollen. Für die Integration mit S3-Vektoren müssen Sie Gleitkomma-Vektor-Einbettungen wählen.

    • Vektorabmessungen — Wählen Sie die empfohlene Maßgröße für das Einbettungsmodell aus.

  14. Wählen Sie im Bereich Vektorspeicher die empfohlene Methode Schnelles Erstellen eines neuen Vektorspeichers für die automatische Einrichtung eines neuen Vektorspeichers aus, oder wählen Sie Vorhandenen Vektorspeicher verwenden, um einen vorhandenen Vektorspeicher zu verwenden, falls verfügbar. Informationen zur Verwendung eines vorhandenen Vector Store-Workflows finden Sie unter Voraussetzungen für die Verwendung eines Vector Store, den Sie für eine Wissensdatenbank erstellt haben, im Amazon Bedrock-Benutzerhandbuch.

  15. Für zusätzliche Konfigurationen — Standardmäßig verwendet Ihr Vector-Bucket serverseitige Verschlüsselung mit von Amazon S3 verwalteten Schlüsseln (SSE-S3). Sie können Ihren eigenen KMS-Schlüssel für die serverseitige Verschlüsselung mit AWS Key Management Service-Schlüsseln (SSE-KMS) verwenden, um die Verschlüsselungseinstellungen besser kontrollieren zu können.

  16. Klicken Sie auf Weiter, um die Details der Wissensdatenbank zu überprüfen, und wählen Sie dann Wissensdatenbank erstellen.

Anmerkung

Wie lange es dauert, eine Wissensdatenbank zu erstellen, hängt von Ihren spezifischen Konfigurationen ab. Wenn die Erstellung einer Wissensdatenbank abgeschlossen ist, ändert sich der Status der Wissensdatenbank in den Status „Bereit“ oder „Verfügbar“. Sobald Ihre Wissensdatenbank fertig und verfügbar ist, synchronisieren Sie Ihre Datenquelle zum ersten Mal oder wann immer Sie Ihre Inhalte auf dem neuesten Stand halten möchten. Um Ihre Datenquelle zu synchronisieren, wählen Sie in der Konsole Ihre Wissensdatenbank aus und klicken Sie im Bereich Datenquellenübersicht auf Synchronisieren.

(Optional) Integrieren Sie S3-Vektoren mit Amazon OpenSearch

Amazon OpenSearch Service ist ein vollständig verwalteter Service, der die Bereitstellung, Skalierung und den Betrieb von OpenSearch in der AWS Cloud vereinfacht. Es gibt zwei Integrationen zwischen S3 Vectors und OpenSearch. Eine besteht darin, Vektordaten von S3 Vectors nach OpenSearch Serverless zu exportieren, um leistungsstarke Suchfunktionen zu nutzen. Bei der anderen Lösung wird S3 Vectors als kostengünstige Speicher-Engine verwendet, OpenSearch während gleichzeitig der Zugriff auf die OpenSearch Funktionalität erhalten bleibt.

Weitere Informationen finden Sie unter Verwenden von S3-Vektoren mit OpenSearch Service.