本記事はGeminiの出力をプロンプト工学で整理した業務ドラフト(未検証)です。
RAG精度を最大化する「コンテキストエンジニアリング」:情報密度の最適化によるLLMの思考深度向上
【ユースケース定義と課題】
膨大な社内規定や技術仕様書をLLMに読み込ませ、矛盾のない実行プランを策定させる。単なる要約ではなく、参照情報の優先順位付けと、文脈(コンテキスト)の動的な整理が困難。
入力型:非構造化テキスト(PDF抽出、Wiki等)
出力型:構造化Markdown(Action Plan形式)および検証用JSON
【プロンプト設計のループ】
graph TD A["設計: コンテキストの構造化"] --> B["実行: 推論と整合性チェック"] B --> C["評価: 根拠(Citation)の正確性"] C -->|改善: ノイズ除去とメタデータ付与| A
設計:生データを流し込むのではなく、重要度や属性(日付、カテゴリ)をメタデータとして付与し、LLMが「どこを重視すべきか」を設計。
実行:Chain-of-Thoughtを用い、情報を統合する前に各情報の信頼性を評価させる。
評価:出力されたプランが、元のコンテキストのどの部分に基づいているかをリンク(引用元)で検証。
【プロンプトの実装案】
# Role あなたは高度なコンテキストエンジニアです。提供された複数の情報源から、矛盾を解消し、実行可能な「技術導入ロードマップ」を作成してください。 # Context 以下のドキュメント群を分析してください。 <documents> [Doc1: 2024年セキュリティガイドライン] ... [Doc2: 現行インフラ構成] ... [Doc3: 開発チームのスキルセット] ... </documents> # Task Instructions 1. **Step-by-step Analysis**: 各ドキュメントから、今回のプロジェクトに関連する制約事項を箇条書きで抽出せよ。 2. **Conflict Resolution**: ドキュメント間で指示が矛盾する場合、[Doc1]を最優先し、その理由を述べよ。 3. **Action Plan Generation**: 以下のフォーマットで出力せよ。 # Output Format ## 1. 導入の前提条件 - (制約事項を記述) ## 2. 段階的実装プラン - Step 1: ... ## 3. リスクと対策 - (矛盾点への対処を含む) # Constraint - 「AIの一般的な意見」は不要。必ず提供された<documents>の範囲内で回答すること。 - 不明な点は「不明」と明記し、憶測で補完しないこと。
【評価指標と誤り分析】
| 評価項目 | 採点基準 (1-5) | 失敗パターン |
|---|---|---|
| 情報の忠実性 | 提供データ外の知識(幻覚)が混入していないか | 一般論を述べてしまい、固有の制約を無視する |
| コンテキスト優先度 | 指示通り[Doc1]を最優先しているか | 日付が古いドキュメントの指示に従ってしまう |
| 形式遵守 | 指定のMarkdownおよびJSON構造を維持しているか | 説明文が長すぎてパースエラーが発生する |
【改良後の最適プロンプト】
分析の結果、LLMが「どの情報が最新か」を迷う傾向があるため、システムプロンプトで「時間軸の重み付け」を明示的に定義。
# Role
System Strategist (Context-Aware Agent)
# Execution Logic (Chain-of-Thought)
1. 読み込んだ全情報に [ID][Date][Priority] のタグを内部的に付与せよ。
2. 矛盾を発見した場合、Priority > Date の順で優先順位を自動決定せよ。
3. 結論を出す前に、その根拠となる情報のIDを思考プロセス内で列挙せよ。
# Input Data
<input_context>
{{$DOCUMENT_INPUT}}
</input_context>
# Task
上記コンテキストに基づき、最適な意思決定案を提示せよ。
# Output Schema (Strict)
{
"summary": "決定事項の概要",
"plan": ["step1", "step2"],
"sources": ["DocID_1", "DocID_2"],
"unresolved_conflicts": ["未解決の矛盾点"]
}
# Constraint
- Output only valid JSON.
- No conversational filler.
【まとめ】
情報を「流す」のではなく「配置」する:タグ付けや構造化を行い、LLMが注目すべき情報の座標を明示すること。
優先順位のアルゴリズムを指示する:矛盾が発生した際の「解決ルール(例:日付優先、部署優先)」をプロンプトに組み込むこと。
思考と出力を分離する:JSON等の厳密な出力が必要な場合は、思考プロセス(Chain-of-Thought)を別のタグ内で行わせ、最終結果のみをパース可能にすること。

コメント