Amazon Bedrock Knowledge Bases 構造化データ取得機能とは
AWS re:Invent 2024 の Keynote にて、 Amazon Bedrock Knowledge Bases で構造化データ取得のサポートが発表されました。
この機能によって、データソースから構造化データを取得するための自然言語クエリを用意すると、 Bedrock が自然言語クエリを自動で SQL クエリに変換して、構造化データを取得することができるようになりました。
つまり、ユーザは構造化データを移動したり前処理したりすることなく、自然言語クエリを使って(Redshift 等のデータソースから)直接取得することが可能になります。
触ってみる
事前準備: Amazon Redshift で Redshift serverless リソースを構築し、任意のデータを取り込む。
①Amazon Bedrock のコンソールトップ画面
②「ナレッジベース」
>「ナレッジベースを作成」>「Knowledge Base structured data store」
③「ステップ1 ナレッジベースの詳細を入力」にて、
「ナレッジベースの詳細」>「ナレッジベース名」
「Data source details」>「Query engine」
「IAM許可」>「新しいサービスロールを作成して使用」 >「サービスロール名」(自動入力)
④「ステップ2 Configure query engine」にて、
「Query engine details」
>「Connection options」
>「Redshift serverless」
>「Workgroup」
>作成したワークグループを選択
「Authentication」>「IAM Role」
「Default storage metadata」
>「Options」
>「Amazon Redshift databases」
>「Redshift database list」
>「Database」
>「dev」
⑤「ステップ3 確認して作成」にて、
ステップ1&2の設定内容を確認して、「ナレッジベースを作成」
⑥「ステータス」=「利用可能」となったら、作成完了
⑦(Redshift serverless側にて)データベースユーザーを作成
CREATE USER "IAMR:${service-role}" WITH PASSWORD DISABLE;
⑧(Redshift serverless側にて)データベースユーザーにデータベースから情報を取得する権限を付与
GRANT SELECT ON ${schemaName}.${tableName} TO "IAMR:${serviceRole}";
躓き
この後、メタデータの取り込み処理=「同期(Sync)」において失敗。
※同期してメタデータを取得することにより、Amazon Bedrock Knowledge Bases はユーザープロンプトを接続されたデータベースのクエリに変換できるようになります。
次のコマンドを実行することで解決!
GRANT USAGE ON SCHEMA ${schemaName} TO "IAMR:${serviceRole}";
※同期失敗の原因:スキーマを新規作成していたが、その使用権限が不足していた。
なお、記事作成時点では、以下リンク先の公式ドキュメントが公開されており、私が躓いたポイントに対する対策がまとめられていました。
https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-prereq-structured-db-access.html
参考情報
・Amazon Bedrock Knowledge Bases 構造化データ取得機能を検証するにあたって参考にした記事
・筆者にて当記事に関する LT を行った際の PowerPoint スライド