Amazon Bedrock のナレッジベースとしての Aurora PostgreSQL の使用 - Amazon Aurora

Amazon Bedrock のナレッジベースとしての Aurora PostgreSQL の使用

Aurora PostgreSQL 15.4、14.9、13.12、12.16 バージョンから、Aurora PostgreSQL DB クラスターを Amazon Bedrock のナレッジベースとして使用できます。詳細については、「Amazon Aurora でベクトルストアを作成する」を参照してください。ナレッジベースは、Amazon S3 バケットに保存されている非構造化テキストデータを自動的に取得し、テキストチャンクとベクトルに変換して、PostgreSQL データベースに保存します。生成 AI アプリケーションでは、Agents for Amazon Bedrock を使用してナレッジベースに保存されているデータをクエリし、それらのクエリの結果を使用して基本的なモデルが提供する回答を補強できます。このワークフローは、取得拡張生成 (RAG) と呼ばれます。RAG の詳細については、「取得拡張生成 (RAG)」を参照してください。

前提条件

Amazon Bedrock のナレッジベースとして Aurora PostgreSQL クラスターを使用するための以下の前提条件を理解してください。大まかに言うと、Bedrock で使用する以下のサービスを設定する必要があります。

  • 以下のバージョンで作成された Amazon Aurora PostgreSQL DB クラスター:

    • 15.4 以降のバージョン

    • 14.9 以降のバージョン

    • 13.12 以降のバージョン

    • 12.16 以降のバージョン

    注記

    ターゲットデータベースで pgvector 拡張機能を有効にし、バージョン 0.5.0 以降を使用する必要があります。詳細については、「HNSW インデックス作成による pgvector v0.5.0」を参照してください。

  • Data API

  • Secrets Manager で管理されているユーザー。詳細については、「Amazon Aurora および AWS Secrets Manager によるパスワード管理」を参照してください。

Amazon Bedrock のナレッジベースとして使用する Aurora PostgreSQL の準備

Aurora PostgreSQL DB クラスターを Amazon Bedrock のナレッジベースとして使用するには、以下のステップに従って作成および設定する必要があります。

  1. Aurora PostgreSQL DB クラスターを作成します。詳細については、「Aurora PostgreSQL DB クラスターの作成と接続」を参照してください。

  2. Aurora PostgreSQL DB クラスターの作成時に Data API を有効にします。サポートされているバージョンの詳細については、「RDS Data API の使用」を参照してください。

  3. Amazon Bedrock で使用する Aurora PostgreSQL DB クラスターの Amazon リソースネーム (ARN) を書き留めておきます。詳細については、「Amazon リソースネーム」を参照してください。

  4. マスターユーザーを使用してデータベースにログインし、pgvector をセットアップします。拡張機能がインストールされていない場合は、次のコマンドを使用します。

    CREATE EXTENSION IF NOT EXISTS vector;

    HNSW インデックス作成をサポートする pgvector 0.5.0 以降のバージョンを使用します。詳細については、「HNSW インデックス作成による pgvector v0.5.0」を参照してください。

    pg_vector がインストールされているバージョンを確認するには、以下のコマンドを使用します。

    postgres=>SELECT extversion FROM pg_extension WHERE extname='vector';
  5. Bedrock がデータのクエリに使用できる特定のスキーマを作成します。スキーマを作成するには以下のコマンドを使用します。

    CREATE SCHEMA bedrock_integration;
  6. Bedrock がデータベースのクエリに使用できる新しいロールを作成します。次のコマンドを使用して、新しいロールを作成します。

    CREATE ROLE bedrock_user WITH PASSWORD password LOGIN;
    注記

    Secrets Manager のパスワードを作成する場合と同じものを使用するため、このパスワードを書き留めておきます。

  7. bedrock_integration スキーマにテーブルまたはインデックスを作成できるように、スキーマを管理する bedrock_user アクセス許可を付与します。

    GRANT ALL ON SCHEMA bedrock_integration to bedrock_user;
  8. bedrock_user としてログインし、bedrock_integration schema にテーブルを作成します。

    CREATE TABLE bedrock_integration.bedrock_kb (id uuid PRIMARY KEY, embedding vector(1536), chunks text, metadata json);
  9. bedrock がデータのクエリに使用できるコサイン演算子を使用してインデックスを作成することをお勧めします。

    CREATE INDEX on bedrock_integration.bedrock_kb USING hnsw (embedding vector_cosine_ops);
  10. AWS Secrets Manager データベースシークレットを作成します。詳細については、「AWSSecrets Manager データベースのシークレット」を参照してください。

Bedrock コンソールでのナレッジベースの作成

ナレッジベースのベクトルストアとして使用するように Aurora PostgreSQL を準備するときは、Amazon Bedrock コンソールに提供する必要がある以下の詳細情報を収集します。

  • Amazon Aurora DB クラスターの ARN

  • シークレット ARN

  • データベース名 (postgres など)

  • テーブル名 - スキーマ修飾名、つまり CREATE TABLE bedrock_integration.bedrock_kb を指定するように通知します。これは、bedrock_integration スキーマに bedrock_kb テーブルを作成します。

  • テーブルフィールド:

    ID: (id)

    テキストチャンク (チャンク)

    ベクトル埋め込み (埋め込み)

    メタデータ (メタデータ)

これらの詳細を使用して、Bedrock コンソールでナレッジベースを作成できます。詳細については、「Amazon Aurora でベクトルストアを作成する」を参照してください。

Aurora がナレッジベースとして追加されたら、データソースをそこに取り込みます。詳細については、「データソースをナレッジベースに取り込む」を参照してください。