Databricks

RAGパターンとは?Databricksで学ぶ検索拡張生成の実装

2026-03-21
更新: 2026-03-27
NicheeLab編集部

RAG(Retrieval-Augmented Generation)は、LLMの生成能力に外部知識の検索を組み合わせることで、ハルシネーションを抑制しつつ最新・正確な回答を生成するアーキテクチャです。 Databricks GenAI Engineer試験では全体の30〜40%がRAG関連から出題され、アーキテクチャ設計・コンポーネント選択・評価手法の理解が求められます。

RAGアーキテクチャの全体像

RAGパイプラインは「検索フェーズ」と「生成フェーズ」の2段階で構成されます。ユーザーのクエリをEmbeddingに変換し、Vector Searchで関連ドキュメントを検索した後、そのコンテキストとともにLLMへプロンプトを送信します。

┌─────────────────────────────────────────────────────────────┐
│                    RAG パイプライン                          │
│                                                             │
│  User Query                                                 │
│      │                                                      │
│      ▼                                                      │
│  ┌──────────────┐    ┌──────────────────┐                   │
│  │ Embedding    │───▶│ Vector Search    │                   │
│  │ Model        │    │ (類似度検索)      │                   │
│  └──────────────┘    └───────┬──────────┘                   │
│                              │ Top-K チャンク               │
│                              ▼                              │
│                     ┌──────────────────┐                    │
│                     │ Prompt Template  │                    │
│                     │ (Query+Context)  │                    │
│                     └───────┬──────────┘                    │
│                             │                               │
│                             ▼                               │
│                     ┌──────────────────┐                    │
│                     │ LLM (生成)       │                    │
│                     └───────┬──────────┘                    │
│                             │                               │
│                             ▼                               │
│                        Response                             │
└─────────────────────────────────────────────────────────────┘

このパイプライン設計により、LLMが学習時に持っていない情報(社内ドキュメント・最新データ等)にもアクセスでき、根拠のある回答を生成できます。

チャンキング戦略の比較

ドキュメントをVector Searchに格納する前に、適切なサイズのチャンク(断片)に分割する必要があります。チャンキング戦略の選択はRAGの検索精度に直結するため、ドキュメントの特性に応じた使い分けが求められます。

戦略分割基準メリットデメリット適用シーン
Fixed-size固定トークン数(例: 512トークン)実装が簡単、処理速度が速い文の途中で切断される可能性均質な文書(FAQ、ログ)
Semantic文の意味的な区切り意味の一貫性が高いEmbeddingモデルの追加コスト技術文書、論文
Recursive段落→文→トークンの階層的分割構造を保持しつつサイズ制御可能パラメータ調整が必要Markdown、HTML構造文書

GenAI Engineer試験では、ドキュメントの種類に応じてどのチャンキング戦略を選択すべきかを問う問題が出題されます。たとえば「社内Wikiのように見出し構造があるドキュメント」にはRecursive、「短いFAQの集合」にはFixed-sizeが適しています。

Embeddingモデルの選定

Embeddingモデルはテキストをベクトル空間に変換し、類似度検索の基盤となります。DatabricksではFoundation Model APIで提供されるモデルのほか、外部APIも利用可能です。

モデル次元数日本語対応特徴
BGE-large-en1024限定的オープンソース、セルフホスト可能
Instructor768限定的タスク指示付きEmbedding
OpenAI text-embedding-3256〜3072(可変)対応高精度、API従量課金
GTE-large(Databricks提供)1024対応Foundation Model APIで即利用可

Databricksプラットフォーム内で完結させたい場合は、Foundation Model APIのGTEモデルが最も統合しやすく、External Model機能でOpenAI等の外部APIを利用する構成も選択できます。

Vector Searchの設定

DatabricksのVector SearchはマネージドベクトルDBで、Unity Catalogと統合されたアクセス制御のもとで類似度検索を提供します。インデックスタイプの選択はRAGアーキテクチャの運用性に大きく影響します。

項目Delta Sync IndexDirect Vector Access Index
データソースDelta Table(自動同期)REST APIで直接書き込み
更新方式ソーステーブル変更時に自動更新手動でベクトルを挿入・更新
Embedding自動計算(モデル指定)or 事前計算列事前計算済みベクトルのみ
適用シーン社内ドキュメントのRAG(定期更新)外部システムとのリアルタイム連携

Prompt Engineeringテンプレート

RAGではLLMに渡すプロンプトの設計が回答品質を左右します。検索されたコンテキストとユーザーのクエリを構造化して渡すことで、ハルシネーションを抑制できます。

# RAG用プロンプトテンプレートの例

prompt_template = """
あなたは社内ドキュメントに基づいて回答するアシスタントです。
以下のコンテキストのみを使って質問に回答してください。
コンテキストに含まれない情報については「情報が見つかりません」と回答してください。

## コンテキスト
{context}

## 質問
{query}

## 回答
"""

# Databricks Foundation Model APIでの実行例
import mlflow.deployments

client = mlflow.deployments.get_deploy_client("databricks")

response = client.predict(
    endpoint="databricks-meta-llama-3-1-70b-instruct",
    inputs={
        "messages": [
            {"role": "system", "content": "社内ドキュメントに基づいて回答してください。"},
            {"role": "user", "content": prompt_template.format(
                context=retrieved_context,
                query=user_query
            )}
        ],
        "max_tokens": 1024,
        "temperature": 0.1
    }
)

temperature を低く設定(0.0〜0.2)することで、コンテキストに忠実な回答が得られやすくなります。 試験では、プロンプトテンプレートに「コンテキスト外の情報を使わない」という制約を含めることの重要性が問われます。

