このセッションで学ぶこと

1
LLM活用の3大パターン 直接生成、RAG、エージェントの違いと使いどころを整理する
2
Function Calling / Tool Use LLMが外部ツールを呼び出すアーキテクチャを理解し、実装の勘所を掴む
3
RAGパイプラインの構築 文書分割からベクトルDB、検索、プロンプト注入までの全工程を把握する
4
Hallucination対策と評価指標 出力の信頼性を担保するためのチェック手法と定量評価の方法を身につける

1. LLM活用の3大パターン

LLMの使い方は大きく3つに分類できる。単純な方から順に、直接生成、RAG(検索拡張生成)、エージェント。プロジェクトの要件によってどのパターンが適切かが変わる。

直接生成
プロンプトだけでLLMに回答を生成させる。最もシンプルで導入が速い。
  1. ユーザーが質問を入力
  2. プロンプト(System + User)をLLMに送信
  3. LLMが学習済み知識から回答を生成
  4. 回答を返却

向いている場面: 一般的なQ&A、文章生成、翻訳、コード生成など、外部データの参照が不要なタスク

RAG(検索拡張生成)
外部の知識ベースから関連情報を検索し、プロンプトに注入してから回答を生成する。
  1. ユーザーが質問を入力
  2. 質問をEmbeddingしてベクトルDBを検索
  3. 関連文書を取得
  4. 文書をプロンプトに注入
  5. LLMが根拠付きで回答を生成

向いている場面: 社内ナレッジ検索、最新情報の参照、根拠付き回答が必要な場面

エージェント
LLMが自律的にツールを呼び出し、複数ステップのタスクを実行する。
  1. ユーザーが目標を指示
  2. LLMがタスクを分解
  3. 必要なツールを選択・実行
  4. 結果を評価し次のアクションを判断
  5. 完了するまでループ

向いている場面: 複雑な調査、マルチステップの業務自動化、コード修正の自動化

3つのパターンは排他的ではない。エージェントの中でRAGを使う、直接生成の結果をツールで検証する、といった組み合わせが実務では一般的。

2. Function Calling / Tool Use のアーキテクチャ

Function CallingはLLMが「この場面ではこのツールを呼ぶべき」と判断し、必要なパラメータを生成する仕組み。LLMがツールを直接実行するのではなく、「何を呼ぶか」を指示するだけで、実際の実行はアプリケーション側が行う。この分離がセキュリティ上の重要なポイント。

処理フロー

ユーザー入力
「東京の天気は?」
LLM
ツール呼出を判断
Tool Call
get_weather(city:"tokyo")
最終回答を生成
「東京は晴れ、気温12度です」
LLM
結果を統合
ツール実行結果
{"weather":"sunny","temp":12}

OpenAI vs Anthropic の実装比較

観点 OpenAI(Function Calling) Anthropic(Tool Use)
定義方法 tools配列にJSON Schemaで関数を定義 tools配列にinput_schemaで定義
呼出形式 tool_callsオブジェクト tool_useコンテンツブロック
並列呼出 対応(parallel_tool_calls) 対応(複数tool_useブロック)
強制実行 tool_choice: "required" tool_choice: {type: "any"}
ストリーミング 対応 対応
結果返却 roleを"tool"にしてtool_call_idと紐付け tool_resultコンテンツブロック

実装時の注意点

1
ツール定義の説明文が品質を決める
LLMはdescriptionを読んでツールを選択する。曖昧な説明だと間違ったツールを呼ぶ。パラメータのdescriptionにも具体例を含めると精度が上がる。
2
バリデーションは必須
LLMが生成したパラメータを無検証で外部APIに送るのは危険。型チェック、範囲チェック、許可リスト照合を実行前に行う。
3
エラーハンドリングを設計する
ツール実行が失敗した場合の結果もLLMに返す。LLMはエラー情報を見てリトライの判断や、ユーザーへのフォールバック回答を生成できる。
4
ツール数は絞る
使えるツールが20個以上になると選択精度が下がる。頻度の低いツールはグループ化するか、Routerを挟んで段階的に提示する。

3. RAGパイプラインの全体像

RAGは「検索して、注入して、生成する」の3ステップに見えるが、実際にはその前後に複数の工程がある。全工程を把握しておくことで、ボトルネックの特定と改善が速くなる。

パイプライン詳細

