Amazon OpenSearch Serverless コレクションをプライベートネットワークポリシーとともに使用して Amazon Bedrock にナレッジベースを作成する方法を教えてください。

所要時間2分
0

Amazon OpenSearch Serverless コレクションをプライベートネットワークポリシーとともに使用して、ナレッジベースを作成したいと考えています。

解決策

Amazon OpenSearch Serverless は、ナレッジベース内のベクトルストアとして使用できます。埋め込みにより、ナレッジベースはプライベートネットワークポリシーが設定されている、それらの OpenSearch サーバーレスコレクションにアクセスできるようになります。

前提条件

次のセクションでの例には、次のアクセス許可があります。
注: 特定のユースケースでは、追加の制限が必要になる場合があります。

ユーザーまたはコンソールのアクセス許可

ロール

プライベートネットワークポリシーを使用してコレクションを作成する

次の手順を実行します。

  1. Amazon OpenSearch Service コンソールにログインします。

  2. 左側のナビゲーションペインで、[サーバーレス] を展開します。次に、[コレクション] を選択します。

  3. [コレクションを作成] を選択します。コレクションの詳細を入力します。

  4. [標準作成] を選択します。

  5. [ネットワークアクセス設定] で、コレクションのネットワークアクセスを設定します。

    [アクセスタイプ] で [プライベート] を選択します。次に、コレクションにアクセスできる Amazon 仮想プライベートクラウド (VPC) エンドポイントと Amazon Bedrock サービスを選択します。

    アクセス用の VPC エンドポイントには、1 つ以上の VPC エンドポイントを指定します。または、[VPC エンドポイントを作成] オプションを選択すると、プライベートコレクションの作成時に VPC エンドポイントを生成します。

    AWS サービスのプライベートアクセスでは、Amazon Bedrock をサービスとして選択します (bedrock.amazonaws.com)。

    [リソースタイプ][OpenSearch エンドポイントへのアクセスを有効にする] を選択します。
    注: AWS サービスのプライベートアクセスは OpenSearch エンドポイントにのみ適用され、OpenSearch Dashboard のエンドポイントには適用されません。

  6. [次へ] を選択します。

  7. コレクションのデータアクセスルールを設定します。ルールは、コレクション内のデータにアクセスできるユーザーを定義します。作成するルールごとに、次の手順を実行します。
    [プリンシパルの追加] を選択し、1 つ以上の AWS Identity and Access Management (IAM) ロールを選択します。
    データアクセスを許可するには、セキュリティアサーションマークアップ言語 (SAML) のユーザーとグループを選択します。ナレッジベースの作成に必要な Amazon Bedrock のカスタムサービスロールを必ず含めてください。
    [アクセス許可の付与] で、関連するプリンシパルに付与するエイリアス、テンプレート、インデックス権限をすべて選択します。

  8. [次へ] を選択します。

  9. [データアクセスポリシー設定] で、[新しいデータアクセスポリシーとして作成] を選択します。または、プリンシパルとアクセス許可を既存のポリシーに追加します。

  10. コレクションの設定を確認します。完了したら、[送信] を選択します。

OpenSearch Dashboard からインデックスを作成する

プライベートコレクションでは、インデックスを直接作成することはできません。次の例は、OpenSearch Dashboard を使用してインデックスとベクトルメタデータフィールドを作成する方法を示しています。既存のネットワークポリシーを変更するか、新しいポリシーを作成して OpenSearch Dashboard にアクセスできるようにします。

既存のネットワークポリシーを変更するには、次の手順を実行します。

  1. Amazon OpenSearch Service コンソールにログインします。
  2. 左側のナビゲーションペインで、[サーバーレス] を展開します。次に、[コレクション] を選択します。
  3. プライベートコレクションのネットワークポリシーセクションに移動します。
  4. [関連ポリシー] でポリシーを選択します。
  5. [編集] を選択します。
  6. [ルールを追加] を選択します。
  7. [アクセスタイプ] で [パブリック] を選択します。
  8. [OpenSearch ダッシュボードへのアクセスを有効にする] を選択します。
  9. プライベートコレクション名を検索して関連付けます。
    注: [更新] ボタンで既存のポリシーを更新します。

ベクトルインデックスの作成

次の手順を実行します。

  1. Amazon OpenSearch Service コンソールにログインします。
  2. 左側のナビゲーションペインで、[サーバーレス] を展開します。次に、[コレクション] を選択します。
  3. プライベートコレクションを選択します。
  4. [ベクトルインデックスを作成] を選択します。
  5. ベクトルインデックスベクトルフィールドメタデータ管理の詳細を入力します。
  6. 設定を含め、JSON コードブロックをコピーします。
  7. 左側のナビゲーションペインで、[サーバーレス] を展開します。[コレクション] に戻ります。
  8. [ダッシュボードリンク] から OpenSearch Dashboard にアクセスします。
  9. 左側の [ホーム][開発者ツール] を選択します。
  10. 前にコピーした JSON コードに、設定を含め入力します。次に示すように、PUT コマンドを使用します。完了したら、次のコードを実行します。
PUT <index name>
{
  "settings": {
    "index": {
      "knn": true,
      "knn.algo_param.ef_search": 512
    }
  },
  "mappings": {
    "properties": {
      "<vector field name>": {
        "type": "knn_vector",
        "dimension": 1536,
        "method": {
          "name": "hnsw",
          "engine": "faiss",
          "parameters": {},
          "space_type": "l2"
        }
      },
      "<Mapping field-1>": {
        "type": "text",
        "index": "true"
      },
      "<Mapping field-2>": {
        "type": "text",
        "index": "true"
      }
    }
  }
}

コードをカスタマイズするには、次の変数を置き換えます。

<index name>, <vector field name>, <Mapping field-1>, <Mapping field-2>

詳細については、OpenSearch のウェブサイトで「インデックスの作成」を参照してください。
注: 独自のベクトルインデックスを作成することもできます。コードを使用してベクトルインデックスを作成する方法については、「Amazon OpenSearch へのデータの取り込み」を参照してください。Amazon Bedrock でのベクトルストアの期待については、「サポートされているベクトルストアで、ナレッジベースのベクトルインデックスを設定する」を参照してください。

ナレッジベースの作成

  1. ナレッジベースを作成する前に、プライベートコレクションを準備済みで、利用可能であることを確認してください。ユーザーロールと Amazon Bedrock サービスロールがデータおよびネットワークへアクセスできることを確認します。ベクトルインデックスに以下のフィールドがあることを確認します。
    コレクション ARN
    ベクトルインデックス名
    ベクトルフィールド名
    メタデータ管理 (最初のマッピングフィールド)
    メタデータ管理 (2 番目のマッピングフィールド)
  2. ナレッジベースを作成します

トラブルシューティングのヒント

エラー: 「提供されたナレッジベースのストレージ設定が無効です。リクエストが失敗しました:\ [http\ _exception]。サーバーが 401 を返しました」

このエラーは、プライベートコレクションと VPC エンドポイントへのアクセスを許可するネットワークポリシーに、Amazon Bedrock が追加されていない場合に発生します。

このエラーを解決するには、前のセクションで、「プライベートネットワークポリシーを使用してコレクションを作成する」の手順 5 に進んでください。次に、bedrock.amazonaws.com をネットワークポリシーに追加して、Amazon Bedrock がプライベートコレクションにアクセスできるようにします。

関連情報

Amazon Bedrock でナレッジベースを作成したときに発生するアクセス許可エラーのトラブルシューティング方法を教えてください。

コメントはありません

関連するコンテンツ