Erstellen einer Wissensdatenbank durch Herstellen einer Verbindung mit einem strukturierten Datenspeicher - Amazon Bedrock

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.

Erstellen einer Wissensdatenbank durch Herstellen einer Verbindung mit einem strukturierten Datenspeicher

Zum Verbinden einer Wissensdatenbank mit einem strukturierten Datenspeicher geben Sie die folgenden Komponenten an:

  • Konfiguration der Abfrage-Engine

    Hierbei handelt es sich um die Konfiguration für den Computing-Service, der die generierten SQL-Abfragen ausführt. Die Abfrage-Engine wird eingesetzt, um Benutzerabfragen in natürlicher Sprache in SQL-Abfragen zu konvertieren, die zum Extrahieren von Daten aus Ihrem Datenspeicher verwendet werden können. Sie können Amazon Redshift als Abfrage-Engine auswählen. Bei der Auswahl dieser Konfiguration müssen Sie Folgendes angeben:

    • Die Metadaten der Computing-Verbindung wie die Cluster-ID oder der Arbeitsgruppen-ARN, je nach ausgewählter Abfrage-Engine.

    • Die Authentifizierungsmethode für die Verwendung der Abfrage-Engine. Dabei kann es sich um eine IAM-Dienstrolle mit den entsprechenden Berechtigungen, einen Datenbankbenutzer der Abfrage-Engine oder einen AWS Secrets Manager geheimen Schlüssel handeln, der mit Ihren Datenbankanmeldedaten verknüpft ist.

  • Speicherkonfiguration

    Dies ist die Konfiguration für den Datenspeicher, der Ihre Daten enthält. Sie können eine Verbindung zu Amazon Redshift Provisioned oder Amazon Redshift Serverless herstellen und Amazon Redshift oder AWS Glue Data Catalog als Ihren Datenspeicher verwenden.

  • (Optional) Abfragekonfigurationen

    Sie können optionale Abfragekonfigurationen verwenden, um die Korrektheit der SQL-Generierung zu verbessern:

    • Maximale Abfragezeit – Die Zeitspanne, nach der die Abfrage das Zeitlimit überschreitet

    • Beschreibungen – Stellt Metadaten oder zusätzliche Informationen zu Tabellen oder Spalten bereit. Sie können Beschreibungen der Tabellen oder Spalten, Nutzungshinweise oder zusätzliche Attribute hinzufügen. Die von Ihnen hinzugefügten Beschreibungen können die Generierung von SQL-Abfragen verbessern, indem sie zusätzlichen Kontext und Informationen zur Struktur der Tabellen oder Spalten bereitstellen.

    • Einschlüsse und Ausschlüsse – Gibt eine Gruppe von Tabellen oder Spalten an, die bei der SQL-Generierung ein- oder ausgeschlossen werden sollen. Dieses Feld ist wichtig, wenn Sie den Umfang von SQL-Abfragen auf eine definierte Teilmenge verfügbarer Tabellen oder Spalten beschränken möchten. Diese Option kann dazu beitragen, den Generierungsprozess zu optimieren, indem unnötige Tabellen- oder Spaltenverweise reduziert werden.

      Wenn Sie Einschlüsse angeben, werden alle anderen Tabellen und Spalten ignoriert. Wenn Sie Ausschlüsse angeben, werden die von Ihnen angegebenen Tabellen und Spalten ignoriert.

      Anmerkung

      Ein- und Ausschlüsse sind kein Ersatz für den Integritätsschutz und dienen lediglich der Verbesserung der Modellgenauigkeit.

    • Kuratierte Abfragen – Eine Reihe vordefinierter Fragen- und Antwortbeispiele. Fragen werden als Abfragen in natürlicher Sprache (NLQ) geschrieben und die Antworten sind die entsprechenden SQL-Abfragen. Diese Beispiele unterstützen den SQL-Generierungsprozess, indem sie Beispiele für die Arten von Abfragen bereitstellen, die generiert werden sollten. Sie dienen als Referenzpunkte, um die Korrektheit und Relevanz der Ausgaben generativer SQL zu verbessern.

Erweitern Sie den Abschnitt, der Ihrem Anwendungsfall entspricht:

