1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け手順書】Knowledge Base for Amazon Bedrock × Pinecone で格安RAG構築🚀

Last updated at Posted at 2024-04-07

作業内容

・AWS マネジメントコンソール上で Knowledge Base を作成
・Vector Database である Pinecone の準備
・自分の好きなファイルを S3 にアップロードし、コンソール上でテスト

初心者向けとして細かめにまとめたつもりです🔰
※ アップデートの多いサービスですので、手順に若干の違いがありましたらすみません

そもそも Knowledge Base for Amazon Bedrock とは?

Knowledge Base を使用すると、Amazon Bedrock 内から FM をデータソースに接続して検索拡張生成(RAG)を簡単に構築することができます。

※ RAG とは LLM が外部の DB から情報を取得し回答する仕組みで、これにより企業独自の情報に基づいた回答ができたり、ハルシネーション(生成AIが事実とは異なる内容の生成してしまう現象)を防いだりすることができます。

AWS 公式ブログ
https://aws.amazon.com/jp/what-is/retrieval-augmented-generation/

Bedrock で RAG を構築する方法として Amazon Kendra を使う方法もありますが、
Knowledge Base で実装すると
☑️ コード不要(AWS マネージド)で簡単に実現できるので、開発期間の短縮が可能
☑️ モデルを継続的にトレーニングする必要がないので、費用対効果が良い
といったメリットがあるので、Knowledge Base を活用することにしました。

RAG のフロー処理を一から開発しないでできる(設定はあってもコンソールポチポチ程度)ので、開発の負担がかなり軽減されますね🥳

さらに今回は、Vector Store として Pinecone というものを使います。
無料(クレカ登録も無し)で利用できるので、こちらと組み合わせることで気軽に始めることができます

前提

・AWS アカウントを持っていて、IAM ユーザーでサインインできる状態
・Amazon Bedrock にて以下のモデルが有効になっている状態
 ※ 有効化できていない場合はこちらの手順に従って有効化してください

・Claude
・Titan Embeddings G1 - Text

手順

Pinecone の準備

以下のサイトからアカウントを作成し、ログインした状態にします。

クレカ登録なしの無料(Starter)プランで利用します。
1つのプロジェクトしか作成できない等の制約はありますが、今回は無料プランで充分です👍🏻

Indexを新規作成します。
Screenshot 2024-03-29 at 20.41.17.png

・index名は適当に Chatbot/bedrock-test とします
・Dimensions は 1536 を指定(後ほど Bedrock で使用することになる Amazon Titan Embeddings G1 - Text v1.2 の Dimensions が 1536 であるため)
・Metric は cosine を選択
・「Starter」プランが選択されていることを確認

その他はデフォルトのまま Index を作成します。
以下の2つは、Bedrock 側で使用するので確認しておきます。

・Index の「HOST」(https://bedrock-test〜)
・API KEYS の「Value」

Screenshot 2024-03-29 at 20.40.00.png

API KEY を AWS Secrets Manager に保存

AWS マネジメントコンソールにサインインします。
※ 必ず「バージニア北部」リージョンになっていることを確認

AWS Secrets Manager に移動し、「新しいシークレットを保存する」から
・「その他のシークレットのタイプ」を選択
・キーは apiKey、値は先ほどの pinocone の API KEYS の「Value」
・シークレットの名前は好きなものにします。

Screenshot 2024-03-29 at 22.25.22.png

↑ キーは apiKeyです。apikeyなど大文字小文字を間違えるとうまくいかないです。

S3 バケットを作成

※ バージニア北部リージョンにて作業
S3 に移動し、デフォルトの設定で Bedrock 用の S3 バケットを作成します(手順略)。

Knowledge base の作成

※ バージニア北部リージョンにて作業
Amazon Bedrock に移動し、コンソールからナレッジベースを作成していきます。

Screenshot 2024-03-29 at 20.48.01.png

ステップ 1 : ナレッジベースの詳細を入力

・ナレッジベース名:好きな名前を入力
・IAM ロール:新規作成

Screenshot 2024-03-29 at 20.55.57.png
「次へ」をクリック

ステップ 2 : データソースを設定

・データソース名:デフォルト
・S3 URI:先ほど作成したバケットを指定

Screenshot 2024-03-29 at 21.00.13.png
「次へ」をクリック

ステップ 3 : 埋め込みモデルを選択し、ベクトルストアを設定する

・Embeddings Model: Amazon Titan Embeddings G1 - Text v1.2 を選択
・ベクトルデータベース: Pinecone を選択

Screenshot 2024-03-29 at 21.04.10.png

・エンドポイント URL:pinecone の Index > HOST > URL を入力
・認証情報シークレット ARN:先ほど作成した AWS Secrets Manager のシークレットの ARN を入力(arn:aws:secretsmanager:us-east-1:XXXX〜)
・テキストフィールド: text
・Bedrock マネージドメタデータフィールド:metadata を入力

「次へ」をクリック

ステップ 4 : 確認して作成

これでナレッジベースが作成されます。

好きなファイルを S3 にアップロード&ナレッジベースと同期

ナレッジベースで指定した S3 バケットに Vector 化したいデータをアップロードします。好きなデータでいいですが、今回は BlackBelt の S3 の資料を使ってみます。

※ ナレッジベースのデータソースとしてサポートされているファイル形式には制限があるので、こちらを参考にしてください。

S3 にデータをアップロードしたら、ナレッジベース内のデータソースの「同期」ボタンをクリックします。

Screenshot 2024-03-29 at 22.44.46.png

アップロードしたデータ量によっては時間がかかるかもしれません。
ステータスが Ready になったら準備完了です。

Pinecone を確認

Pinecone に反映されているか確認します。

Screenshot 2024-03-29 at 22.50.35.png

先ほどアップロードしたデータが Vector されていることが確認できました!

ナレッジベースをテスト

作成したナレッジベースをコンソール上でテストしてみます。
モデルは Anthropic の Claude v2 を選択し、適用します。

Screenshot 2024-03-29 at 23.20.21.png

正確な回答が返ってきました!🎉
今回は少しのデータしか同期していませんが、もっと増やせば会話内容がより豊富になりでそうですね。

Screenshot 2024-03-30 at 23.02.07.png

まとめ

生成AI の開発というとお金と時間がかかるイメージでしたが、コンソール上でこんなに簡単に RAG が構築できるなんて驚きました!
Bedeock の中でも最近特にアップデートの多いナレッジベース、これからも注目です👀
既に新機能が出ているので、どんどん試していきたいと思います!

続編として、今回作成したナレッジベースと LINE Messaging API を連携させて、LINE 上でこのチャットができるようにしていきます(準備中🌱)

最後までお読みいただきありがとうございました!
※必要に応じて、リソースの削除も忘れずに!※

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?