タダです.
S3 をデータソースに Bedrock Knowledge Base,S3 Vectorsを使った RAG を構築した際にデータソースのファイルを S3 アップロードした後に Bedrock Knowledge Base の同期をしたいと思ってGitHub Actionsを設定したのでメモとしてまとめます.
Bedrock Knowledge Base のデータ同期仕様
データソース側のファイルを追加,削除してもBedrock Knowledge Baseで対応されないようなことがあるとツラいのでドキュメントを見たところ Bedrock Knowledge Base の同期する時はデータソース側の変更を見て同期するようでした.
データソースからファイルを追加、変更、または削除するたびに、ナレッジベースでファイルのインデックスが再作成されるように、データソースを同期する必要があります。同期は増分処理であるため、前回の同期以降に追加、変更、または削除されたドキュメントだけが処理されます。
そのため,Bedrock Knowledge Base の同期コマンドを AWS CLI で実行するようにすることにしました.
GitHub Actions の処理詳細
ドキュメントが入っているファイルは GitHub リポジトリの documnet ディレクトリに入っていると仮定して記載します.S3 のアップロードは sync を使って行います.そして Bedrock Knowldege Base への同期は start-ingestion-job を使って行います.S3 のファイルアップロードと Bedrock Knowldege Base への同期を行う処理は以下のようにして行いました.
GitHub Actions の処理抜粋
- name: Upload document to S3 & sync Bedrock Knowledge Base
run: |
aws s3 sync ./document s3://バケット名/ --delete --exclude '除外したいファイルがあれば書く'
aws bedrock-agent start-ingestion-job --knowledge-base-id "ナレッジベースID" --data-source-id "データソースID"
これで S3 アップロード後の Bedrock Knowledge Base の同期を自動で行えるようにしました.
まとめ
Bedrock Knowledge Base のデータソースである S3 にアップロードしたデータ後同期させるための GitHub Actions を試した際のまとめでした.