AWS Bedrockを体験しよう

先日実施された Amazon Bedrock Protopyping Camp に参加してきました！

初めてテックイベントに参加したのですが、いろいろなお話しが聞けて楽しかったです！

今回はイベント内で紹介された、Amazon Bedrockの使い方を共有したいと思います。

## この記事でできること
アップロードした資料の中から検索し、回答を生成してくれるチャットbotを作成します！

### そもそもAmazon Bedrockとは
Amazon Bedrockは、基盤モデルを活用した生成AIアプリケーションを簡単に構築、拡張できるサービスです。

実際に触ってみるとわかりますが、とても簡単にLLMのAPIが利用できるようになっています。また、RAG (Retrieval-Augmented Generation・検索拡張生成) と呼ばれる、LLMによるテキスト生成に外部情報の検索を組み合わせることで、回答精度を向上させる機能も簡単に利用できるようになっています。

簡単に言い換えると、与えた情報を元にAIが回答を生成するので、より正しい(データソースに沿った)情報が返ってくるということです！

## 早速チャットbotを作ってみよう

基礎知識はこのくらいで、本当に簡単に作成できるので、作成していきましょう！
前項でも述べましたが、RAGを利用してチャットbotを作っていきます！

### 基盤モデルの利用

Bedrockでチャットbotを作る前に、基盤モデルを利用できる状態にしておく必要があります。これは、回答を生成するのに必要です。

1. Bedrockを開き、左上のハンバーガーメニューをクリックしてモデルアクセスを選択
![bedrock-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/489b0ad5-9f54-b8d4-9d30-bfec20e43347.png)

1. モデルアクセスを選択
![bedrock-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/09bcd148-bca2-ca2e-6029-796dfba3ee22.png)

1. リクエスト可能になっていることを確認します
![model-access-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/7cd29e9e-aa5d-cba2-75ef-9df8ccf10f69.png)

1. "Enable all models"を選択します
![model-access-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/465dd688-26d9-41d3-6219-84ef8523a530.png)

1. アクセスしたいモデルを選択し"Next"を押下
![model-access-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/9912cea2-0bd2-bfc7-c259-7b76d0958256.png)

1. "Submit"を押して申請
![model-access-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/d8032c4e-2647-e1da-c7ad-823daab0e50f.png)

これで基盤モデルが利用できるようになりました！
AIの回答精度が向上するように、データを用意しましょう。今回は、S3にデータを保存してAIモデルが参照できるように設定します。

### 学習データをS3にアップロード

1. 「バケットを作成」をクリック
![s3-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/8324cebb-c791-5afb-8a0e-9b9018433879.png)

1. バケット名を設定
![s3-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/637d9ad7-928a-0abd-bc1b-0d72e5f09984.png)
好きな名前を設定できますが、設定した名前を覚えていくと後々楽になります！

