[AWS]Bedrock RAGのプロンプトテンプレート

AI

Bedrock RAGのプロンプトテンプレートは、検索した情報(コンテキスト)とユーザーの質問を組み合わせて、最終的にLLM(大規模言語モデル)へ渡す指示書を動的に生成するための設計図です。このテンプレート内で利用できる専用のプレースホルダー(パラメータ)は以下の3つです。

プロンプトテンプレートで設定可能なプレースホルダー(パラメータ)一覧

1. $query$

内容ユーザーが入力した元の質問(クエリ)そのもの。
詳細な解説このプレースホルダーは、RAGプロセスが受け取ったユーザーからの未加工の質問文字列に置き換えられます。LLMがユーザーの本来の意図を正確に理解し、検索結果($chunks$)をその質問に沿って解釈・要約するために不可欠な、最も基本的なパラメータです。

2. $chunks$

内容ナレッジベースから検索・取得されたドキュメントのチャンク(断片)のテキストコンテンツを、単純に連結した文字列。
詳細な解説これがRAGの中核となる「検索されたコンテキスト」です。API呼び出し時に指定したnumberOfResultsの数だけ取得されたチャンクの本文が、一つの大きなテキストブロックとしてここに挿入されます。最もシンプルで一般的な使い方ですが、どのチャンクから来た情報なのか、メタデータは何か、といった詳細な情報は含まれません。

3. $search_results$

内容検索結果に関するより詳細な構造化データ(JSON形式)。各チャンクの内容、メタデータ、関連度スコアが含まれます。
詳細な解説こちらはより高度なプロンプトエンジニアリングを可能にするためのパラメータです。各検索結果が独立したオブジェクトとして扱われ、以下の情報を含んでいます。\<br>・contentText: チャンクのテキスト内容($chunks$の一部と同じ)。\<br>・metadata: ドキュメント作成時に付与したメタデータ(例:{"source": "manual-A.pdf", "page": 5})。\<br>・score: ユーザーの質問との関連性を示すスコア(通常0.0〜1.0)。\<br>\<br>これを利用することで、「スコアが高い情報を優先して回答を生成する」「回答と同時に、どの資料(メタデータ)から引用したかを明記する」といった、より高度で信頼性の高い応答を生成させることが可能になります。

テンプレートの具体例

例1:シンプルなテンプレート ($chunks$を使用)

最も一般的で基本的な使い方です。

<instructions>
あなたは優秀なアシスタントです。
提供された以下の「コンテキスト情報」のみを厳密に参照し、「ユーザーの質問」に回答してください。
コンテキスト情報に答えが見つからない場合は、憶測で答えず、「分かりません」と回答してください。
</instructions>

<context>
$chunks$
</context>

<user_question>
$query$
</user_question>

例2:高度なテンプレート ($search_results$を使用し、出典を明記させる)

より信頼性の高い、出典付きの回答を生成させたい場合に使います。

<instructions>
あなたは正確性を重視するリサーチャーです。
提供された以下の「検索結果リスト」を元に、「ユーザーの質問」に回答してください。
回答を生成する際は、どの検索結果の情報を利用したか、必ずその情報の出典(sourceメタデータ)を文末にの形式で明記してください。
複数の情報を参考にした場合は、のように記述してください。
スコア(score)が低い情報は参考程度とし、主にスコアが高い情報を優先して回答を構成してください。
</instructions>

<search_results>
$search_results$
</search_results>

<user_question>
$query$
</user_question>

まとめ

プレースホルダー格納される内容主な用途
$query$ユーザーの質問文字列LLMにユーザーの意図を伝える
$chunks$検索されたチャンクのテキスト(連結文字列)シンプルなRAGのコンテキストとして利用
$search_results$検索結果の構造化データ(テキスト、メタデータ、スコア)出典の明記やスコアに応じた回答生成など、高度なRAGで利用

これらのプレースホルダーをプロンプトテンプレートに組み込むことで、Amazon Bedrock RAGの性能と品質を要件に合わせて細かくチューニングすることが可能です。

コメント

タイトルとURLをコピーしました