Verwenden von Aurora PostgreSQL als Wissensdatenbank für Amazon Bedrock
Sie können einen DB-Cluster von Aurora PostgreSQL als Wissensdatenbank für Amazon Bedrock verwenden. Weitere Informationen finden Sie unter Erstellen eines Vektorspeichers in Amazon Aurora. Eine Wissensdatenbank nimmt automatisch unstrukturierte Textdaten, die in einem Amazon-S3-Bucket gespeichert sind, konvertiert sie in Textblöcke und Vektoren und speichert sie in einer PostgreSQL-Datenbank. Mit den Anwendungen mit generativer KI können Sie Agenten für Amazon Bedrock verwenden, um die in der Wissensdatenbank gespeicherten Daten abzufragen und die Ergebnisse dieser Abfragen zu verwenden, um die Antworten zu erweitern, die von grundlegenden Modellen bereitgestellt werden. Dieser Workflow wird Retrieval Augmented Generation (RAG) genannt. Weitere Informationen zu RAG finden Sie unter Retrieval Augmented Generation (RAG).
Ausführliche Informationen zur Verwendung von Aurora PostgreSQL zum Erstellen von Anwendungen mit generativer KI mithilfe von RAG finden Sie in diesem Blogbeitrag
Themen
Voraussetzungen
Machen Sie sich mit den folgenden Voraussetzungen vertraut, um den Aurora-PostgreSQL-Cluster als Wissensdatenbank für Amazon Bedrock zu verwenden. Auf oberster Ebene müssen Sie die folgenden Services für die Verwendung mit Bedrock konfigurieren:
-
Der DB-Cluster von Amazon Aurora PostgreSQL wurde in einer der folgenden Versionen erstellt:
-
16.1 und alle höheren Versionen
-
15.4 und höhere Versionen
-
14.9 und höhere Versionen
-
13.12 und höhere Versionen
-
12.16 und höhere Versionen
Anmerkung
Sie müssen die
pgvector-Erweiterung in Ihrer Zieldatenbank aktivieren und Version 0.5.0 oder höher verwenden. Weitere Informationen finden Sie unter pgvector v0.5.0 mit HNSW-Indizierung. -
-
RDS-Daten-API
-
Ein in AWS Secrets Manager verwalteter Benutzer. Weitere Informationen finden Sie unter Passwortverwaltung mit Amazon Aurora und AWS Secrets Manager.
Vorbereiten von Aurora PostgreSQL zur Verwendung als Wissensdatenbank für Amazon Bedrock
Folgen Sie den Schritten in den folgenden Abschnitten, um Aurora PostgreSQL für die Verwendung als Wissensdatenbank für Amazon Bedrock vorzubereiten.
Erstellen und Konfigurieren von Aurora PostgreSQL
Zur Konfiguration von Amazon Bedrock mit einem DB-Cluster von Aurora PostgreSQL müssen Sie zunächst einen DB-Cluster von Aurora PostgreSQL erstellen und sich die wichtigen Felder für dessen Konfiguration mit Amazon Bedrock notieren. Weitere Informationen zum Erstellen eines DB-Clusters von Aurora PostgreSQL finden Sie unter Erstellen eines DB-Clusters von Aurora PostgreSQL und Herstellen einer Verbindung.
-
Aktivieren Sie die Daten-API, während Sie den DB-Cluster von Aurora PostgreSQL erstellen. Weitere Informationen zu den unterstützten Versionen finden Sie unter Verwenden der Daten-API von Amazon RDS.
-
Notieren Sie sich unbedingt den Amazon-Ressourcennamen (ARN) Ihres DB-Clusters von Aurora PostgreSQL. Sie benötigen ihn, um den DB-Cluster für die Verwendung mit Amazon Bedrock zu konfigurieren. Weitere Informationen finden Sie unter Amazon-Ressourcennamen (ARNs).
Verbinden mit einer Datenbank und Installieren von pgvector
Sie können mit jedem der Verbindungsdienstprogramme eine Verbindung zu Aurora PostgreSQL herstellen. Weitere Informationen zu diesen Dienstprogrammen finden Sie unter Herstellen einer Verbindung mit einem Amazon-Aurora-PostgreSQL-DB-Cluster. Zur Ausführung der Abfragen können Sie auch den Abfrage-Editor der RDS-Konsole verwenden. Sie benötigen einen Aurora-DB-Cluster mit aktivierter RDS-Daten-API, um den Abfrage-Editor verwenden zu können.
-
Melden Sie sich mit Ihrem Master-Benutzer bei der Datenbank an und richten Sie pgvector ein. Verwenden Sie den folgenden Befehl, wenn die Erweiterung nicht installiert ist:
CREATE EXTENSION IF NOT EXISTS vector;Verwenden Sie
pgvector0.5.0 und höhere Versionen, die die HNSW-Indizierung unterstützen. Weitere Informationen finden Sie unter pgvector v0.5.0 mit HNSW-Indizierung. -
Verwenden Sie den folgenden Befehl, um die installierte Version des
pg_vectorzu überprüfen:SELECT extversion FROM pg_extension WHERE extname='vector';
Einrichten von Datenbankobjekten und -berechtigungen
-
Erstellen Sie ein bestimmtes Schema, mit dem Bedrock die Daten abfragen kann. Verwenden Sie den folgenden Befehl, um ein Schema zu erstellen:
CREATE SCHEMA bedrock_integration; -
Erstellen Sie eine neue Rolle, mit der Bedrock die Datenbank abfragen kann. Verwenden Sie den folgenden Befehl, um eine neue Rolle zu erstellen:
CREATE ROLE bedrock_user WITH PASSWORD 'password' LOGIN;Anmerkung
Notieren Sie sich dieses Passwort, da Sie es später brauchen, um ein Secrets-Manager-Passwort zu erstellen.
Bei Nutzung des
psql-Clients verwenden Sie die folgenden Befehle, um eine neue Rolle zu erstellen:CREATE ROLE bedrock_user LOGIN; \PASSWORDpassword; -
Erteilen Sie die
bedrock_user-Berechtigungen zur Verwaltung des Schemasbedrock_integration. Dies bietet die Möglichkeit, Tabellen oder Indizes innerhalb des Schemas zu erstellen.GRANT ALL ON SCHEMA bedrock_integration to bedrock_user; -
Melden Sie sich als
bedrock_useran und erstellen Sie eine Tabelle imbedrock_integration schema.CREATE TABLE bedrock_integration.bedrock_kb (id uuid PRIMARY KEY, embedding vector(n), chunks text, metadata json, custom_metadata jsonb);Dieser Befehl erstellt die Tabelle
bedrock_kbim Schemabedrock_integrationmit Titan-Einbettungen.Ersetzen Sie n im Datentyp
vector(durch die entsprechende Dimension für das von Ihnen verwendete Einbettungsmodell. Verwenden Sie die folgenden Empfehlungen, um Ihre Dimensionen auszuwählen:n)-
Verwenden Sie für das Modell Titan v2
vector(1024),vector(512)odervector (256). Weitere Informationen finden Sie unter Amazon Titan Embeddings Text. -
Verwenden Sie für das Modell Titan v1.2
vector(1536). Weitere Informationen finden Sie unter Amazon Titan Multimodal Embeddings G1. -
Verwenden Sie für das Cohere-Embed-Modell
vector(1024). Weitere Informationen finden Sie unter Cohere-Embed-Modelle. -
Verwenden Sie
vector(1024)für das Cohere Embed Multilingual v3.
Die ersten vier Spalten sind Pflichtfelder. Für die Bearbeitung von Metadaten schreibt Bedrock Daten aus Ihren Metadatendateien in die Spalte
custom_metadata. Wir empfehlen, diese Spalte zu erstellen, wenn Sie Metadaten und Filterung verwenden möchten. Wenn Sie keine Spaltecustom_metadataerstellen, fügen Sie einzelne Spalten für jedes Metadatenattribut in Ihrer Tabelle hinzu, bevor Sie mit der Erfassung beginnen. Weitere Informationen finden Sie unter Konfigurieren und Anpassen von Abfragen und Antwortgenerierung. -
-
Gehen Sie wie folgt vor, um die erforderlichen Indizes zu erstellen, die Bedrock zur Abfrage Ihrer Daten verwendet:
Erstellen Sie einen Index mit dem Kosinus-Operator, den Bedrock verwenden kann, um die Daten abzufragen.
CREATE INDEX ON bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops);Wir empfehlen Ihnen, den Wert von
ef_constructionfürpgvector0.6.0 und höhere Versionen, die die parallele Indexerstellung verwenden, auf 256 zu setzen.CREATE INDEX ON bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops) WITH (ef_construction=256);-
Erstellen Sie einen Index, den Bedrock zur Abfrage der Textdaten verwenden kann.
CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (to_tsvector('simple', chunks)); -
Wenn Sie eine Spalte für benutzerdefinierte Metadaten erstellt haben, erstellen Sie einen Index, den Bedrock zur Abfrage der Metadaten verwenden kann.
CREATE INDEX ON bedrock_integration.bedrock_kb USING gin (custom_metadata);
Erstellen eines Secrets in Secrets Manager
Mit Secrets Manager können Sie Ihre Aurora-Anmeldeinformationen speichern, sodass sie sicher an Anwendungen übertragen werden können. Wenn Sie bei der Erstellung des DB-Clusters von Aurora PostgreSQL nicht die Option AWS Secrets Manager ausgewählt haben, können Sie jetzt ein Secret erstellen. Weitere Informationen zum Erstellen eines AWS Secrets Manager-Datenbank-Secrets finden Sie unter Datenbank-Secret von AWS Secrets Manager.
Erstellen einer Wissensdatenbank in der Bedrock-Konsole
Während Sie Aurora PostgreSQL für die Verwendung als Vektorspeicher für eine Wissensdatenbank vorbereiten, müssen Sie die folgenden Informationen sammeln, die Sie der Amazon-Bedrock-Konsole zur Verfügung stellen müssen.
-
ARN des DB-Clusters von Amazon Aurora – Der ARN Ihres DB-Clusters
-
Secret-ARN – Der ARN des Schlüssels von AWS Secrets Manager für Ihren DB-Cluster
-
Datenbankname – Der Name Ihrer Datenbank. Sie können beispielsweise die Standarddatenbank
postgresverwenden. -
Tabellenname – Wir empfehlen Ihnen, bei der Erstellung der Tabelle einen schemaqualifizierten Namen anzugeben. Verwenden Sie dazu einen Befehl, der dem folgenden ähnelt:
CREATE TABLE bedrock_integration.bedrock_kb;Dieser Befehl erstellt die Tabelle
bedrock_kbim Schemabedrock_integration. -
Achten Sie beim Erstellen der Tabelle darauf, sie mit den angegebenen Spalten und Datentypen zu konfigurieren. Sie können Ihre bevorzugten Spaltennamen anstelle der in der Tabelle aufgeführten verwenden. Denken Sie daran, sich die Namen zu notieren, die Sie bei der Einrichtung der Wissensdatenbank als Referenz ausgewählt haben.
Spaltenname Datentyp Beschreibung id UUID-Primärschlüssel Enthält eindeutige Bezeichner für jeden Datensatz.
Blöcke Text Enthält die Rohtextblöcke aus Ihren Datenquellen.
Einbettung Vektor Enthält die Vektoreinbettungen der Datenquellen.
Metadaten JSON Enthält Metadaten, die für die Quellenzuweisung und die Datenerfassung und -abfrage erforderlich sind
custom_metadata JSONB (Optional) Definiert die Zielspalte, in die Amazon Bedrock Metadatendetails aus Ihren Datenquellen schreibt
Mit diesen Details können Sie jetzt eine Wissensdatenbank in der Bedrock-Konsole erstellen. Ausführlichere Informationen zum Einrichten eines Vektorindex und zum Erstellen von Wissensdatenbank-Informationen finden Sie unter Erstellen eines Vektorspeichers in Amazon Aurora und Erstellen eines Vektorspeichers in Amazon Aurora.
Nachdem Sie Aurora als Ihre Wissensdatenbank hinzugefügt haben, können Sie jetzt Ihre Datenquellen für Suchen und Abfragen aufnehmen. Weitere Informationen finden Sie unter Aufnehmen Ihrer Datenquellen in die Wissensdatenbank.