AWS Certified Generative AI Developer - Professional 資格対策コース
ハルシネーション低減と contextual grounding
このレッスンで学ぶこと 対応試験ドメイン D3 タスク 3.1.3(ハルシネーションの低減)。Amazon Bedrock Knowledge Bases による根拠付与、Bedrock Guardrails の contextual grounding、JSON Schema による出力検証を組み合わせ、事実無根の生成を抑える設計判断を身につけます。
解説
ハルシネーションとは、モデルが出典に基づかない、もっともらしいが誤った内容を生成することです。AWS では複数の機能を層状に組み合わせて低減します。「プロンプトを工夫する」だけでなく、AWS のどの機能で根拠を与え、検証するかが試験の焦点です。
1. 根拠を与える(RAG / Knowledge Bases)
最も効果的なのは、モデルに信頼できる出典を渡してその範囲で答えさせることです。Amazon Bedrock Knowledge Bases は、社内ドキュメントを取り込み・チャンク化・埋め込み・検索し、取得した文脈をプロンプトに自動注入する RAG をマネージドで提供します。回答には引用(citation)が付くため、どの出典に基づいたかを追跡できます。
2. 根拠との整合をチェックする(contextual grounding)
RAG で文脈を渡しても、モデルが文脈を逸脱して答えることはあります。これを検出するのが Amazon Bedrock Guardrails の contextual grounding チェックです。次の 2 軸でスコアリングし、しきい値を下回る回答をブロックまたは介入します。
| 軸 | 何を見るか |
|---|---|
| グラウンディング | 回答が与えた出典(source)に裏付けられているか |
| 関連性 | 回答がユーザーの質問(query)に答えているか |
しきい値を上げるほど厳格になり、出典外の主張を強く弾けます。
3. 構造化出力を検証する(JSON Schema)
回答を機械処理する場合、形式の逸脱もハルシネーションの一種です。Converse API のツール定義(tool use)に JSON Schema を渡し、モデルにスキーマ準拠の構造化出力をさせ、受信後にアプリ側でも検証します。スキーマに合わない出力は再生成や拒否に回します。
Python
import boto3
client = boto3.client("bedrock-runtime", region_name="us-east-1")
resp = client.converse(
modelId="anthropic.claude-3-5-sonnet-20241022-v2:0",
messages=[{"role": "user", "content": [{"text": "注文情報を抽出して"}]}],
toolConfig={
"tools": [{
"toolSpec": {
"name": "extract_order",
"inputSchema": {"json": {
"type": "object",
"properties": {"order_id": {"type": "string"}},
"required": ["order_id"],
}},
}
}],
},
)
# スキーマ準拠の構造化出力を強制し、受信後にアプリ側でも JSON Schema 検証するこれらは排他ではなく層です。出典を与え(KB)、整合を測り(contextual grounding)、形式を固める(JSON Schema)。
試験で問われるポイント
- ハルシネーション低減の第一手は Knowledge Bases による RAG(根拠付与)。「より大きいモデルに替える」「Temperature を 0 にする」は本質的な根拠付与にならず、ひっかけになりやすい
- contextual grounding は Guardrails の機能であって Knowledge Bases の機能ではない、という切り分けが問われる。RAG で文脈を渡す(KB)と、その文脈との整合を検査する(Guardrails contextual grounding)は別レイヤー
- Amazon Bedrock Knowledge Bases と Amazon Kendra は似て非なるもの。KB は RAG パイプライン(取り込み・埋め込み・検索・文脈注入・引用)をマネージドに提供。Kendra はエンタープライズ検索エンジンで、検索結果を RAG のソースに使えるが、それ自体が生成 AI の根拠付与パイプラインではない
- 構造化出力の逸脱対策は JSON Schema による検証。プロンプトで「JSON で返して」と頼むだけより、スキーマ強制と受信後検証の二段が確実
- 試験で問われるのは AWS のどの機能でハルシネーションを抑えるかであり、プロンプト技法そのものの優劣ではない
サービスの使い分け早見表
| やりたいこと | 使うもの | 混同しやすいもの |
|---|---|---|
| 信頼できる出典を渡して根拠付き回答(RAG) | Amazon Bedrock Knowledge Bases | Amazon Kendra(検索エンジンであり RAG パイプラインそのものではない) |
| 回答が出典に裏付けられているか自動検査 | Bedrock Guardrails contextual grounding | Knowledge Bases の引用(出典提示はするが整合スコアの遮断はしない) |
| 出力形式の逸脱を防ぐ | JSON Schema(tool use)+ 受信後検証 | プロンプトで「JSON で」と頼むだけ(保証が弱い) |
まとめ
ハルシネーション低減は単一機能ではなく層で組みます。Amazon Bedrock Knowledge Bases で出典を与え、Guardrails の contextual grounding で出典との整合を検査し、JSON Schema で構造化出力を検証するのが王道です。contextual grounding が Guardrails の機能である点、KB と Kendra の違いが頻出論点です。
次のステップ
次のクイズレッスンで、本番形式のシナリオ問題に挑戦してハルシネーション低減の判断力を確認しましょう。
関連レッスン
- Bedrock Guardrails で入出力を安全化(pro-guardrails-io)
- プロンプトインジェクション・ジェイルブレイク検出(pro-threat-detection)
- ベクトルストア設計とメタデータ・同期(pro-vector-store-design)