1. AIが回答を参照する際に使えるファイルをアップロードしてください
![s3-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/d232748f-0b15-02b3-1e23-3d64cac94ce6.png)
ここではpdfをアップロードしていますが、その他にもテキストファイルやパワーポイントの情報を参照することも[可能なよう](https://docs.aws.amazon.com/bedrock/latest/userguide/knowledge-base-ds.html)です！

### Knowledge Baseの作成

Bedrockでは、"Knowledge Base"というツールを使用することにより外部情報の参照が可能になります。
先ほどのS3を連携するだけで使えるので、やってみましょう！

1. Bedrockの「ナレッジベース」を選択
![knowledge-base-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/c74dbaf2-f796-9ddf-5e15-7663ac35e932.png)

1. 「ナレッジベースを作成」を選択
![knowledge-base-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/8e33c5fd-93f5-0db6-790a-4696cfccf071.png)

1. ナレッジベース名を入力
![knowledge-base-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/953f52e7-894f-4492-9cf2-c68ea86c2ff7.png)
名前はなんでもいいですが、覚えやすいものを設定すると⭕️です。

1. データソースはS3を選択して、「次へ」を押下
![knowledge-base-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/d04e18c9-5802-8611-a47a-e85cc709258a.png)

1. 「S3」を参照を選択
![knowledge-base-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/16b15f77-4dfc-f1b5-0356-8ed1a675226e.png)

1. 前項でデータを格納したS3を選択
![knowledge-base-7-datasource-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/37b210b9-9858-04d1-1ed4-a21951e7ae6b.png)

1. 「次へ」を押下
![knowledge-base-9-datasource-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/21eccddd-b01b-e77b-7be7-e4cb4cff831e.png)
これでS3との連携は完了。あとはBedrockがやってくれます。簡単ですね！

1. 埋め込みモデル・ベクトルストアに関しては、そのままの内容で設定
![knowledge-base-9-embedding-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/21fd5269-120a-ea93-4342-75580712eef0.png)

1. 最後に「ナレッジベースを作成」を押下
![knowledge-base-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/2f1ce0f5-bd33-d0fe-c6fb-e7cc4704b628.png)

これでKnowledge Baseが作成できました！

### 作成したKnowledge Baseを読み込ませる

最後に使用したKnowledge Baseを同期して設定は90％完了です！

1. データソース欄から先ほど作成したKnowledge Baseを選択し「同期」を押下
![knowledge-sync-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/5464ebd2-e4ee-bbd3-d81f-bd79d8048ab7.png)

1. 「最終同期」に日付が入ったら成功です！
![knowledge-sync-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/9003755f-d87d-fb8e-f0ea-723fd80c51f6.png)

なんと、これだけで設定は完了です。
本当にS3にアップロードした情報を元に回答を生成してくれるのでしょうか？
試してみましょう！

### 実際に質問してみよう！

1. 右のチャット画面から「モデルを選択」を押下
![model-selection-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/2e1ff318-005f-5564-222e-7c7263b7eee5.png)

1. 使いたいモデルを選択し、「適用」を押下
![model-selection-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/9a6f9856-411c-bc13-c03a-bf913e08550f.png)

これで利用できるようになりました！このデモでは、Claudeを基盤モデルとして使用します。
各モデルで回答がどのように異なるのか、試してみるのも面白いかもしれません。

私は、下記のようなテキストファイルをアップロードしてみました。
ちゃんと内容に沿った回答をしてくれるでしょうか？

```plaintext
name: Fire TV S-ck 第 3 世代 | HD 対応スタンダードモデル |ストリーミングメディアプレ イヤー【2020 年発売】
descrip-on:
人気の Fire TV S-ck が第 2 世代のモデルよりも 50%パワフルになりました。フル HD の 動画をすばやくストリーミングでき、HDR、Dolby Atmos にも対応しています。(対応す るコンテンツや機器が必要です)
付属のリモコンでは Alexa に話しかけて音声でコンテンツを検索・再生操作できます。 お気に入りのコンテンツに簡単にアクセスできるアプリボタンと番組表ボタンが追加さ れました。対応するテレビ・サウンドバーの電源、ボリュームもコントロールできま す。
Prime Video、YouTube、NeIlix、TVer、U-NEXT、DAZN、Disney+、FOD、Apple TV+などの 豊富な映画やビデオを大画面で楽しめる。Silk Browser により Facebook、TwiSer など 様々なウェブサイトにもアクセス可能。
さらにプライム会員なら、Prime Video の会員特典対象の作品が追加料金なしで見放 題。映画、ドラマ、アニメ、お笑い・バラエティ番組など充実のコンテンツ。また、 Amazon Music Prime で 1 億曲がシャッフル再生で聴き放題。
Prime Video チャンネル、ABEMA、Hulu、DAZN、Redbull TV などのニュース、スポーツ、 バラエティ、ドラマ、将棋など様々なジャンルのライブ配信コンテンツが見られます。 Amazon Music、Spo-fy などからお好みの曲をストリーミング再生します。*サービスの 利用には別途登録・契約や料金が必要な場合があります。 簡単セットアップ。お持ちのテレビの HDMI 端子に挿して wifi につなぐだけ。

（一部抜粋）
```

![result-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/2cf0ead4-a0d9-7edf-51a8-6919d823ddb1.png)

fireTVについて質問してみました。きちんと回答が返ってきていますね！
ソースの詳細を教えてくれるのもいいですね。

![result-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3790952/996a9ea2-8bf2-54db-79fa-fcac2cae1661.png)

細かいサービスの特長も回答してくれました。すごい！


### ほかに何ができるのか

今回はfireTVに関する情報を渡しましたが、渡す情報を工夫すれば可能性が広がります。
例えば、社内ドキュメント・マニュアルなどをS3に保存してKnowledge Baseを作成。その情報を元に、社内チャットbotなどを作ることができます。

アイデア次第で、チャットbotを作れるなんてすごい時代になりました。

また、イベントに参加したら共有記事を書いていきます！