Gehen Sie wie folgt vor, um mithilfe von eine Verbindung zu einem strukturierten Datenspeicher herzustellen: AWS-Managementkonsole

  1. Melden Sie sich bei der AWS-Managementkonsole mit einer IAM-Identität an, die berechtigt ist, die Amazon Bedrock-Konsole zu verwenden. Öffnen Sie dann die Amazon Bedrock-Konsole unter https://console.aws.amazon.com/bedrock.

  2. Wählen Sie im linken Navigationsbereich Wissensdatenbank aus.

  3. Wählen Sie im Abschnitt Wissensdatenbanken die Option Erstellen und dann Wissensdatenbank mit strukturiertem Datenspeicher aus.

  4. Richten Sie die folgenden Details für die Wissensdatenbank ein:

    1. (Optional) Ändern Sie den Standardnamen und geben Sie eine Beschreibung für Ihre Wissensdatenbank ein.

    2. Wählen Sie die Abfrage-Engine aus, die zum Abrufen von Daten aus Ihrem Datenspeicher verwendet werden soll.

    3. Wählen Sie eine IAM-Servicerolle mit den entsprechenden Berechtigungen aus, um diese Wissensdatenbank zu erstellen und zu verwalten. Sie können die Servicerolle von Amazon Bedrock erstellen lassen oder eine benutzerdefinierte Rolle auswählen, die Sie angelegt haben. Weitere Informationen zum Erstellen einer Rolle finden Sie unter Einrichten Ihrer Abfrage-Engine und der Berechtigungen zum Erstellen einer Wissensdatenbank mit strukturiertem Datenspeicher.

    4. (Optional) Fügen Sie Tags hinzu, die Ihrer Wissensdatenbank zugeordnet werden sollen. Weitere Informationen finden Sie unter Markieren von Amazon-Bedrock-Ressourcen.

    5. Wählen Sie Weiter aus.

  5. Konfigurieren Sie Ihre Abfrage-Engine:

    1. Wählen Sie den Service aus, in dem Sie einen Cluster oder eine Arbeitsgruppe erstellt haben. Wählen Sie anschließend den Cluster oder die Arbeitsgruppe aus, der bzw. die verwendet werden soll.

    2. Wählen Sie die Authentifizierungsmethode aus und geben Sie Werte in die erforderlichen Felder ein.

    3. Wählen Sie den Datenspeicher aus, in dem Ihre Metadaten gespeichert werden sollen. Wählen Sie dann den Namen Ihrer Datenbank aus oder geben Sie ihn ein.

    4. (Optional) Ändern Sie die Abfragekonfigurationen nach Bedarf. Weitere Informationen zu den verschiedenen Konfigurationen finden Sie am Anfang dieses Themas.

    5. Wählen Sie Weiter aus.

  6. Überprüfen Sie Ihre Wissensdatenbank-Konfigurationen und bearbeiten Sie die Abschnitte nach Bedarf. Bestätigen Sie den Vorgang, um Ihre Wissensdatenbank zu erstellen.

Um mithilfe der Amazon Bedrock API eine Verbindung zu einem strukturierten Datenspeicher herzustellen, senden Sie eine CreateKnowledgeBaseAnfrage mit einem Build-Time-Endpunkt Agents for Amazon Bedrock mit dem folgenden allgemeinen Anfragetext:

{ "name": "string", "roleArn": "string", "knowledgeBaseConfiguration": { "type": "SQL", "sqlKnowledgeBaseConfiguration": SqlKnowledgeBaseConfiguration }, "description": "string", "clientToken": "string", "tags": { "string": "string" } }

Die folgenden Felder sind erforderlich.

Feld Grundlegende Beschreibung
Name Ein Name für die Wissensdatenbank
roleArn Eine Wissensdatenbank-Servicerolle mit den entsprechenden Berechtigungen. Sie können die Konsole für das automatische Erstellen einer Servicerolle mit den entsprechenden Berechtigungen verwenden.
knowledgeBaseConfiguration Enthält Konfigurationen für die Wissensdatenbank. Geben Sie bei einer strukturierten Datenbank als type SQL an und schließen Sie das Feld sqlKnowledgeBaseConfiguration ein.

