翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
構造化データストアに接続してナレッジベースを作成する
ナレッジベースを構造化データストアに接続するには、次のコンポーネントを指定します。
-
クエリエンジンの設定
生成された SQL クエリを実行するコンピューティングサービスの設定。クエリエンジンは、自然言語ユーザークエリを、データストアからデータを抽出するために使用できる SQL クエリに変換するために使用されます。Amazon Redshift をクエリエンジンとして選択できます。この設定を選択するときは、以下を指定する必要があります。
-
選択したクエリエンジンに応じて、クラスター ID やワークグループ ARN などのコンピューティング接続メタデータ。
-
クエリエンジンを使用するための認証方法。適切なアクセス許可を持つ IAM サービスロール、クエリエンジンデータベースユーザー、またはデータベース認証情報にリンクされた AWS Secrets Manager シークレットを使用できます。
-
-
ストレージ設定
データを含むデータストアの設定。Amazon Redshift Provisioned または Amazon Redshift Serverless に接続し、Amazon Redshift または をデータストア AWS Glue Data Catalog として使用できます。
-
(オプション) クエリ設定
SQL 生成の精度を向上させるために、オプションのクエリ設定を使用できます。
-
最大クエリ時間 ー クエリがタイムアウトするまでの時間。
-
説明 ー テーブルまたは列に関するメタデータまたは補足情報を提供します。テーブルや列の説明、使用に関する注意事項、その他の属性を含めることができます。説明を追加すると、テーブルまたは列の構造に関する追加のコンテキストと情報が提供され、SQL クエリの生成が改善されます。
-
インクルージョンと除外 ー SQL 生成に含めたり除外したりするテーブルまたは列のセットを指定します。このフィールドは、SQL クエリの範囲を、使用可能なテーブルまたは列の定義済みのサブセットに制限する場合に重要です。このオプションは、不要なテーブルまたは列の参照を減らすことで、生成プロセスを最適化するのに役立ちます。
インクルージョンを指定すると、他のすべてのテーブルと列は無視されます。除外を指定すると、指定したテーブルと列は無視されます。
注記
インクルージョンと除外はガードレールの代わりにはならず、モデルの精度を向上させることのみを目的としています。
-
厳選されたクエリ ー 次善定義済みの質問と回答の例のセット。質問は自然言語クエリ (NLQ) として記述され、回答は対応する SQL クエリとして記述されます。これらの例は、生成すべきクエリの種類の例を提供することにより、SQL 生成プロセスに役立ちます。これらは、生成 SQL 出力の精度と関連性を向上させるための参照ポイントとして機能します。
-
自分のユースケースに対応するセクションを展開してください。
を使用して構造化データストアに接続するには AWS マネジメントコンソール、次の手順を実行します。
-
Amazon Bedrock コンソールを使用するアクセス許可を持つ IAM ID AWS マネジメントコンソール を使用して にサインインします。次に、https://console.aws.amazon.com/bedrock
で Amazon Bedrock コンソールを開きます。 -
左側のナビゲーションペインで、ナレッジベースを選択します。
-
ナレッジベースセクションで、「作成」を選択し、構造化データストアを持つナレッジベースを選択します。
-
ナレッジベースに以下の詳細を設定します。
-
(オプション) デフォルトの名前を変更し、ナレッジベースの説明を入力します。
-
データストアからデータを取得するために使用するクエリエンジンを選択します。
-
このナレッジベースを作成および管理するための適切なアクセス許可を持つ IAM サービスロールを選択します。Amazon Bedrock にサービスロールを作成させることも、作成したカスタムロールを選択することもできます。カスタムロールの作成の詳細については、「」を参照してください構造化データストアを使用してナレッジベースを作成するためのクエリエンジンとアクセス許可を設定する。
-
(オプション) ナレッジベースに関連付けるタグを追加します。詳細については、「Amazon Bedrock リソースにタグ付け」を参照してください。
-
[Next] (次へ) を選択します。
-
-
クエリエンジンを設定します。
-
クラスターまたはワークグループを作成したサービスを選択します。次に、使用するクラスターまたはワークグループを選択します。
-
認証方法を選択し、必要なフィールドに入力します。
-
メタデータを保存するデータストアを選択します。次に、データベースの名前を選択または入力します。
-
(オプション) 必要に応じてクエリ設定を変更します。さまざまな設定の詳細については、このトピックの冒頭を参照してください。
-
[次へ] を選択します。
-
-
ナレッジベース設定を確認し、必要に応じてセクションを編集します。を確認してナレッジベースを作成します。
Amazon Bedrock API を使用して構造化データストアに接続するには、次の一般的なリクエスト本文を使用して、Amazon Bedrock エージェントのビルドタイムエンドポイントを使用して CreateKnowledgeBase リクエストを送信します。
{ "name": "string", "roleArn": "string", "knowledgeBaseConfiguration": { "type": "SQL", "sqlKnowledgeBaseConfiguration": SqlKnowledgeBaseConfiguration }, "description": "string", "clientToken": "string", "tags": { "string": "string" } }
次のフィールドは必須です。
| フィールド | 基本的な説明 |
|---|---|
| 名前 | ナレッジベースの名前 |
| roleArn | 適切なアクセス許可を持つナレッジベースサービスロール。コンソールを使用して、適切なアクセス許可を持つサービスロールを自動的に作成できます。 |
| knowledgeBaseConfiguration | ナレッジベースの設定が含まれます。構造化データベースの場合は、 を SQLとして指定typeし、 sqlKnowledgeBaseConfigurationフィールドを含めます。 |
次のフィールドはオプションです。
| フィールド | 使用アイテム |
|---|---|
| description | ナレッジベースの説明を含めるには。 |
| clientToken | API リクエストが 1 回だけ完了するようにします。詳細については、「べき等性の確保」を参照してください。 |
| tags | タグをエイリアスに関連付ける場合に指定します。詳細については、「Amazon Bedrock リソースにタグ付け」を参照してください。 |
SQLKnowledgeBaseConfiguration は、使用するクエリエンジンによって異なります。Amazon Redshift の場合、 typeフィールドを として指定REDSHIFTし、RedshiftConfiguration にマッピングされる redshiftConfigurationフィールドを含めます。RedshiftConfiguration では、次のフィールドを設定します。
次のタイプのクエリエンジンを設定できます。
Amazon Redshift データベースが専用コンピューティングノードにプロビジョニングされている場合、 queryEngineConfigurationフィールドの値は、次の形式の RedshiftQueryEngineConfiguration である必要があります。
{ "type": "PROVISIONED", "provisionedConfiguration": { "clusterIdentifier": "string", "authConfiguration": RedshiftProvisionedAuthConfiguration }, }
clusterIdentifier フィールドにクラスターの ID を指定します。RedshiftProvisionedAuthConfiguration は、使用している認可のタイプによって異なります。認可方法に一致するタブを選択します。
Amazon Redshift Serverless を使用している場合、 queryConfigurationフィールドの値は、次の形式の RedshiftQueryEngineConfiguration である必要があります。
{ "type": "SERVERLESS", "serverlessConfiguration": { "workgroupArn": "string", "authConfiguration": } }
workgroupArn フィールドにワークグループの ARN を指定します。RedshiftServerlessAuthConfiguration は、使用している認可のタイプによって異なります。認可方法に一致するタブを選択します。
このフィールドは、単一の RedshiftQueryEngineStorageConfiguration を含む配列にマッピングされ、その形式はデータの保存場所によって異なります。
データが に保存されている場合 AWS Glue Data Catalog、 は次の形式RedshiftQueryEngineStorageConfigurationである必要があります。
{ "type": "AWS_DATA_CATALOG", "awsDataCatalogConfiguration": { "tableNames": ["string"] } }
ナレッジベースを接続する各テーブルの名前を、 がtableNamesマッピングする配列に追加します。
注記
クロスデータベースクエリ () で説明されているパターンにテーブル名を入力します${databaseName}.${tableName}。を指定することで、すべてのテーブルを含めることができます${databaseName.*}。
データが Amazon Redshift データベースに保存されている場合、 は次の形式RedshiftQueryEngineStorageConfigurationである必要があります。
{ "type": "string", "redshiftConfiguration": { "databaseName": "string" } }
databaseName フィールドに Amazon Redshift データベースの名前を指定します。
注記
クロスデータベースクエリ () で説明されているパターンにテーブル名を入力します${databaseName}.${tableName}。を指定することで、すべてのテーブルを含めることができます${databaseName.*}。
データベースが Amazon SageMaker AI Lakehouse を介してマウントされている場合、データベース名は ${db}@${schema} の形式になります。
このフィールドは、データのクエリ方法の設定に使用できる次の QueryGenerationConfiguration にマッピングされます。
{ "executionTimeoutSeconds": number, "generationContext": { "tables": [ { "name": "string", "description": "string", "inclusion": "string", "columns": [ { "name": "string", "description": "string", "inclusion": "string" }, ... ] }, ... ], "curatedQueries": [ { "naturalLanguage": "string", "sql": "string" }, ... ] } }
クエリをタイムアウトさせる場合は、 executionTimeoutSecondsフィールドにタイムアウト時間を秒単位で指定します。
generationContext フィールドは QueryGenerationContext オブジェクトにマッピングされ、必要な数の以下のオプションを設定できます。
重要
生成コンテキストを含めると、クエリエンジンは SQL の生成時にそのコンテキストを適用しようと最善を尽くします。生成コンテキストは非決定的であり、モデルの精度を向上させることのみを目的としています。精度を確保するには、生成された SQL クエリを検証します。
含めることができる生成コンテキストについては、以下のセクションを展開します。
データベースをクエリするための SQL 生成の精度を向上させるために、短いテーブルまたは列名よりも多くのコンテキストを提供するテーブルまたは列の説明を指定できます。以下の操作を行うことができます。
-
テーブルの説明を追加するには、
tables配列に QueryGenerationTable オブジェクトを含めます。そのオブジェクトで、次の例のように、nameフィールドにテーブルの名前を指定し、descriptionフィールドに説明を指定します。{ "name": "database.schema.tableA", "description": "Description for Table A" } -
列の説明を追加するには、
tables配列に QueryGenerationTable オブジェクトを含めます。そのオブジェクトで、nameフィールドにテーブルの名前を指定し、QueryGenerationColumn の配列にマッピングされるcolumnsフィールドを含めます。QueryGenerationColumnオブジェクトには、次の例のように、nameフィールドに列の名前、descriptionフィールドに説明を含めます。{ "name": "database.schema.tableA", "columns": [ { "name": "Column A", "description": "Description for Column A" } ] } -
次の例のように、テーブルと列の両方の説明を追加できます。
{ "name": "database.schema.tableA", "description": "Description for Table A", "columns": [ { "name": "columnA", "description": "Description for Column A" } ] }注記
クロスデータベースクエリで説明されているパターンにテーブル名と列名を入力します。データベースが の場合 AWS Glue Data Catalog、形式は です
awsdatacatalog.gluedatabase.table。
QueryGenerationTable オブジェクトと QueryGenerationColumn QueryGenerationColumn オブジェクトの inclusionフィールドを使用して、SQL の生成時に含める、または除外するテーブルまたは列を提案できます。inclusion フィールドに次のいずれかの値を指定できます。
-
INCLUDE – SQL の生成時にコンテキストとして含まれるのは、指定したテーブルまたは列のみです。
-
EXCLUDE – 指定したテーブルまたは列は、SQL の生成時にコンテキストとして除外されます。
テーブルまたは列を含めるか除外するかは、次の方法で指定できます。
-
テーブルを含めるか除外するには、
tables配列に QueryGenerationTable オブジェクトを含めます。そのオブジェクトで、次の例のように、nameフィールドにテーブルの名前を指定し、inclusionフィールドにテーブルを含めるか除外するかを指定します。{ "name": "database.schema.tableA", "inclusion": "EXCLUDE" }クエリエンジンは、SQL を生成するための追加コンテキスト
Table Aに を追加しません。 -
列を含めるか除外するには、
tables配列に QueryGenerationTable オブジェクトを含めます。そのオブジェクトで、nameフィールドにテーブルの名前を指定し、QueryGenerationColumn の配列にマッピングされるcolumnsフィールドを含めます。QueryGenerationColumnオブジェクトで、次の例のように、nameフィールドに列の名前を含め、inclusionフィールドに含めるか除外するかを指定します。{ "name": "database.schema.tableA", "columns": [ { "name": "database.schema.tableA.columnA", "inclusion": "EXCLUDE" } ] }SQL の生成では、SQL の生成時にコンテキスト
Column ATable A内の が無視されます。 -
次の例のように、包含または除外を指定するときにテーブルと列を組み合わせることができます。
{ "name": "database.schema.tableA", "inclusion": "INCLUDE", "columns": [ { "name": "database.schema.tableA.columnA", "inclusion": "EXCLUDE" } ] }SQL 生成には が含まれますが
Table A、SQL 生成のコンテキストを追加すると、そのColumn A内部は除外されます。
重要
テーブルと列の除外はガードレールに代わるものではありません。これらのテーブルと列の包含と除外は、SQL の生成時にモデルが考慮する追加のコンテキストとして使用されます。
ユーザークエリを SQL クエリに変換する際のクエリエンジンの精度を向上させるには、CuratedQuery オブジェクトの配列にマッピングされる QueryGenerationContext オブジェクトの curatedQueriesフィールドに例を指定できます。各オブジェクトには、以下のフィールドが含まれています。
-
naturalLanguage – 自然言語でのクエリの例。
-
sql – 自然言語クエリに対応する SQL クエリ。