Amazon OpenSearch Serverless コレクションをプライベートネットワークポリシーとともに使用して Amazon Bedrock にナレッジベースを作成する方法を教えてください。
Amazon OpenSearch Serverless コレクションをプライベートネットワークポリシーとともに使用して、ナレッジベースを作成したいと考えています。
解決策
Amazon OpenSearch Serverless は、ナレッジベース内のベクトルストアとして使用できます。埋め込みにより、ナレッジベースはプライベートネットワークポリシーが設定されている、それらの OpenSearch サーバーレスコレクションにアクセスできるようになります。
前提条件
次のセクションでの例には、次のアクセス許可があります。
注: 特定のユースケースでは、追加の制限が必要になる場合があります。
ユーザーまたはコンソールのアクセス許可
- AWS Identity and Access Management (IAM) ユーザーロールの AmazonBedrockFullAccess ポリシー。
- IAM ユーザーロールの AmazonS3FullAccess ポリシー。
- コレクションのインラインポリシー。詳細については、「Amazon OpenSearch Serverless コレクションの作成、一覧表示、削除」を参照してください。
- OpenSearch API とダッシュボードへのアクセスに関するインラインポリシー。詳細については、「OpenSearch API 操作の使用」を参照してください。
- カスタムサービスロールにアクセス許可を与える PassRole。詳細については、「AWS サービスにロールを渡すためのアクセス許可をユーザーに付与する」を参照してください。
ロール
プライベートネットワークポリシーを使用してコレクションを作成する
次の手順を実行します。
-
Amazon OpenSearch Service コンソールにログインします。
-
左側のナビゲーションペインで、[サーバーレス] を展開します。次に、[コレクション] を選択します。
-
[コレクションを作成] を選択します。コレクションの詳細を入力します。
-
[標準作成] を選択します。
-
[ネットワークアクセス設定] で、コレクションのネットワークアクセスを設定します。
[アクセスタイプ] で [プライベート] を選択します。次に、コレクションにアクセスできる Amazon 仮想プライベートクラウド (VPC) エンドポイントと Amazon Bedrock サービスを選択します。
アクセス用の VPC エンドポイントには、1 つ以上の VPC エンドポイントを指定します。または、[VPC エンドポイントを作成] オプションを選択すると、プライベートコレクションの作成時に VPC エンドポイントを生成します。
AWS サービスのプライベートアクセスでは、Amazon Bedrock をサービスとして選択します (bedrock.amazonaws.com)。
[リソースタイプ] で [OpenSearch エンドポイントへのアクセスを有効にする] を選択します。
注: AWS サービスのプライベートアクセスは OpenSearch エンドポイントにのみ適用され、OpenSearch Dashboard のエンドポイントには適用されません。 -
[次へ] を選択します。
-
コレクションのデータアクセスルールを設定します。ルールは、コレクション内のデータにアクセスできるユーザーを定義します。作成するルールごとに、次の手順を実行します。
[プリンシパルの追加] を選択し、1 つ以上の AWS Identity and Access Management (IAM) ロールを選択します。
データアクセスを許可するには、セキュリティアサーションマークアップ言語 (SAML) のユーザーとグループを選択します。ナレッジベースの作成に必要な Amazon Bedrock のカスタムサービスロールを必ず含めてください。
[アクセス許可の付与] で、関連するプリンシパルに付与するエイリアス、テンプレート、インデックス権限をすべて選択します。 -
[次へ] を選択します。
-
[データアクセスポリシー設定] で、[新しいデータアクセスポリシーとして作成] を選択します。または、プリンシパルとアクセス許可を既存のポリシーに追加します。
-
コレクションの設定を確認します。完了したら、[送信] を選択します。
OpenSearch Dashboard からインデックスを作成する
プライベートコレクションでは、インデックスを直接作成することはできません。次の例は、OpenSearch Dashboard を使用してインデックスとベクトルメタデータフィールドを作成する方法を示しています。既存のネットワークポリシーを変更するか、新しいポリシーを作成して OpenSearch Dashboard にアクセスできるようにします。
既存のネットワークポリシーを変更するには、次の手順を実行します。
- Amazon OpenSearch Service コンソールにログインします。
- 左側のナビゲーションペインで、[サーバーレス] を展開します。次に、[コレクション] を選択します。
- プライベートコレクションのネットワークポリシーセクションに移動します。
- [関連ポリシー] でポリシーを選択します。
- [編集] を選択します。
- [ルールを追加] を選択します。
- [アクセスタイプ] で [パブリック] を選択します。
- [OpenSearch ダッシュボードへのアクセスを有効にする] を選択します。
- プライベートコレクション名を検索して関連付けます。
注: [更新] ボタンで既存のポリシーを更新します。
ベクトルインデックスの作成
次の手順を実行します。
- Amazon OpenSearch Service コンソールにログインします。
- 左側のナビゲーションペインで、[サーバーレス] を展開します。次に、[コレクション] を選択します。
- プライベートコレクションを選択します。
- [ベクトルインデックスを作成] を選択します。
- ベクトルインデックス、ベクトルフィールド、メタデータ管理の詳細を入力します。
- 設定を含め、JSON コードブロックをコピーします。
- 左側のナビゲーションペインで、[サーバーレス] を展開します。[コレクション] に戻ります。
- [ダッシュボードリンク] から OpenSearch Dashboard にアクセスします。
- 左側の [ホーム] で [開発者ツール] を選択します。
- 前にコピーした 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 でのベクトルストアの期待については、「サポートされているベクトルストアで、ナレッジベースのベクトルインデックスを設定する」を参照してください。
ナレッジベースの作成
- ナレッジベースを作成する前に、プライベートコレクションを準備済みで、利用可能であることを確認してください。ユーザーロールと Amazon Bedrock サービスロールがデータおよびネットワークへアクセスできることを確認します。ベクトルインデックスに以下のフィールドがあることを確認します。
コレクション ARN
ベクトルインデックス名
ベクトルフィールド名
メタデータ管理 (最初のマッピングフィールド)
メタデータ管理 (2 番目のマッピングフィールド) - ナレッジベースを作成します。
トラブルシューティングのヒント
エラー: 「提供されたナレッジベースのストレージ設定が無効です。リクエストが失敗しました:\ [http\ _exception]。サーバーが 401 を返しました」
このエラーは、プライベートコレクションと VPC エンドポイントへのアクセスを許可するネットワークポリシーに、Amazon Bedrock が追加されていない場合に発生します。
このエラーを解決するには、前のセクションで、「プライベートネットワークポリシーを使用してコレクションを作成する」の手順 5 に進んでください。次に、bedrock.amazonaws.com をネットワークポリシーに追加して、Amazon Bedrock がプライベートコレクションにアクセスできるようにします。
関連情報
Amazon Bedrock でナレッジベースを作成したときに発生するアクセス許可エラーのトラブルシューティング方法を教えてください。
関連するコンテンツ
- 質問済み 2年前lg...
- 承認された回答質問済み 10ヶ月前lg...
- AWS公式更新しました 1年前