Amazon Web Services ブログ

Amazon Nova Web Grounding を使用したより正確な AI アプリケーションの構築

複雑なデータ取得システムを開発する手間をかけることなく、正確かつ最新の情報を提供する AI アプリケーションを構築することを想像してみてください。10 月 28 日は、Amazon Bedrock の Nova モデル向けの新しい組み込みツールである Web Grounding の一般提供が開始されたことを皆さんにお知らせします。

Web Grounding は、ターンキー検索拡張生成 (RAG) オプションを開発者に提供します。このオプションは、Amazon Nova 基盤モデルがプロンプトの内容に基づいて関連する最新情報をいつ取得して組み込むのかをインテリジェントに判断できるようにします。これは、ハルシネーションの削減と精度の向上を目的とするもので、引用されたパブリックソースをコンテキストとして組み込むことでモデル出力をグラウンディングするために役立ちます。

開発者が Web Grounding を使うべき状況

開発者は、最新の事実情報にアクセスする必要があるアプリケーションや、十分な引用が行われた応答を提供する必要があるアプリケーションを構築するときに Web Grounding の使用を検討すべきです。この機能は特に、製品やサービスに関する最新情報を提供する知識ベースのチャットアシスタントや、事実確認やソース検証が必要になるコンテンツ生成ツールといったさまざまなアプリケーションで真価を発揮します。また、複数の最新ソースからの情報を合成する必要があるリサーチアシスタントや、精度と検証可能性が極めて重要なカスタマーサポートアプリケーションにも最適です。

Web Grounding は、AI アプリケーションのハルシネーションを低減する必要があるときや、ユースケースで透明性のあるソース属性が必要になるときに特に便利です。Web Grounding は情報の取得と統合を自動的に処理するため、複雑な RAG 実装の管理ではなく、アプリケーションの構築に集中したい開発者のための効率的なソリューションです。

使用の開始
Web Grounding は、推論時における情報の取得と処理を実行するために、サポートされている Amazon Nova モデルとシームレスに統合します。これは、複雑な RAG パイプラインを構築して維持する必要をなくすとともに、情報の取得元を実証するソース属性も提供します。

Web Grounding を有効にした状態で、Python を使用して Amazon Bedrock Converse API を呼び出す Nova Premier に質問する例を見てみましょう。

まず、通常の方法で AWS SDK for Python (Boto3) を使用して Amazon Bedrock クライアントを作成しました。これには、グッドプラクティスとしてセッションを使用しています。セッションは、設定をグループ化して再利用可能にするために役立ちます。次に、BedrockRuntimeClient を作成します。

try:
    session = boto3.Session(region_name='us-east-1')
    client = session.client(
        'bedrock-runtime')

それから、Amazon Bedrock Converse API ペイロードを準備します。ここでは、「role」パラメータが「user」(AI 生成応答の場合は「assistant」になります) に設定されており、メッセージがアプリケーションのユーザーからのものであることを示しています。

このデモでは、「現在の AWS リージョンとそれらの場所を教えてください」という質問を選びました。 この質問は、応答に最新の情報が必要になることから意図的に選択しました。これは、Amazon Nova が最新の知識が必要であると判断したときにどのように Web Grounding を使用して検索を自動的に呼び出すのかを実証するために役立ちます。

# Prepare the conversation in the format expected by Bedrock
question = "What are the current AWS regions and their locations?"
conversation = [
   {
     "role": "user",  # Indicates this message is from the user
     "content": [{"text": question}],  # The actual question text
      }
    ]

まず、Web Grounding を使用しなかった場合の出力を見てみましょう。Amazon Bedrock Converse API を呼び出します。

# Make the API call to Bedrock 
model_id = "us.amazon.nova-premier-v1:0" 
response = client.converse( 
    modelId=model_id, # Which AI model to use 
    messages=conversation, # The conversation history (just our question in this case) 
    )
print(response['output']['message']['content'][0]['text'])

現在のすべての AWS リージョンとそれらの場所のリストが返されます。

今度は、Web Grounding を使ってみましょう。Amazon Bedrock Converse API に同じような呼び出しを行いますが、今回はモデルが利用できるツールの 1 つとして nova_grounding を宣言しています。

model_id = "us.amazon.nova-premier-v1:0" 
response = client.converse( 
    modelId=model_id,
    messages=conversation,
    toolConfig= {
          "tools":[ 
              {
                "systemTool": {
                   "name": "nova_grounding" # Enables the model to search real-time information
                 }
              }
          ]
     }
)

応答の処理後、モデルが Web Grounding を使用して最新情報にアクセスしたことを確認できます。出力には、思考過程を辿り、外部ソースを自動的にクエリした箇所を確認するために使用できる推論トレースが含まれています。これらの外部コールからの応答の内容は [HIDDEN] として表示されています。これは、AI システムにおける標準的な慣行で、機密情報を保護するとともに、出力サイズの管理にも役立ちます。

さらに、出力には Web Grounding がクエリしたソースに関する情報が含まれた CitationsContent オブジェクトもあります。

最後に AWS リージョンのリストを確認でき、「これらは世界中の最新かつアクティブな AWS リージョンです」というメッセージで終わっています。

Web Grounding は、最小限の労力で AI アプリケーションの信頼性と最新性を向上させることにおける大きな進歩です。正確かつ最新の情報を提供する必要があるカスタマーサービスチャットアシスタントを構築している、複数ソースからの情報を分析して合成するリサーチアプリケーションを開発している、または目的地や宿泊施設に関する最新の詳細情報を提供する旅行アプリケーションを作成しているかに関わらず、Web Grounding は、簡単に設定して使用できる便利なターンキーソリューションで、より正確で関連性の高い応答をユーザーに提供できるようにしてくれます。

知っておくべきこと
Amazon Nova Web Grounding は、10 月 28 日から米国東部 (バージニア北部) でご利用いただけます。Web Grounding は、米国東部 (オハイオ) と米国西部 (オレゴン) でも近日リリース予定です。

Web Grounding には追加料金が発生します。詳細については、Amazon Bedrock の料金ページをご覧ください。

現在、Web Grounding を使用できるのは Nova Premier のみですが、他の Nova モデルのサポートも近々追加される予定です。

Amazon Nova を使用したことがない場合や、さらに深く掘り下げたいとお考えの場合は、自分のペースで進めることができるこちらのオンラインワークショップをお試しください。このワークショップでは、テキスト、画像、動画の処理のために Amazon Nova 基盤モデルと関連特徴量を効率的に使用する方法を実践的な演習を通じて学ぶことができます。

Matheus Guimaraes | @codingmatheus

原文はこちらです。