リッチテキスト機能を有効にすると、大規模言語モデル (LLM) からの回答に、プレーンテキストだけでなく、ソースドキュメントから抽出された画像、テーブル、コードブロックを含めることができます。
仕組み
インデックス作成中、RAG パイプラインは各ドキュメントからリッチテキスト要素 (画像、テーブル、コード) を抽出し、対応するテキストチャンクと共にリッチテキストタグとして保存します。SearchKnowledge API を介してクエリが送信されると、次のようになります:
-
Open Search は、埋め込まれたリッチテキストタグを含む関連チャンクを取得します。
-
LLM は取得したチャンクを使用して回答を生成します。リッチテキストタグは回答内で保持されます。
-
設定した
rich_text_strategyの値に応じて、Open Search はタグをインライン (Markdown) でレンダリングするか、アプリがレンダリングできるように未加工のコンテンツを別途返します。
リッチテキスト機能の有効化
[Q&A テスト] ページの [その他のパラメーター] タブで rich_text_strategy パラメーターを設定します。リッチテキストを無効にするには、このフィールドを空白のままにします。
rich_text_strategy ドロップダウンリストには、inside_response (リッチテキストコンテンツをレスポンスボディにインラインで埋め込む) と extend_response (リッチテキストコンテンツを拡張として返す) の 2 つのオプションがあります。
レスポンスのdata配列には、"type": "IMAGE"のアイテムが含まれる場合があります。これらは取得フェーズからの画像結果であり、リッチテキスト機能からの出力ではありません。リッチテキスト機能によって生成された画像はdata.answer(inside_responseの場合) またはdata.rich_text_ref(extend_responseの場合) に表示され、取得フェーズの画像よりもコンテキストの関連性が高くなります。
ストラテジーの選択
rich_text_strategy パラメーターは 2 つの値を受け入れます。アプリがコンテンツをどのようにレンダリングするかに基づいて選択してください:
| ストラテジー | レスポンス形式 | リッチテキストの配信 | 最適な用途 |
|---|---|---|---|
inside_response |
Markdown | data.answer |
Markdown をネイティブにレンダリングするアプリ |
extend_response |
プレーンテキスト | data.rich_text_ref |
カスタムレンダリングロジックを持つアプリ |
パラメーターの設定
SearchKnowledge API リクエストの options.chat オブジェクトに rich_text_strategy を追加します:
{
"question": {
"text": "How do I configure a sensitive data identification rule?",
"type": "TEXT"
},
"options": {
"chat": {
"rich_text_strategy": "inside_response"
}
}
}
API パラメーターリファレンス
このパラメーターは SearchKnowledge API オペレーションに属します。
| パラメーター | タイプ | 必須 | 説明 |
|---|---|---|---|
options.chat.rich_text_strategy |
String | いいえ | リッチテキスト処理ストラテジー。存在しないか空白の場合、リッチテキストは無効になり、デフォルトの処理メソッドが使用されます。有効な値:inside_response、extend_response。 |
レスポンスの解析
inside_response
data.answer を Markdown として解析します。リッチテキストタグはインラインで解決されます。テーブルは Markdown 内に HTML として表示されます。rich_text_ref フィールドは無視してください。
extend_response
data.answer をプレーンテキストとして解析します。回答には [^<id>^] 形式のリッチテキストプレースホルダーが含まれています。data.rich_text_ref 配列で各プレースホルダー ID を検索し、対応するコンテンツに置き換えます。