LoginSignup
12
6

BedrockのナレッジベースがClaude 3 Sonnetに対応!

Last updated at Posted at 2024-03-26

3/27追記:ようやく本家What's Newも僕らに追いついて来たようです😆

ついにSonnetにも対応!

まだAWS公式のアナウンスはありませんが、ドキュメントが更新されているのがいち早く発見されました。

ひるたさん、いつも発見が早い!

現状、3つあるモデルのうちSonnetだけですが、既にBedrockにリリースされているHaikuモデルへの対応も時間の問題だと思われます。

また、エージェント for Amazon BedrockもじきにClaude 3対応されることが予想されます。

何が嬉しいの?

ナレッジベースとは、いわゆる「社内文書検索AIチャット」などを実現できるRAGアーキテクチャをAmazon Bedrockで簡単に作成できる機能です。

先日、BedrockのメインLLMと言えるAnthropic社のClaudeモデル最新版 v3がリリースされていましたが、ナレッジベースへの対応はまだでした。

ナレッジベースには2種類のAPIメソッドがある

お気づきの方もいるかもですが、ナレッジベース自体にClaude 3が未対応のときでもRAG回答生成にClaude 3を利用することは可能でした。なぜなら、ナレッジベースのAPIには2種類のメソッドがあるためです。

  • Retrieve:ドキュメントの検索結果のみを返す
  • RetrieveAndGenerate:ドキュメントの検索結果をもとに、LLMで生成した回答を返す

RetrieveAndGenerate には回答生成用のLLMをナレッジベースへ組み込む必要があるため、Claude 3の利用ができませんでした。

Retrieve を使えば、ナレッジベースの外(アプリケーションロジック内など)で自分の好きなLLMを組み合わせることができるため、Claude 3も利用可能だったというわけです。

実機確認(マネコン)

マネジメントコンソールを見ると、ナレッジベースのテスト画面にはまだSonnetが出現していませんでした。

スクリーンショット 2024-03-26 11.38.53.png

※人によってはすでに出現しているようです。

実機確認(API)

APIも確認してみます。Cloud9などを使って検証してみましょう。

まずはAWS SDK for Python (Boto3)のバージョンを最新化しておきます。

ターミナル
pip install -U boto3

Claude 3 Sonnetで RetrieveAndGenerate を試してみます。

RAG-Sonnet.py
# Python外部ライブラリをインポート
import boto3

# Bedrockクライアントを作成
kb = boto3.client("bedrock-agent-runtime")

# ナレッジベースを定義
response = kb.retrieve_and_generate(
    input={"text": "ECSとEKSの使い分けは?"},
    retrieveAndGenerateConfiguration={
        "type": 'KNOWLEDGE_BASE',
        "knowledgeBaseConfiguration": {
            "knowledgeBaseId": "XXXXXXXXXX", # ここにナレッジベースIDを記載する
            "modelArn": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0",
        },
    },
)

# RAG結果を画面に表示
print(response["output"]["text"])

AWS活用ナレッジ集を食わせたナレッジベースを用いて、RAGで簡単に回答生成することができました!(内容の是非についてはここでは言及しません😷)

ターミナル
minorun365:~/environment $ python3 RAG-Sonnet.py 
ECSとEKSの主な違いは以下の通りです:

- ECSはAWS独自のコンテナオーケストレーションサービスで、EKSはKubernetesをベースにしています。EKSの方が機能が豊富ですが、Kubernetesのバージョンアップ対応が必要になります。

- ECSはコントロールプレーンの管理が不要ですが、EKSではKubernetesのバージョンアップに合わせてコントロールプレーンの管理が必要です。

- データプレーンでは、ECSはEC2インスタンスの管理が必要ですが、Fargateを使えばサーバーレスで運用できます。EKSでもEC2インスタンスまたはFargateを選択できます。 使い分けとしては、以下のようなケースが考えられます:

- 既存のKubernetesスキルを活かしたい場合や、Kubernetesの豊富なエコシステムを活用したい場合はEKSを選択します。

- 単純なコンテナワークロードで、Kubernetesの複雑さを避けたい場合はECSを選択します。

- サーバーレスでコンテナを運用したい場合は、ECS+FargateまたはEKS+Fargate

おまけ:Retrieve単体で実行するコード例

以下のように実行すると、JSON形式でドキュメント検索結果のみが返却されます。

retrieve-Sonnet.py
# Python外部ライブラリをインポート
import boto3

# Bedrockクライアントを作成
kb = boto3.client("bedrock-agent-runtime")

# ナレッジベースを定義
response = kb.retrieve(
    knowledgeBaseId="XXXXXXXXXX", # ここにナレッジベースIDを記載する
    retrievalQuery={"text": "ECSとEKSの使い分けは?"}
)

# 取得結果を画面に表示
print(response)

12
6
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
12
6