Die folgenden Felder sind optional.

Feld Verwenden Sie
description Hiermit fügen Sie eine Beschreibung für die Wissensdatenbank hinzu.
clientToken Zur Sicherstellung, dass die API-Anfrage nur einmal durchgeführt wird. Weitere Informationen finden Sie unter Sicherstellen von Idempotenz.
tags Hiermit ordnen Sie dem Flow Tags zu. Weitere Informationen finden Sie unter Markieren von Amazon-Bedrock-Ressourcen.

Der Wert SQLKnowledgeBaseConfiguration hängt von der von Ihnen verwendeten Abfrage-Engine ab. Geben Sie für Amazon Redshift das type Feld als an REDSHIFT und schließen Sie das redshiftConfiguration Feld ein, das a zugeordnet ist RedshiftConfiguration. Für die RedshiftConfigurationkonfigurieren Sie die folgenden Felder:

Sie können die folgenden Arten von Abfrage-Engines konfigurieren:

Wenn Ihre Amazon Redshift Redshift-Datenbanken auf dedizierten Rechenknoten bereitgestellt werden, sollte der Wert des queryEngineConfiguration Felds a RedshiftQueryEngineConfigurationim folgenden Format sein:

{ "type": "PROVISIONED", "provisionedConfiguration": { "clusterIdentifier": "string", "authConfiguration": RedshiftProvisionedAuthConfiguration }, }

Geben Sie die ID des Clusters in das Feld clusterIdentifier ein. Das RedshiftProvisionedAuthConfigurationhängt von der Art der Autorisierung ab, die Sie verwenden. Wählen Sie die Registerkarte aus, die Ihrer Autorisierungsmethode entspricht:

IAM role

Wenn Sie die Autorisierung mit Ihrer IAM-Rolle vornehmen, müssen Sie in der RedshiftProvisionedAuthConfiguration nur IAM als Typ ohne zusätzliche Felder angeben.

{ "type": "IAM" }
Temporary credentials user name

Wenn Sie die Autorisierung mit dem Datenbankbenutzernamen durchführen, legen Sie für type USERNAME fest und geben Sie den Benutzernamen in das Feld databaseUser in der RedshiftProvisionedAuthConfig an:

{ "type": "USERNAME", "databaseUser": "string" }
AWS Secrets Manager

Wenn Sie mit autorisierenAWS Secrets Manager, geben Sie type as USERNAME_PASSWORD und den ARN des Geheimnisses in das usernamePasswordSecretArn Feld ein: RedshiftProvisionedAuthConfig

{ "type": "USERNAME_PASSWORD", "usernamePasswordSecretArn": "string" }

Wenn Sie Amazon Redshift Serverless verwenden, sollte der Wert des queryConfiguration Felds a RedshiftQueryEngineConfigurationim folgenden Format sein:

{ "type": "SERVERLESS", "serverlessConfiguration": { "workgroupArn": "string", "authConfiguration": } }

Geben Sie den ARN Ihrer Arbeitsgruppe in das Feld workgroupArn ein. Das RedshiftServerlessAuthConfigurationhängt von der Art der Autorisierung ab, die Sie verwenden. Wählen Sie die Registerkarte aus, die Ihrer Autorisierungsmethode entspricht:

IAM role

Wenn Sie die Autorisierung mit Ihrer IAM-Rolle vornehmen, müssen Sie in der RedshiftServerlessAuthConfiguration nur IAM als Typ ohne zusätzliche Felder angeben.

{ "type": "IAM" }
AWS Secrets Manager

Wenn Sie mit autorisierenAWS Secrets Manager, geben Sie type as USERNAME_PASSWORD und den ARN des Geheimnisses in das usernamePasswordSecretArn Feld ein: RedshiftServerlessAuthConfiguration

{ "type": "USERNAME_PASSWORD", "usernamePasswordSecretArn": "string" }

Dieses Feld ist einem Array zugeordnet, das ein einzelnes Feld enthält RedshiftQueryEngineStorageConfiguration, dessen Format davon abhängt, wo Ihre Daten gespeichert sind.

