AWS Certified Generative AI Developer - Professional 資格対策コース

ハルシネーション低減と contextual grounding

生田 陸人
LuaGate エンジニア / 現役エンジニア
編集 LuaGate編集部

このレッスンで学ぶこと 対応試験ドメイン 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 BasesAmazon Kendra(検索エンジンであり RAG パイプラインそのものではない)
回答が出典に裏付けられているか自動検査Bedrock Guardrails contextual groundingKnowledge 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)