構造化データのクエリを生成する - Amazon Bedrock

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

構造化データのクエリを生成する

構造化データストアをナレッジベースに接続すると、ナレッジベースは、クエリ対象のデータソースの構造に基づいて、ユーザーによって指定された自然言語クエリを SQL クエリに変換することでクエリを実行できます。使用するバージョン:

  • Retrieve: レスポンスは SQL クエリ実行の結果を返します。

  • RetrieveAndGenerate: 生成されるレスポンスは、SQL クエリ実行の結果に基づいています。

  • GenerateQuery: Amazon Bedrock ナレッジベースは、クエリの変換を取得プロセスから切り離します。この API オペレーションを使用することで、クエリを SQL に変換できます。

GenerateQuery API を使用する場合

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

自然言語クエリを SQL クエリに変換するには、Amazon Bedrock エージェントのランタイムエンドポイントを使用して GenerateQuery リクエストを送信します。GenerateQuery リクエストには、次に示すようなフィールドがあります。

  • queryGenerationInput – TEXTtype として指定し、text フィールドにクエリを含めます。

    注記

    クエリは英語で記述する必要があります。

  • transformationConfiguration – TEXT_TO_SQLmode として指定します。textToSqlConfiguration フィールドで、KNOWLEDGE_BASEtype として指定します。次に、ナレッジベースの ARN を指定します。

レスポンスは、queries フィールドに GeneratedQuery オブジェクトを含む配列を返します。このオブジェクトには、sql フィールドのクエリの SQL クエリが含まれています。

主な考慮事項

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

  • クロスリージョン推論と構造化データの取得

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

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

    詳細については、「クロスリージョン推論によりスループットを向上させる」を参照してください。

  • 生成された SQL クエリの精度

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

  • 検索結果の数

    レスポンスを生成するときは、次の制限が適用されます。

    • InvokeAgentRetrieveAndGenerate、および RetrieveAndGenerateStream API オペレーションを使用する場合、取得結果のうち、レスポンス生成に使用されるのは 10 件のみです。

    • InvokeAgent API を使用しているとき、取得された結果の行数が 10 行を超える場合、取得された行の総数はレスポンスの生成時にエージェントに渡されません。代わりに RetrieveAndGenerate API を使用した場合、最終レスポンスの生成時に行の総数がプロンプトに含められます。

  • GenerateQuery API クォータ

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

生成されたクエリにアクセスするためのアクセス許可をロールに付与する

構造化データソースに接続されているナレッジベースで、生成されたクエリに対して追加のオペレーションを実行する場合は、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 を呼び出して、ユーザークエリと接続されたデータソースを考慮した SQL クエリを生成するために必要です。

  • Retrieve ステートメントは、Retrieve を呼び出して構造化データストアからデータを取得するために必要です。

  • RetrieveAndGenerate ステートメントは、RetrieveAndGenerate を呼び出して構造化データストアからデータを取得し、データに基づいてレスポンスを生成するために必要です。