1
文書収集・前処理
対象文書を収集し、不要なフォーマット要素(ヘッダ、フッタ、ページ番号等)を除去する。PDF、Word、HTML、Markdownなど様々な形式を統一的に扱える前処理が必要。
2
チャンク分割(Chunking)
文書を検索に適した単位に分割する。分割が粗すぎると検索ノイズが増え、細かすぎると文脈が失われる。チャンクサイズとオーバーラップの設計がRAGの精度を左右する。
3
Embedding(ベクトル化)
各チャンクをEmbeddingモデルに通して数値ベクトルに変換する。意味的に近いテキスト同士が近いベクトルになる性質を利用する。
4
ベクトルDB格納
生成したベクトルをベクトルデータベースに格納する。メタデータ(ファイル名、作成日、カテゴリ等)も一緒に保存しておくと、後のフィルタリングに活用できる。
5
クエリの検索
ユーザーの質問をEmbeddingし、ベクトルDB内の類似ベクトルを検索(ANN: Approximate Nearest Neighbor)。上位k件の関連チャンクを取得する。
6
プロンプト注入
取得したチャンクをSystem PromptまたはUser Promptに埋め込む。「以下の文書を根拠にして回答してください」のような指示とセットで使う。
7
回答生成
LLMが注入された文書を参照しながら回答を生成する。引用元を明示させる(Citation)とHallucination抑制に効果的。

4. チャンク分割戦略の比較

チャンク分割はRAGの精度に直結する。「どう切るか」で検索結果が変わり、最終回答の品質が変わる。3つの戦略を比較する。

戦略 方法 チャンクサイズ目安 利点 欠点
固定長分割 文字数やトークン数で機械的に分割 500-1000 tokens 実装が容易 均一なチャンクサイズ 文脈が途中で切れる可能性がある
セマンティック分割 意味の区切り(段落、セクション)で分割 可変(段落単位) 文脈保持 意味的にまとまった単位 チャンクサイズが不均一になりやすい
再帰的分割 複数の区切り文字を優先度付きで適用 500-1500 tokens バランス 文脈保持とサイズ制御を両立 パラメータ調整が必要

推奨アプローチ

まず再帰的分割で開始
チャンクサイズ 800 tokens / オーバーラップ 200 tokens
検索精度を評価
結果を見て調整

オーバーラップとは隣接チャンク間で重複させるトークン数のこと。文脈が途切れるのを防ぐ効果がある。オーバーラップ率はチャンクサイズの15-25%が目安。

5. Embeddingモデルの比較

Embeddingモデルの選定はRAGの検索精度に直接影響する。英語中心のモデルと日本語対応モデルで性能差が出るため、対象言語を考慮して選ぶ。

モデル プロバイダー 次元数 日本語対応 料金目安 特徴
text-embedding-3-large OpenAI 3072 良好 $0.13 / 1M tokens 高精度、次元数を削減可能(Matryoshka)
text-embedding-3-small OpenAI 1536 普通 $0.02 / 1M tokens コスト重視、小規模プロジェクト向き
embed-multilingual-v3.0 Cohere 1024 良好 無料枠あり / 有料プランあり 100言語以上対応、多言語検索に強い
multilingual-e5-large Microsoft(OSS) 1024 良好 無料(自社ホスト) Hugging Faceで公開、自社デプロイ可
intfloat/multilingual-e5-large-instruct intfloat(OSS) 1024 良好 無料(自社ホスト) 指示文付きEmbedding、検索精度向上

日本語のRAGでは text-embedding-3-large が安定した選択肢。コストを抑えたい場合は multilingual-e5系のOSSモデルを自社ホストする方法もある。

6. ベクトルデータベース比較

ベクトルDBはEmbeddingを格納・検索する専用データベース。プロジェクトの規模、運用形態、既存インフラとの相性で選ぶ。

DB名 形態 スケーラビリティ フィルタリング 料金 適合場面
Pinecone マネージド 高(サーバーレス対応) メタデータフィルタ対応 従量課金(Free Tierあり) 本番環境、運用負荷を下げたい場合
Weaviate OSS / マネージド GraphQL、ハイブリッド検索 OSS無料 / Cloud有料 ハイブリッド検索が必要な場合
Qdrant OSS / マネージド 豊富なフィルタ条件 OSS無料 / Cloud有料 高度なフィルタリングが必要な場合
pgvector PostgreSQL拡張 SQLによるフィルタ PostgreSQLの費用のみ 既存PostgreSQLがある場合
ChromaDB OSS 低-中 基本的なフィルタ 無料 PoC、ローカル開発、小規模プロジェクト

選定の判断基準

