ファウンデーションモデルの限界と克服戦略
基盤モデルが抱える根本的な課題を特定し、Google Cloud 推奨の対処法と継続的モニタリングを理解する
LLM(大規模言語モデル)はトレーニングデータのパターンを学習して出力を生成する。このアーキテクチャ上の特性から、生まれつき持つ構造的な弱点が存在する。 試験では「どの限界に対して、どの対処法が最適か」の組み合わせが問われる。
以下の5つのアプローチは目的に応じて単独または組み合わせて使用する。コスト・速度・精度のトレードオフを理解して最適な戦略を選ぶことが試験のポイント。
- 追加学習不要でモデルの動作を制御
- Few-shot / Chain-of-Thought 等の技法を活用
- ゼロコストで始められる最初のステップ
- 効果は中程度(モデル重みは変えない)
- 外部知識ベースにLLMを紐づける
- ハルシネーション・知識カットオフを解決
- 最新情報を常に反映できる
- Vertex AI Search / RAG API / Google Search
- 業界・ドメイン固有データで追加学習
- モデルの重みを更新し専門性を付与
- 高品質データが必要(通常 100〜数千件)
- SFT / RLHF / PEFT(LoRA/QLoRA)等の手法
- AIの判断に人間のレビューを挟む
- 高リスク判断(医療・法律)で必須
- ミス検知・フィードバックデータ収集
- 継続的なモデル改善サイクルの基盤
- Vertex AI Evaluation Service で自動評価
- ドリフト検知・KPI 継続計測
- 自動モデルアップグレード適用
- Vertex AI Feature Store で特徴量管理
- まずプロンプトエンジニアリングから試し、それで不十分なら RAG / ファインチューニングへ進む
- 最新情報が必要な場合は RAG / グラウンディングを選ぶ(ファインチューニングでは解決不可)
- 業界固有の言葉遣い・形式が必要な場合はファインチューニングが適切
- 医療・法律・金融などの高リスク判断では HITL を必ず組み込む
Gen AI モデルは一度デプロイして終わりではない。データドリフト・パフォーマンス低下・セキュリティ脆弱性に継続的に対応する必要がある。
- 本番デプロイ前にVertex AI Evaluation Serviceでベースラインスコアを記録し、定期比較する
- Vertex AI Feature Store でオンライン/オフライン特徴量を一元管理してスキューを防止する
- シャドーモード(Shadow Mode)で新モデルを旧モデルと並行実行し、安全にA/Bテストを実施する
- ドリフト検知アラートは Cloud Monitoring で設定し、閾値を超えたら自動でエンジニアに通知する
プロンプトエンジニアリング技術
LLM との効果的なコミュニケーション技法を体系的に理解する。Zero-shot から ReAct まで全手法を実例付きで解説
プロンプトエンジニアリングとは、LLM(大規模言語モデル)から望ましい出力を引き出すための入力文(プロンプト)を設計・最適化する技術。 モデルの重みを変えずに動作を制御できる最もコスト効率の高い改善手法。試験では各技法の名称・定義・適切なユースケースの識別が問われる。
(API料金のみ)
(再学習不要)
(試験出題範囲)
(FT比較)
事前の例示(デモンストレーション)を与えずに、タスクの指示文だけでLLMに回答させる。最もシンプルで、明確なタスクに有効。モデルが学習済みの知識だけで対応する。
Output: "今日は天気がいいですね。"
// 例示なし。モデルの事前知識だけで回答。
1つの入出力ペアを例として示してからタスクを依頼する。出力フォーマットを厳密に指定したい場合に特に有効。モデルがパターンを学習して同形式で応答する。
Input: "東京" → Output: "首都 / 日本 / 1380万人"
// タスク
Input: "大阪" → Output: ???
複数の入出力ペアを例として提供することで、モデルが期待されるパターンをより正確に把握できる。Few-shot は In-Context Learning(文脈内学習)の代表的な技法。
"この商品は最高!" → ポジティブ
"遅延が多くて困った" → ネガティブ
"普通の品質でした" → ニュートラル
// タスク
"梱包が丁寧で感動した" → ???
モデルに専門家・キャラクター・特定の視点を持つ人物として振る舞うよう指示する。役割を明確に設定することで、その専門分野に特化した質・スタイルの回答を引き出せる。
Role: "あなたは15年以上の経験を持つ上級セキュリティエンジニアです。"
"技術的な正確さを最優先し、平易な言葉で説明してください。"
// ユーザー入力
User: "ゼロトラストアーキテクチャを実装する際の注意点は?"
1つのプロンプトで解決できない複雑なタスクを、複数の小さなステップに分割して順番に実行する手法。前のステップの出力を次のステップの入力に使用する。
Prompt 1: "以下の長文を3行で要約してください:{raw_text}"
→ summary_text
// Step 2: 要約から課題を抽出
Prompt 2: "以下の要約から主要な課題を箇条書きで抽出:{summary_text}"
→ issues_list
// Step 3: 解決策を提案
Prompt 3: "以下の課題に対する解決策を提案:{issues_list}"
「ステップバイステップで考えてください(Let's think step by step)」という指示で、モデルが中間の推論ステップを明示的に記述しながら解答する手法。複雑な論理問題・数学・多段階推論で精度が大幅に向上する。
Prompt: "太郎は50個のリンゴを持っています。20個を花子に渡し、"
"残りの半分を次郎に渡しました。太郎に残るリンゴは何個?"
"ステップバイステップで考えてください。"
// モデルの出力例
Step 1: 50 - 20 = 30個(花子に渡した後)
Step 2: 30 ÷ 2 = 15個(次郎に渡した後)
Answer: 15個
Reason(推論)→ Act(ツール使用などの行動)→ Observe(結果観察)のサイクルを繰り返す。外部ツール(検索・計算・API等)を呼び出しながら問題を段階的に解決する、エージェント設計の核心技法。
Thought 1: GDPデータを調べる必要がある
Action 1: search("2024年 日本 GDP")
Obs 1: 日本GDP = 約4.2兆ドル
Thought 2: アメリカのGDPも調べる
Action 2: search("2024年 アメリカ GDP")
Obs 2: 米国GDP = 約27兆ドル
Thought 3: 計算する
Action 3: calculate(4.2 / 27)
Answer: 約0.155倍(約15.6%)
- 明確さ優先:「何を」「どのような形式で」「何文字程度で」生成するかを具体的に記述する
- コンテキストを提供:背景情報・制約条件・対象読者を明示することで出力品質が向上する
- ネガティブ指示:「〜してはいけない」という制約も書くと不適切な出力を防げる
- 出力フォーマット指定:「JSON形式で」「箇条書きで3点」などフォーマットを明示する
- 反復改善:プロンプトはイテレーション(試行錯誤)で最適化する。一発完成を期待しない
| 技法 | 難易度 | 主なユースケース | コスト(トークン) |
|---|---|---|---|
| Zero-shot | ★☆☆ | 翻訳・要約・分類(明確なタスク) | 最小 |
| One-shot | ★☆☆ | フォーマット指定・構造化出力 | 小 |
| Few-shot | ★★☆ | パターン学習・カスタム分類 | 中 |
| Role Prompting | ★★☆ | 専門家視点・特定スタイルの文章生成 | 中 |
| Prompt Chaining | ★★☆ | 多段階処理・ワークフロー自動化 | 中〜大 |
| Chain-of-Thought | ★★★ | 数学・論理推論・説明可能性向上 | 大 |
| ReAct | ★★★ | AIエージェント・外部ツール連携 | 最大 |
グラウンディング技術と RAG
LLM の回答を事実に基づかせる「グラウンディング」の概念・3種類のデータソース・Google Cloud の RAG オファリング・サンプリングパラメータを完全理解する
グラウンディングとは、LLM の生成する回答を、信頼できる外部データソースに「紐づける(錨をおろす)」技術。 モデルが「記憶から作り話をする」のではなく「参照した文書から回答する」ようにすることで、ハルシネーションを根本的に削減する。
- モデルの学習済みパラメータのみから生成
- ハルシネーションが頻繁に発生
- 知識カットオフ以降の情報を参照不可
- 企業固有の情報を回答できない
- 出典・根拠の引用が不可能
- 外部データソースを参照してから生成
- ハルシネーションを大幅に低減
- 最新情報・リアルタイムデータを反映
- 企業固有の社内文書を参照可能
- 引用元(ソース)を明示して信頼性向上
試験では「どのデータソースで、どのグラウンディング手法を使うか」の組み合わせが問われる。
特徴:機密性が高い。外部に出さずにGCP内で処理する必要がある。
推奨手法:Vertex AI Search(プリビルト RAG)または RAG API
特徴:ライセンス・著作権に注意が必要。定期更新が必要。
推奨手法:データパイプラインで取り込み後、Vertex AI Search に登録
特徴:最も新鮮。情報の信頼性はソースによって異なる。
推奨手法:Grounding with Google Search(リアルタイム Web 検索)
- 自社機密データ + セキュリティ重視 → Vertex AI Search(VPC 内処理)または RAG API
- 最新の世界情報 + 知識カットオフ解消 → Grounding with Google Search
- 両方が必要な企業アプリ → ハイブリッド(社内 Vertex AI Search + Google Search を組み合わせ)
RAG = 検索(Retrieval) + 拡張(Augmented) + 生成(Generation)。外部文書から関連情報を検索し、それをコンテキストに追加してLLMが生成する技術。
PDF・Word・Webページ・データベースなどの企業内ドキュメントを読み込む。テキストを適切なサイズの断片(チャンク)に分割する。チャンクサイズは大きすぎても小さすぎても精度に影響。
各チャンクをエンベディングモデル(text-embedding-004等)で数値ベクターに変換。意味的に近いテキストは近い位置のベクターになる。このベクターをベクターデータベースに格納する。
ユーザーの質問もエンベディングでベクター化。ベクターデータベースでコサイン類似度・内積などで最も関連するチャンクを上位N件取得(ベクター検索 + BM25の組み合わせもある)。
検索で取得したチャンクをコンテキストとしてプロンプトに追加し、LLMに渡す。LLMはモデルの知識だけでなく提供されたコンテキストを参照して回答を生成。ソース引用も可能になる。
RAG は「外部から情報を検索して補う」→最新情報対応・データを変えればすぐ反映。 ファインチューニングは「モデル自体を再学習させる」→特定ドメインへの深い適応・推論時コストゼロ。 多くの場合 RAG → FT の順で試すのが Google 推奨のアプローチ。
Google Cloud は難易度・制御度に応じた3段階の RAG ソリューションを提供。何を優先するかで選択肢が変わることが試験のポイント。
特徴:コード最少・最速でPoC可能・エンタープライズ品質
適用場面:社内ナレッジ検索・チャットボット・カスタマーサポートのFAQ回答
特徴:高度な制御・複数データソースの動的切り替え可能・専用エンドポイント
適用場面:特定のチャンキング戦略が必要な場合・カスタム再ランキングが必要な場合
特徴:リアルタイム・最新情報・知識カットオフを完全解消
適用場面:最新ニュース・株価・天気・時事情報が必要なアプリ
| 比較軸 | ① Vertex AI Search(プリビルト) | ② RAG API(カスタム) | ③ Grounding w/ Google Search |
|---|---|---|---|
| 実装難易度 | ★☆☆(最簡単) | ★★☆(中程度) | ★☆☆(最簡単) |
| 制御度 | 低(自動管理) | 高(各ステップ制御) | 低(Google管理) |
| データソース | 社内文書・DB | 任意(カスタム) | 公開 Web(リアルタイム) |
| 最新情報 | 登録次第(手動更新) | データ次第 | ◎(常時最新) |
| 適用場面 | 社内ナレッジ・PoC | 高精度・専門システム | 世界の最新情報が必要な場合 |
- まず試すなら → Vertex AI Search(プリビルト RAG)。最小コード・最速PoC
- 精度向上が必要なら → RAG API でチャンキング戦略・リランキングをカスタマイズ
- 最新情報が必須なら → Grounding with Google Search を単体または組み合わせで使用
- エンタープライズ本番なら → 社内データ(Vertex AI Search)+ 必要に応じて Google Search のハイブリッド構成
Gen AI モデルは複数のパラメータで出力の多様性・長さ・安全性を制御できる。試験では各パラメータの機能と推奨設定値が頻繁に問われる。
チャット応答 → 256〜512
要約タスク → 1024〜2048
長文生成 → モデル上限まで
BLOCK_LOW_AND_ABOVE 等の厳しめ閾値を推奨。BLOCK_NONE は許可された場合にのみ利用可能な制限付きフィールドであり、gemini-2.5-flash 以降の新モデルでは OFF がデフォルト。HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_DANGEROUS_CONTENT
HARM_CATEGORY_SEXUALLY_EXPLICIT
Gemini 1.5 Flash → 1M トークン
Gemini 1.5 Pro → 1M トークン
Gemini 2.0 Flash → 1M トークン
stop_sequences: ["```", "END", "\n\n"]
- 事実確認・QA・要約 → temperature: 0.0〜0.3(低い値で一貫性を確保)
- マーケティング文章・アイデア生成 → temperature: 0.7〜1.0(高い値で創造性を発揮)
- コード生成 → temperature: 0.0〜0.2(構文的に正確なコードが必要)
- エンタープライズ本番環境 → safety_settings を HIGH に設定。コンプライアンス監査ログを記録
- コスト最適化 → max_output_tokens を必要最小限に設定。不必要な長文生成を防ぐ
from vertexai.generative_models import GenerativeModel, GenerationConfig
model = GenerativeModel("gemini-1.5-pro-002")
config = GenerationConfig(
temperature=0.2, # 事実QA向けに低く設定
top_p=0.9, # 上位90%のトークンからサンプリング
max_output_tokens=1024, # 最大1024トークンで応答
stop_sequences=["END"], # "END"が出たら停止
)
response = model.generate_content(
"本日の気温と過去30年の平均気温を比較してください",
generation_config=config,
)
- RAG ≠ ファインチューニング:RAG は「検索して補う」、FT は「モデルを再学習させる」。最新情報対応は RAG でしか解決できない
- Temperature=0 は「完全に同じ出力」ではない:top-p・top-k の影響で完全同一ではないが、極めて高い一貫性になる
- Prompt Chaining ≠ Chain-of-Thought:Chaining は複数プロンプトをつなぐ「ワークフロー」、CoT は1プロンプト内で推論を「見える化」する技法
- Grounding ≠ RAG:RAG はグラウンディングの実装方法の一つ。Grounding はより広い概念で、Google Search グラウンディングは RAG の変形