Wenn Ihre Daten in gespeichert sindAWS Glue Data Catalog, RedshiftQueryEngineStorageConfiguration sollten sie das folgende Format haben:

{ "type": "AWS_DATA_CATALOG", "awsDataCatalogConfiguration": { "tableNames": ["string"] } }

Fügen Sie den Namen jeder Tabelle, mit der Sie Ihre Wissensdatenbank verbinden möchten, in das Array ein, dem tableNames zugeordnet ist.

Anmerkung

Geben Sie Tabellennamen in dem unter Datenbankübergreifende Abfragen (${databaseName}.${tableName}) beschriebenen Muster ein. Sie können alle Tabellen einbeziehen, indem Sie ${databaseName.*} angeben.

Wenn Ihre Daten in einer Amazon-Redshift-Datenbank gespeichert sind, sollte die RedshiftQueryEngineStorageConfiguration das folgende Format haben:

{ "type": "string", "redshiftConfiguration": { "databaseName": "string" } }

Geben Sie den Namen Ihrer Amazon-Redshift-Datenbank in das Feld databaseName ein.

Anmerkung

Geben Sie Tabellennamen in dem unter Datenbankübergreifende Abfragen (${databaseName}.${tableName}) beschriebenen Muster ein. Sie können alle Tabellen einbeziehen, indem Sie ${databaseName.*} angeben.

Wenn Ihre Datenbank über Amazon SageMaker AI Lakehouse bereitgestellt wird, hat der Datenbankname das folgende Format${db}@${schema}.

Dieses Feld entspricht dem Folgenden QueryGenerationConfiguration, mit dem Sie konfigurieren können, wie Ihre Daten abgefragt werden:

{ "executionTimeoutSeconds": number, "generationContext": { "tables": [ { "name": "string", "description": "string", "inclusion": "string", "columns": [ { "name": "string", "description": "string", "inclusion": "string" }, ... ] }, ... ], "curatedQueries": [ { "naturalLanguage": "string", "sql": "string" }, ... ] } }

Wenn Sie möchten, dass für die Abfrage ein Timeout ausgeführt wird, geben Sie im Feld executionTimeoutSeconds die Dauer des Timeouts in Sekunden an.

Das generationContext Feld ist einem QueryGenerationContextObjekt zugeordnet, in dem Sie beliebig viele der folgenden Optionen konfigurieren können.

Wichtig

Wenn Sie einen Generierungskontext einbeziehen, versucht die Abfrage-Engine so gut wie möglich, ihn bei der SQL-Generierung anzuwenden. Der Generierungskontext ist nicht deterministisch und dient nur der Verbesserung der Modellgenauigkeit. Wenn Sie die Genauigkeit sicherstellen möchten, überprüfen Sie die generierten SQL-Abfragen.

Erweitern Sie die folgenden Abschnitte, um Informationen zu Generierungskontexten, die Sie einbeziehen können, zu erhalten:

Zur Verbesserung der Genauigkeit der SQL-Generierung für Datenbankabfragen können Sie eine Beschreibung für die Tabelle oder Spalte angeben, die mehr Kontext bietet als ein kurzer Tabellen- oder Spaltenname. Sie haben die folgenden Möglichkeiten:

  • Um eine Beschreibung für eine Tabelle hinzuzufügen, fügen Sie ein QueryGenerationTableObjekt in das tables Array ein. Geben Sie in diesem Objekt den Namen der Tabelle im Feld name und eine Beschreibung im Feld description an, wie im folgenden Beispiel gezeigt:

    { "name": "database.schema.tableA", "description": "Description for Table A" }
  • Um eine Beschreibung für eine Spalte hinzuzufügen, fügen Sie ein QueryGenerationTableObjekt in das tables Array ein. Geben Sie in diesem Objekt den Namen der Tabelle im name Feld an und schließen Sie das columns Feld ein, das einem Array von zugeordnet ist QueryGenerationColumn. Geben Sie in einem QueryGenerationColumn-Objekt den Namen der Tabelle im Feld name und eine Beschreibung im Feld description an, wie im folgenden Beispiel gezeigt:

    { "name": "database.schema.tableA", "columns": [ { "name": "Column A", "description": "Description for Column A" } ] }
  • Sie können eine Beschreibung sowohl für eine Tabelle als auch für eine Spalte hinzufügen, wie im folgenden Beispiel gezeigt:

    { "name": "database.schema.tableA", "description": "Description for Table A", "columns": [ { "name": "columnA", "description": "Description for Column A" } ] }
    Anmerkung

    Geben Sie Tabellen- und Spaltennamen in dem unter Datenbankübergreifende Abfragen beschriebenen Muster ein. Wenn sich Ihre Datenbank in befindetAWS Glue Data Catalog, ist das Formatawsdatacatalog.gluedatabase.table.

