[アップデート] Knowledge bases for Amazon Bedrockで「推論パラメーター」の設定が可能になりました

[アップデート] Knowledge bases for Amazon Bedrockで「推論パラメーター」の設定が可能になりました

Amazon Bedrockのナレッジベースで、また新たなアップデートがありました。
Clock Icon2024.05.18 10:30

みなさん、こんにちは!
福岡オフィスの青柳です。

Amazon BedrockでRAGを実現する機能である「Knowledge bases for Amazon Bedrock」で、新たなアップデートがありました。

Knowledge Bases for Amazon Bedrock now lets you configure inference parameters

今までは設定できなかった「推論パラメーター」が設定できるようになった (カスタマイズできるようになった) というアップデートです。

「推論パラメーター」とは?

生成AIの「モデル」(LLM) を呼び出す時に、細かな挙動を調整するために与えるパラメーターのことです。

Bedrockの「プレイグラウンド」画面で、右の方に表示されている赤枠の部分のことですね。

BedrockでLLMを単体で利用する場合 (チャットや画像生成など) には、このように推論パラメーターを設定できたのですが、ナレッジベースを利用する際には推論パラメーターが設定できませんでした。

これが「設定できるようになった」というのが、今回のアップデートです。

推論パラメーターの設定方法

マネジメントコンソール利用時

ナレッジベースの「テスト」画面でRAGを実行する時に、推論パラメーターの設定を行えます。

推論パラメーターは「回答を生成」を有効にした場合のみ設定できます。 推論パラメーターは「RAG」の「Retrieve」(ナレッジの検索) で使われるのではなく「Generate」(検索結果を基にした回答の生成) に適用されるパラメーターであるためです。

「ナレッジベースをテスト」画面で「回答を生成」を有効にして、使用するモデルを選択した後に、左側の「設定」ボタンをクリックします。 (モデルを選択する前だと「推論パラメーター」の設定が出てこないので注意してください)

すると、左側に「Inference parameters」(推論パラメーター) の設定項目が現れます。

以下のパラメーターを設定することができます。

  • 温度 (Temperature)
  • トップP (TopP)
  • 最大長 (トークンの最大長)
  • 停止シーケンス

各パラメーターの意味はAWS公式ドキュメントなどで確認してください。

Amazon Titan Text
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/model-parameters-titan-text.html

Anthropic Claude
https://docs.aws.amazon.com/ja_jp/bedrock/latest/userguide/model-parameters-anthropic-claude-messages.html

ここに挙がっているもの以外のパラメーター、例えば「TopK」などは、マネジメントコンソールでは設定することができません。

次に説明する「API/SDK」を使用してください。

API/SDK利用時

APIや各種SDKを使用する場合は、RetrieveAndGenerateAPIに新たに追加されたパラメーターを設定します。 (検索のみを行うRetreaveAPIでは設定できません)

knowledgeBaseConfigurationまたはexternalSourcesConfigurationgenerationConfigurationに追加された以下のパラメーターをセットします。

  • inferenceConfig
  • additionalModelRequestFields

inferenceConfigの設定は以下のようになります。
マネジメントコンソールで設定可能な4つの推論パラメーターが設定可能です。

"inferenceConfig": { 
    "textInferenceConfig": { 
        "temperature": number,
        "topP": number,
        "maxTokens": number,
        "stopSequences": [ "string" ],
    },
}

additionalModelRequestFieldsの設定は以下のようになります。
inferenceConfigに含まれない推論パラメーターは、ここで設定します。

"additionalModelRequestFields": { 
    "top_k": number,
    ...
}

AWS SDK for Python (boto3) を使用した場合のサンプルコードは以下のようになります。 (boto3のバージョンが1.34.102以降である必要があります)

import boto3

client = boto3.client("bedrock-agent-runtime", region_name="us-east-1")

response = client.retrieve_and_generate(
    input={
        "text": "S3とEFSの暗号化方式を比較してください。",
    },
    retrieveAndGenerateConfiguration={
        "type": "KNOWLEDGE_BASE",
        "knowledgeBaseConfiguration": {
            "knowledgeBaseId": "XXXXXXXXXX", 
            "modelArn": "arn:aws:bedrock:us-east-1::foundation-model/anthropic.claude-3-sonnet-20240229-v1:0",
            "generationConfiguration": {
                "inferenceConfig": { 
                    "textInferenceConfig": { 
                        "temperature": 0,
                        "topP": 1,
                        "maxTokens": 2048,
                        "stopSequences": [ "Observation" ],
                    },
                },
                "additionalModelRequestFields": { 
                    "top_k": 50,
                },
            },
        },
    },
)

print(response["output"]["text"])

おわりに

ナレッジベース利用時にも推論パラメーターが設定できるようになったことで、細かなチューニングなどが行えるようになったと思います。

ナレッジベースにおける「回答の生成」の実行時には、他にも以下のような設定を行うことができます。 (いずれも、Knowledge bases for Amazon BedrockのGA以降のアップデートにより、設定できるようになったものです)

設定項目 説明
プロンプトテンプレート Generate実行時に与えるプロンプトをカスタマイズする。
フィルター メタデータを利用したコンテンツのフィルタリングを行う。
詳しくはこちら
ガードレール 作成した「ガードレール」を適用する。
ガードレールについてはこちらを参照

これらの設定を行うことで、より「期待に沿った」回答を得ることができます。 是非みなさんも試してみてください。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.