Knowledge bases for Amazon Bedrockのベクトルデータベースを手動作成する手順

なにかの投稿のために書きかけたのですが、本題ではなかったのでボツになりました。
が、いつかの自分のための備忘録です。


## OpenSearch Serverlessを構築

1. OpenSearch Serverlessの管理画面を表示します
    左メニューの「コレクション」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/a361103f-713d-7ee5-dd8b-a8e659ed67a9.png)


1. 「コレクションの作成」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/81363b13-57c7-aed5-3d60-93cac0020dfc.png)

1. 「コレクション名」を入力します。コレクションタイプは「ベクトル検索」を選択し、「アクティブレプリカを有効化」のチェックを外します
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/c804a3f9-e7bd-2309-e4eb-18fefa2d1317.png)

1. セキュリティは「簡単作成」を選択します
    「次へ」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/02e0bce8-fcfb-029e-17c5-c5dcf2257e0a.png)

1. 確認画面で内容を確認し、「送信」をクリックします
    ![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/dc31d6c9-1d94-7440-1e6b-822b132e54aa.png)

1. コレクションの作成が始まり、しばらくすると作成完了のメッセージが表示されます
    このままでは権限が不足していてアクセスできませんので、データアクセスポリシーを設定します。「データアクセスを管理」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/ae342b3a-dc96-bbec-ef15-f04695cb0b35.png)

1. 「アクセスポリシーを作成」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/29f9e735-e797-1c03-04e7-a5364652ae84.png)

1. 「アクセスポリシー名」を入力します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/255b99b3-ffa5-3a65-9b9f-772932650fd9.png)

1. 「ルール名」を入力します。「プリンシパルを追加」をクリックし、権限を付与するユーザー（今ログインしているIAMユーザーやIAMロール）を選択します
    「付与」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/83577841-df29-3292-f2dc-8214836361c4.png)

1. 付与する権限を選択します。
    「エイリアスとテンプレートの許可」の隣りにある「すべて選択」をクリックします
    「コレクションもしくは入力のプレフィックス、またはコレクション名を選択」をマウスでクリックするとコレクション名を選択できますので、「bedrock-knowledge-base」を選択します
    「インデックスの許可」の隣りにある「すべて選択」をクリックします
    「コレクションを選択」部分は「bedrock-knowledge-base」を選択します
    「特定のインデックスまたはインデックスパターン」は「*」を入力します
    「保存」をクリックします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/46911a02-fb12-1746-448e-e167f18d88d9.png)

1. 「作成」をクリックします

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/2c870a72-4f42-8f4b-b985-df827be8eb9c.png)

### インデックスを作成

続いてインデックスを作成します。

1. 左メニューの「コレクション」をクリックします

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/86f49132-3065-20e2-16bc-51b4b029c3c8.png)

1. コレクション名をクリックします

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/12e4f768-1a75-53c2-f6d4-5d7827de3b20.png)

1. 「インデックス」タブをクリックします

    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/36b9f106-1dab-4d2c-7273-3cb7bc417ae6.png)

1. 「ベクトルインデックスを作成」をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/a4c0d2f1-bb9f-5bf1-8e8f-9046839bd029.png)

1. 以下の内容で入力を行います

    * ベクトルインデックスの詳細
    
        「ベクトルインデックス名」を入力します

    * ベクトルフィールド
        「ベクトルフィールドを追加」をクリックし、以下の内容を入力します
    
        | 項目 | 設定値 |
        | --- | --- |
        | ベクトルフィールド名 | bedrock-knowledge-base-default-vector |
        | Engine | faiss |
        | ディメンション | 1024 |
        | 距離メトリクス | ユークリッド |
        
        ※ディメンションは使用する埋め込みモデルに合わせて設定してください。（Titan Text Embeddings v2を使用する場合は、1024、512、256のいずれか）

    * メタデータの管理
        以下の内容を入力します
        
        | マッピングフィールド | データタイプ | フィルター可能 |
        | --- | --- | --- |
        | AMAZON_BEDROCK_METADATA | ストリング | False |
        | AMAZON_BEDROCK_TEXT_CHUNK | ストリング | True |

    入力後、「作成」をクリックします
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/41574/82fdec99-35e2-07c8-011d-b31a507e6a14.png)

OpenSearch Serverlessの管理画面での設定は以上です。