

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 構造化データのクエリを生成する
<a name="knowledge-base-generate-query"></a>

構造化データストアをナレッジベースに接続すると、ナレッジベースは、クエリ対象のデータソースの構造に基づいて、ユーザーによって指定された自然言語クエリを SQL クエリに変換することでクエリを実行できます。使用するバージョン:
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html): レスポンスは SQL クエリ実行の結果を返します。
+ [https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html): 生成されるレスポンスは、SQL クエリ実行の結果に基づいています。
+ [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html): Amazon Bedrock ナレッジベースは、クエリの変換を取得プロセスから切り離します。この API オペレーションを使用することで、クエリを SQL に変換できます。

## `GenerateQuery` API を使用する場合
<a name="knowledge-base-generate-query-api"></a>

`GenerateQuery` API オペレーションからのレスポンスを後続の `Retrieve` または `RetrieveAndGenerate` アクションで使用するか、他のワークフローに挿入することができます。`GenerateQuery` を使用すると、ナレッジベースのデータソースの構造を考慮して、クエリを SQL クエリに効率的に変換できます。

自然言語クエリを SQL クエリに変換するには、[Amazon Bedrock エージェントのランタイムエンドポイント](https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bra-rt)を使用して [GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) リクエストを送信します。`GenerateQuery` リクエストには、次に示すようなフィールドがあります。
+ queryGenerationInput – `TEXT` を `type` として指定し、`text` フィールドにクエリを含めます。
**注記**  
クエリは英語で記述する必要があります。
+ transformationConfiguration – `TEXT_TO_SQL` を `mode` として指定します。`textToSqlConfiguration` フィールドで、`KNOWLEDGE_BASE` を `type` として指定します。次に、ナレッジベースの ARN を指定します。

レスポンスは、`queries` フィールドに [GeneratedQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GeneratedQuery.html) オブジェクトを含む配列を返します。このオブジェクトには、`sql` フィールドのクエリの SQL クエリが含まれています。

## 主な考慮事項
<a name="knowledge-base-generate-query-considerations"></a>

以下は、構造化データを使用してクエリを生成する際の主な考慮事項です。
+ 

**クロスリージョン推論と構造化データの取得**  
構造化データ取り出しでは、クロスリージョン推論を使用して、推論リクエストを処理する最適な を地域AWS リージョン内で選択します。これにより追加料金が発生することはなく、利用可能なリソースとモデルの可用性を最大化することでカスタマーエクスペリエンスが向上します。

  クロス推論リクエストは、データが最初に存在する地域の一部AWS リージョンである 内に保持されます。データはソースリージョン内に保存されたままですが、入力プロンプトと出力結果がこのリージョン外に移動する可能性があります。すべてのデータは Amazon の安全なネットワーク経由で暗号化されて送信されます。

  詳細については、「[クロスリージョン推論によりスループットを向上させる](cross-region-inference.md)」を参照してください。
+ 

**生成された SQL クエリの精度**  
生成された SQL クエリの精度は、コンテキスト、テーブルスキーマ、およびユーザークエリの意図によって異なります。ワークロードで使用する前に、生成されたクエリを評価して、ユースケースに適していることを確認します。
+ 

**検索結果の数**  
レスポンスを生成するときは、次の制限が適用されます。
  + `InvokeAgent`、`RetrieveAndGenerate`、および `RetrieveAndGenerateStream` API オペレーションを使用する場合、取得結果のうち、レスポンス生成に使用されるのは 10 件のみです。
  + `InvokeAgent` API を使用しているとき、取得された結果の行数が 10 行を超える場合、取得された行の総数はレスポンスの生成時にエージェントに渡されません。代わりに `RetrieveAndGenerate` API を使用した場合、最終レスポンスの生成時に行の総数がプロンプトに含められます。
+ 

**`GenerateQuery` API クォータ**  
`GenerateQuery` API には、1 秒あたり 2 リクエストのクォータがあります。

## 生成されたクエリにアクセスするためのアクセス許可をロールに付与する
<a name="knowledge-base-structured-permissions"></a>

構造化データソースに接続されているナレッジベースで、生成されたクエリに対して追加のオペレーションを実行する場合は、`GenerateQuery` API アクションを実行するアクセス許可を付与する必要があります。構造化データストアに接続されたナレッジベースを IAM ロールがクエリできるようにするには、次のポリシーをロールにアタッチします。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "GetKB",
            "Effect": "Allow",
            "Action": [
                "bedrock:GetKnowledgeBase"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "GenerateQueryAccess",
            "Effect": "Allow",
            "Action": [
                "bedrock:GenerateQuery",
                "sqlworkbench:GetSqlRecommendations"
            ],
            "Resource": "*"
        },
        {
            "Sid": "Retrieve",
            "Effect": "Allow",
            "Action": [
                "bedrock:Retrieve"
            ],
            "Resource": [
                "arn:aws:bedrock:us-east-1:123456789012:knowledge-base/KnowledgeBaseId"
            ]
        },
        {
            "Sid": "RetrieveAndGenerate",
            "Effect": "Allow",
            "Action": [
                "bedrock:RetrieveAndGenerate"
            ],
            "Resource": [
                "*"
            ]
        }
    ]
}
```

------

ユースケースに応じて、不要なステートメントは削除できます。
+ `GetKB` および `GenerateQuery` ステートメントは、[GenerateQuery](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_GenerateQuery.html) を呼び出して、ユーザークエリと接続されたデータソースを考慮した SQL クエリを生成するために必要です。
+ `Retrieve` ステートメントは、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_Retrieve.html) を呼び出して構造化データストアからデータを取得するために必要です。
+ `RetrieveAndGenerate` ステートメントは、[https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html](https://docs.aws.amazon.com/bedrock/latest/APIReference/API_agent-runtime_RetrieveAndGenerate.html) を呼び出して構造化データストアからデータを取得し、データに基づいてレスポンスを生成するために必要です。