Mithilfe des inclusion Felds in den QueryGenerationColumnObjekten und können Sie Tabellen oder Spalten vorschlagen, die beim Generieren von SQL ein QueryGenerationTable- oder ausgeschlossen werden sollen. Sie können einen der folgenden Werte im Feld inclusion angeben:

  • INCLUDE – Nur die von Ihnen angegebenen Tabellen oder Spalten werden bei der SQL-Generierung als Kontext eingeschlossen.

  • EXCLUDE – Die von Ihnen angegebenen Tabellen oder Spalten werden bei der SQL-Generierung als Kontext ausgeschlossen.

Sie haben folgende Möglichkeiten, um anzugeben, ob Tabellen oder Spalten ein- oder ausgeschlossen werden sollen:

  • Um eine Tabelle ein- oder auszuschließen, schließen Sie ein QueryGenerationTableObjekt in das tables Array ein. Geben Sie in diesem Objekt den Namen der Tabelle im Feld name und die Angabe, ob die Tabelle ein- oder ausgeschlossen werden soll, im Feld inclusion an, wie im folgenden Beispiel gezeigt:

    { "name": "database.schema.tableA", "inclusion": "EXCLUDE" }

    Die Abfrage-Engine fügt dem zusätzlichen Kontext für die SQL-Generierung Table A nicht hinzu.

  • Um eine Spalte ein- oder auszuschließen, schließen Sie ein QueryGenerationTableObjekt in das tables Array ein. Geben Sie in diesem Objekt den Namen der Tabelle im name Feld an und schließen Sie das columns Feld ein, das einem Array von zugeordnet ist QueryGenerationColumn. Geben Sie in einem QueryGenerationColumn-Objekt den Namen der Spalte im Feld name und die Angabe, ob die Spalte ein- oder ausgeschlossen werden soll, im Feld inclusion an, wie im folgenden Beispiel gezeigt:

    { "name": "database.schema.tableA", "columns": [ { "name": "database.schema.tableA.columnA", "inclusion": "EXCLUDE" } ] }

    Die SQL-Generierung ignoriert Column A in Table A in dem Kontext, wenn SQL generiert wird.

  • Sie können Tabellen und Spalten kombinieren, wenn Sie Einschlüsse oder Ausschlüsse angeben, wie im folgenden Beispiel gezeigt:

    { "name": "database.schema.tableA", "inclusion": "INCLUDE", "columns": [ { "name": "database.schema.tableA.columnA", "inclusion": "EXCLUDE" } ] }

    Die SQL-Generierung schließt Table A ein, schließt darin jedoch Column A aus, wenn Kontext für die SQL-Generierung hinzugefügt wird.

Wichtig

Ausschlüsse für Tabellen und Spalten sind kein Ersatz für den Integritätsschutz. Diese Ein- und Ausschlüsse für Tabellen und Spalten werden als zusätzlicher Kontext für das Modell verwendet, der bei der Generierung von SQL berücksichtigt werden muss.

Um die Genauigkeit einer Abfrageengine bei der Konvertierung von Benutzerabfragen in SQL-Abfragen zu verbessern, können Sie ihr Beispiele in dem curatedQueries Feld im QueryGenerationContextObjekt zur Verfügung stellen, das einem Array von CuratedQueryObjekten zugeordnet ist. Jedes Objekt enthält die folgenden Felder:

  • naturalLanguage – Ein Beispiel für eine Abfrage in natürlicher Sprache

  • sql – Die SQL-Abfrage, die der Abfrage in natürlicher Sprache entspricht