top of page
  • 執筆者の写真奈良 英樹

AWS Bedrock KnowledgeBase RAG サンプル: 4回 AWS 基盤構築(RAG)

AWS 基盤構築(RAG)

バックエンドリソースができたので、実際のリソースを作成します。 ここでは、Web API で問い合わせする前にコマンドで RAG の確認ができるまでのリソースをつくります。


基盤モデル(LLM)のリクエスト


本サンプルでは以下の LLM を使っています:

これらの LLM を Bedrock から使えるようにするために、基盤モデルの利用をリクエストしておく必要があります。


バックエンドの設定

前のセクションで作成したリソースをバックエンドのストアとステート管理で使うように terraform ステートメントに指定します。

terraform {
  backend "s3" {
    # backend は variable評価前に実行されるので TF_VAR_ 環境変数を参照することになる
    region         = var.admin_region
    bucket         = "${var.service}-admin-state"
    key            = "terraform/${var.env}/terraform.tfstate"
    dynamodb_table = "${var.service}-admin-statedb-${var.env}"
  }
}

terraform ステートメントの実行時には、自身で定義した変数は使えないので、パラメトリックに定義するには環境変数を使います。 対応する変数に TF_VAR_ でプレフィックスした環境変数で指定可能です。 variables.tf には default が定義されているので環境変数がなければ、それに従ってバックエンドのリソースが指定されます。


OpenTofu の実行結果出力

rag/outputs.tf に作成したリソース情報を出力するように定義しています。

次のコマンドを実行すると、JSON に出力されます。:

docker compose run --rm tool tofu -chdir=tofu/rag output -json > .secrets/rag.json

aws-cli, boto3 を使ったスクリプトやプログラムにこの JSON を渡すことで、その都度リソースの名前や ARN を調べることなくコマンド実行可能になります。


VPC

本プロジェクトでは RAG のバックエンドデータべースとして Aurora RDS Serverless を使います。 ネットワークの設定などが必要なので、まず VPC を作ります。

docker compose run --rm tool tofu -chdir=tofu/rag init
docker compose run --rm tool tofu -chdir=tofu/rag plan -out rag.plan  -target=module.vpc
docker compose run --rm tool tofu -chdir=tofu/rag apply rag.plan

VPC の概要図:




Aurora RDS

次に Aurora RDS PostgreSQL を作成し、VPC のネットワークで動作するように構成します。

docker compose run --rm tool tofu -chdir=tofu/rag plan -out rag.plan  -target=module.aurora
docker compose run --rm tool tofu -chdir=tofu/rag apply rag.plan

Aurora の概要図:




ユーザー、スキーマ、テーブルなどの作成 (bin/aurora.py)

bin/aurora.py には click を使った Python スクリプトを定義してあります。 Aurora に対して boto3 を通じて psql と同様なステートメントを実行できるようにしてあります。 aurora.py スクリプトは OpenTofu が出力した AWS リソース情報の JSON ファイルを読み取って処理できるようにしてあります。

いくつかの共通ルーチンは bedrag パッケージに実装していますので、これを import して使います。


pgvector を有効にする

docker compose run --rm tool bin/aurora.py -to .secrets/rag.json setup-vector

アクセスユーザーの登録

docker compose run --rm tool bin/aurora.py -to .secrets/rag.json setup-vector

このユーザー情報は DATABASE_USER 環境変数を元に作成されます。 なお、この情報は Aurora RDS リソース作成の際、AWS シークレットマネージャにも登録されています。


RAG テーブルの登録

bedrag パッケージに SqlAlchemy を使って定義したモデル(Knowledge クラス)からテーブル生成を行います。

docker compose run --rm tool bin/aurora.py -to .secrets/rag.json create-table

また、作成したベクトルフィールドに対して検索効率を高めるためにインデックスを作成します:

docker compose run --rm tool bin/aurora.py -to .secrets/rag.json create-vector-index

RAG テーブル,スキーマに対してアクセスユーザーに許可を与える

docker compose run --rm tool bin/aurora.py -to .secrets/rag.json grant-schema
docker compose run --rm tool bin/aurora.py -to .secrets/rag.json grant-table

Bedrock Knowledge base

Bedrock Knowledge base が利用するバックエンドデータベースが作成されたので、Knowledge base 本体を作成します。

docker compose run --rm tool tofu -chdir=tofu/rag plan -out rag.plan  -target=module.bedrock
docker compose run --rm tool tofu -chdir=tofu/rag apply rag.plan

ベクトル化と生成の概要図:





閲覧数:15回0件のコメント

最新記事

すべて表示

AWS Bedrock KnowledgeBase RAG サンプル : 7その他 / あとがき

Aurora を夜間停止する API は呼び出された時だけ料金が発生しますが、データベースサーバーは稼働中ずっと課金されます。 今回作成したリソースの中でも Auroro の料金が最も高いので、サーバーを一時停止させないで帰宅してしまった時に自動的に一時停止するようにします...

Commentaires


bottom of page