RAGの評価指標とMLflow evaluate()

RAGパイプラインの品質を定量的に評価するには、以下の3つの指標を用います。DatabricksではMLflow evaluate()に組み込みの評価メトリクスとして提供されています。

指標評価対象判定基準
Faithfulness回答がコンテキストに忠実か回答の各文がコンテキストから裏付けられるか
Answer Relevance回答が質問に適切か回答が質問の意図を正しく捉えているか
Context Precision検索精度検索チャンクが質問に関連するものを含んでいるか
import mlflow

# RAG評価パイプラインの実行
eval_data = pd.DataFrame({
    "questions": ["Databricksのクラスターポリシーとは?", ...],
    "ground_truth": ["クラスター作成時の設定制約を定義する機能です", ...],
    "retrieved_context": [retrieved_chunks_list, ...],
    "generated_answers": [rag_responses_list, ...]
})

results = mlflow.evaluate(
    data=eval_data,
    model_type="question-answering",
    evaluators="default",
    extra_metrics=[
        mlflow.metrics.genai.faithfulness(),
        mlflow.metrics.genai.relevance(),
    ]
)

print(results.metrics)
# {'faithfulness/v1/mean': 0.92, 'relevance/v1/mean': 0.88, ...}

MLflow evaluate()はLLM-as-a-Judgeパターンを使い、別のLLMが回答品質をスコアリングします。各メトリクスは1〜5のスケールで評価され、閾値ベースでパイプラインの品質ゲートとして活用できます。

RAG vs Fine-tuning 比較

比較項目RAGFine-tuning
知識の更新ドキュメント更新のみで即反映再トレーニングが必要
根拠の提示ソースドキュメントを引用可能モデル内部に埋め込まれ引用不可
コスト推論時にVector Search + LLM呼び出しトレーニングコスト+推論コスト
レイテンシ検索ステップ分やや遅い単一モデル呼び出しで高速
ハルシネーションコンテキスト制約で抑制可能トレーニングデータ外の質問で発生しやすい
適用例社内Q&A、ドキュメント検索コード生成、専門領域の文体変換

GenAI Engineer試験の出題ポイント

  • チャンキング戦略の選択:ドキュメント特性に応じたFixed/Semantic/Recursiveの使い分け
  • インデックスタイプの判断:Delta Sync Index vs Direct Vector Access Indexの選択基準
  • 評価指標の理解:Faithfulness・Relevance・Context Precisionの定義と計測方法
  • RAG vs Fine-tuningの使い分け:ユースケースに応じた適切なアプローチの選択
  • プロンプト設計:コンテキスト制約を含むプロンプトテンプレートの構成
  • MLflow evaluate():RAGパイプラインの品質評価手法

GenAI Engineer試験の全体の30〜40%がRAG関連です。単なるアーキテクチャの理解だけでなく、「このシナリオでどのコンポーネントを選ぶべきか」という実務的な判断力が問われます。

サンプル問題

RAG / GenAI Engineer

問題 1

ある企業が社内ナレッジベース(Confluence上の数千ページ)を活用したQ&Aチャットボットを構築しています。ドキュメントは週次で更新され、回答には必ずソースページへのリンクを含める必要があります。この要件に最も適したアプローチはどれですか?

  1. 社内ドキュメント全体でLLMをFine-tuningし、定期的に再トレーニングする
  2. RAGパイプラインを構築し、Delta Sync Indexで週次更新を自動同期、検索チャンクのメタデータからソースURLを取得する
  3. LLMのコンテキストウィンドウに全ドキュメントを直接入力する
  4. ドキュメントの要約をFew-shotプロンプトとしてLLMに毎回渡す

正解: B

週次更新のドキュメントを活用するQ&Aにはデータ更新が即反映されるRAGが最適です。Delta Sync Indexを使えばソーステーブルの変更がVector Searchに自動同期され、チャンクのメタデータ(ソースURL等)を保持できるためソースリンクの提示も実現できます。Fine-tuning(A)ではソースの引用が困難で再トレーニングのコストも高く、全ドキュメントの直接入力(C)はコンテキストウィンドウの制限を超えます。要約のFew-shot(D)では情報の網羅性と正確性が担保できません。

よくある質問

RAGとFine-tuningはどのように使い分けますか?

RAGは最新情報や社内ドキュメントなど外部知識へのアクセスが必要な場合に適しています。Fine-tuningはモデルの出力形式・トーン・専門用語の使い方を恒久的に変更したい場合に向いています。DatabricksのGenAI Engineer試験では、この使い分けの判断基準が頻出です。両方を組み合わせるハイブリッド構成も実務では有効です。

DatabricksでRAGを構築する際に必要なコンポーネントは何ですか?

最低限必要なのは、(1) ドキュメントをチャンクに分割するパイプライン、(2) Embeddingモデル(Foundation Model APIまたは外部API)、(3) Vector Search Index(Delta Sync IndexまたはDirect Vector Access Index)、(4) LLM(Foundation Model APIまたはExternal Model)の4つです。加えて、MLflow evaluate()による品質評価パイプラインを組み合わせることが推奨されます。

RAGの評価指標にはどのようなものがありますか?

主要な評価指標は3つあります。Faithfulness(生成された回答がコンテキストに忠実か)、Answer Relevance(回答がユーザーの質問に適切に回答しているか)、Context Precision(検索されたコンテキストが質問に関連するチャンクを含んでいるか)です。DatabricksではMLflow evaluate()にこれらのメトリクスが組み込まれており、LLM-as-a-Judgeパターンで自動評価できます。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (109件)
© 2026 NicheeLab All rights reserved.