PoC / 検証段階
ChromaDB(ローカルで即起動)
既存PostgreSQLあり
pgvector(追加インフラ不要)
本番 / 大規模運用
Pinecone / Qdrant / Weaviate

7. 検索精度向上テクニック

ベクトル検索だけでは取りこぼしが発生する。キーワードの一致が重要な場面もあれば、ユーザーの質問が曖昧で検索がうまくいかない場面もある。3つのテクニックで精度を底上げする。

Hybrid Search(ハイブリッド検索)
  • ベクトル検索(意味的類似性)とキーワード検索(BM25等)を組み合わせる
  • 固有名詞や専門用語はキーワード検索が強い
  • 概念的な質問はベクトル検索が強い
  • 両方のスコアを加重平均して最終ランキング
  • Weaviate、Qdrantが標準対応
Reranking(再ランキング)
  • 初回検索で取得した候補を、より精密なモデルで再評価する
  • Cross-Encoderモデルが質問と文書のペアを直接比較
  • 初回検索の上位20-50件から上位5件を再選定
  • Cohere Rerank API、cross-encoder/ms-marco系が有名
  • 精度は上がるがレイテンシが増える(+100-300ms)
Query Expansion(クエリ拡張)
  • ユーザーの質問をLLMで複数のサブクエリに展開する
  • 元の質問とサブクエリの両方で検索し、結果を統合
  • HyDE: 仮の回答を生成してそれでも検索する手法
  • 質問が曖昧なときに特に効果が大きい
  • LLM呼出が増えるのでコストとレイテンシに注意

実務での適用順序

Step 1: Hybrid Search
Step 2: Reranking
Step 3: Query Expansion

Step 1だけで十分な精度が出ることも多い。Step 2, 3は精度が足りない場合に段階的に追加する。全部盛りにするとレイテンシとコストが跳ね上がるので、要件に応じて判断する。

8. Hallucination対策チェックフロー

LLMが事実に基づかない情報を生成してしまうHallucination。完全にゼロにはできないが、対策を重ねることでリスクを大幅に下げられる。4つの防御層で対処する。

G
Grounding(根拠付与)
RAGで取得した文書を根拠として必ず参照させる。System Promptに「提供された文書に記載のない情報は"分かりません"と回答してください」と明記する。回答を根拠の範囲内に限定することで、モデルの創作を抑制する。
C
Citation(引用明示)
回答内に引用元(文書名、段落番号、URL等)を明示させる。ユーザーが根拠を確認できるようになり、誤りの発見が容易になる。プロンプトで「回答の各ポイントに対して[出典1]のように引用を付けてください」と指示する。
S
Self-consistency Check(自己整合性チェック)
同じ質問を複数回(Temperature > 0で)投げて、回答のばらつきを見る。回答が安定していれば信頼度が高い、大きくブレるなら要注意。コストは増えるが、重要な判定に対しては有効な検証手段になる。
V
Verification(外部検証)
別のモデルや外部ツールで回答の事実関係を検証する。LLM-as-a-Judgeで別モデルに「この回答は提供文書と整合しているか」を判定させる方法が広まっている。

対策の適用指針

リスクレベル 推奨対策
社内雑談Bot、アイデア出し Grounding のみ
社内FAQ、技術文書検索 Grounding + Citation
契約書レビュー、医療情報、金融判断 全4層 + 人間による最終確認

9. RAG評価指標

RAGの品質を「なんとなく良い」で終わらせない。定量的に測定して改善サイクルを回すための3つの指標を押さえる。

Faithfulness(忠実性)
生成された回答が、取得した文書の内容に忠実かどうか。文書に書かれていない情報を回答に含んでいないか。
目標: 0.85 以上
Answer Relevancy(回答関連性)
生成された回答が、ユーザーの質問に対して的確に答えているか。質問と回答の意味的な一致度。
目標: 0.80 以上
Context Recall(文脈再現率)
正解を導くために必要な文書が、検索結果に含まれているか。取得段階の漏れを検出する。
目標: 0.75 以上

評価ツールと手法

ツール / 手法 概要 特徴
RAGAS RAG専用の自動評価フレームワーク 月間40万DL超、2000万以上の評価実行。Faithfulness, Answer Relevancy等を自動算出。OSSで無料利用可
Maxim AI エンタープライズ向けAI評価プラットフォーム 2026年の評価ツールランキングでトップ評価。品質モニタリングとコスト最適化を統合
LangSmith LangChain公式のトレーシング・評価ツール RAGパイプラインのネスト実行ステップ可視化、プロンプトのバージョン管理、A/Bテストに強い
Arize Phoenix LLMオブザーバビリティプラットフォーム トレーシング、評価、Embeddingの可視化をカバー。OSS版あり
DeepEval LLMテスティングフレームワーク pytestライクなインターフェースで14以上の評価メトリクスを提供。CI/CD統合が容易
人間評価 担当者が手動で回答品質を採点 最も信頼性が高い。スケールしないが、自動評価の校正に必須
LLM-as-a-Judge 別のLLMに回答品質を判定させる スケーラブル。ただし判定モデル自身のバイアスに注意

改善サイクル

評価セット作成(50-100件)
現状のスコア測定
ボトルネック特定
改善実施
再測定

Context Recallが低い場合は検索段階(チャンク分割やEmbeddingモデル)に問題がある。Faithfulnessが低い場合はプロンプトの指示やGrounding設計に問題がある。指標を見てどこを直すべきかを判断する。

用語集

RAG(Retrieval-Augmented Generation)
外部の知識ベースから関連情報を検索し、その情報をプロンプトに注入してからLLMに回答を生成させる手法。社内文書の活用やHallucination抑制に使われる。
Embedding
テキストを高次元の数値ベクトル(浮動小数点の配列)に変換する処理。意味が近いテキスト同士は、ベクトル空間上で近い距離に配置される。
Vector Database(ベクトルDB)
高次元ベクトルの格納と類似検索に特化したデータベース。ANN(近似最近傍探索)アルゴリズムにより、数百万件のベクトルから数ミリ秒でTop-K件を返す。
Chunk(チャンク)
文書をEmbedding・検索するために分割した断片。チャンクの大きさと分割方法がRAGの検索精度を大きく左右する。
Semantic Search(セマンティック検索)
テキストの意味的な類似性に基づいて検索する手法。キーワードが一致しなくても意味が近ければヒットする。Embeddingを使ったベクトル類似度検索がこれにあたる。
Hybrid Search(ハイブリッド検索)
ベクトル検索(セマンティック)とキーワード検索(BM25等)を組み合わせる検索手法。両者の強みを活かして検索精度を向上させる。
Reranking(再ランキング)
初回検索で取得した候補を、Cross-Encoderなどのより精密なモデルで再評価し、関連性の高い順に並べ替える手法。精度は上がるがレイテンシが増える。
Function Calling(関数呼出)
LLMが「どのツール(関数)を、どんなパラメータで呼ぶべきか」を判断し、呼出指示を返す機能。実際の関数実行はアプリケーション側が行う。OpenAIが先行して導入した。
Tool Use
AnthropicにおけるFunction Callingの呼称。概念は同じで、LLMがツールの選択とパラメータ生成を行い、実行結果を受け取って最終回答を生成する。
Grounding(グラウンディング)
LLMの回答を外部の信頼できる情報源に紐づけること。RAGで取得した文書を根拠として参照させ、文書にない情報の生成を抑制する手法。
Hallucination(幻覚)
LLMが事実に基づかない情報をもっともらしく生成してしまう現象。固有名詞の誤り、存在しない論文の引用、数値のでっち上げなどが典型例。
Few-shot
プロンプト内にタスクの入出力例を数個(2-5個程度)含めることで、LLMに期待する出力形式や振る舞いを示す手法。Zero-shot(例なし)より精度が上がることが多い。
Chain of Thought(CoT)
LLMに推論の過程をステップバイステップで記述させるプロンプト手法。数学的問題や論理的推論で特に効果が高い。「ステップごとに考えてください」と指示するだけで発動する。

参考URL一覧

Anthropic Tool Use Documentationdocs.anthropic.com OpenAI Function Calling Guideplatform.openai.com OpenAI Embeddings Guideplatform.openai.com Pinecone -- Retrieval Augmented Generation 解説pinecone.io ChromaDB Documentationtrychroma.com Weaviate Documentationweaviate.io Qdrant Documentationqdrant.tech pgvector -- PostgreSQLベクトル拡張github.com RAGAS -- RAG評価フレームワークragas.io LangSmith Documentationsmith.langchain.com Maxim AI -- エンタープライズAI評価プラットフォームgetmaxim.ai Arize Phoenix -- LLMオブザーバビリティarize.com DeepEval -- LLMテスティングフレームワークconfident-ai.com Google AI for Developersai.google.dev Cohere Rerank Documentationcohere.com