RAGに頼りすぎないための“知識体質改善”

RAGに頼りすぎないための知識体質改善 – LLMチューニング技法
LLM Tuning Strategy

PDF、仕様書、過去会話、業務ノウハウをLLMに染み込ませる。 ただしRAGを捨てるのではなく、RAGとファインチューニングを役割分担させる。 これが実運用で壊れにくいローカルLLM強化の考え方です。

1. このテーマの核心

RAGは便利です。DBやPDFから必要な文書を検索して、LLMに根拠として渡せます。 しかし、RAGだけに依存すると、次のような問題が出ます。

課題 1

検索できなければ答えられない

DBに入っていても、検索クエリやchunk分割が悪いと、必要な情報がLLMに届きません。

課題 2

毎回contextに詰め込む必要がある

長いPDFや仕様書を毎回参照すると、token消費、速度、コストが重くなります。

課題 3

業務用語に馴染みにくい

RAGで情報を渡しても、モデル自身がその分野の言葉に慣れていないと、回答が浅くなります。

知識体質改善とは、PDFや会話ログを使って、モデル自身をその業務領域に慣れさせることです。 RAGをゼロにするのではなく、RAGに渡す前から「話が通じるモデル」にします。

2. RAGとファインチューニングの役割分担

技法 主な目的 得意なこと 苦手なこと
RAG 必要な資料を検索して、根拠つきで答える 出典確認、最新情報、PDFページ参照、顧客別データ 検索に失敗すると弱い。毎回contextが必要
CPT 生テキストを読ませて、業務知識を染み込ませる 専門用語、仕様書の文脈、社内文書の言い回し 出典提示、最新情報、厳密な根拠確認
SFT 質問と模範回答から、答え方を覚えさせる 回答スタイル、手順、JSON形式、会話品質 大量の知識注入、細かいページ参照
LoRA / QLoRA ベースモデルを壊さず、差分adapterで学習する 低VRAM学習、切替、ロールバック 本体そのものの完全再学習ではない
正しい設計思想: 「RAGかファインチューニングか」ではありません。 RAGで根拠を取り、CPTで知識の地力を上げ、SFTで答え方を整えるのが現実解です。

3. CPT:PDFや仕様書を“読ませ直す”学習

CPTは Continued Pretraining、つまり継続事前学習です。 モデルに対して、業務文書やPDFの文章を大量に読ませ、 「この分野の文章の続き」を自然に予測できるようにします。

入力例:
Kaleidoのハイブリッド検索では、BM25とベクトル検索を組み合わせ、
信頼度スコアに応じて回答候補を再ランキングする。

学習で起きること:
「Kaleido」「ハイブリッド検索」「BM25」「ベクトル検索」
といった用語や文脈に、モデルが慣れていく。
向いている
  • PDFマニュアル
  • 仕様書
  • 研究資料
  • 社内Wiki
  • 技術メモ
  • 信頼済みweb_knowledge
向いていない
  • 価格や法改正などの最新情報
  • 顧客ごとに変わる機密情報
  • ページ番号つきで出典が必要な回答
  • 誤りや重複が多い生ログ
CPTで知識を焼き込むと、モデルはその内容を「覚えたように」振る舞います。 しかし、どの文書のどこに書いてあったかは保持できません。 出典が必要な場面では、必ずRAG経路を残します。

4. SFT:過去会話や模範回答から“答え方”を学ばせる

SFTは Supervised Fine-Tuning、教師あり微調整です。 「この質問にはこう答える」という対話ペアを使い、回答の型を学ばせます。

{
  "messages": [
    {
      "role": "user",
      "content": "CPTとSFTの違いは?"
    },
    {
      "role": "assistant",
      "content": "CPTは知識を染み込ませる学習、SFTは答え方を教える学習です。"
    }
  ]
}

SFTで変わるのは、知識そのものよりも回答スタイル、判断順序、説明の粒度です。

技術者向けに手順を省略しない 契約書レビューでは乙側リスクを先に出す Linux対応は確認 → 原因 → 修正の順 不明点は断定しない URLは確認できる場合だけ出す
SFTは「自社AIらしさ」を作る技法です。 ただし、低品質な会話ログをそのまま使うと、悪い癖も一緒に覚えます。 使うべきなのは、修正済み・高評価・再利用価値のあるQ&Aです。

5. LoRA / QLoRA:元モデルを壊さない安全な学習方式

実運用では、ベースモデル本体を直接書き換えるより、 LoRA adapterとして差分を保存する方法が安全です。

ベースモデル
  qwen-14b-base/
    model.safetensors
    tokenizer.json

追加学習結果
  adapters/
    20260608-qwen14b-cpt-v1/
      adapter_config.json
      adapter_model.safetensors
      training_info.json
      eval_report.json

推論時
  ベースモデル + adapter を合成して使う

戻したい場合
  adapter を外すだけ
  ベースモデルは無傷
方式 特徴 実運用での意味
LoRA 一部の重み差分だけを学習 軽く、安全に切替可能
QLoRA 4bit量子化したモデルにLoRAを適用 少ないVRAMで14B〜27B級を扱いやすい
Full Fine-Tuning 全重みを更新 強力だが高コスト。個人・小規模GPUでは重い

6. 推奨アーキテクチャ

PDFと会話を一定期間溜め込み、Admin画面からオンデマンド実行する構成が扱いやすいです。

[累積フェーズ]
  ├ PDF ingestion
  │   └ chunks テーブル
  │
  ├ web_knowledge
  │   └ 信頼度フィルタ済み知識
  │
  └ messages
      └ 過去会話ログ / 修正済みQ&A


[Admin実行フェーズ]
  ├ /admin/finetune/dataset
  │   ├ CPT用 raw text JSONL
  │   └ SFT用 Q/A JSONL
  │
  ├ /admin/finetune/start
  │   └ Unsloth + QLoRA 学習開始
  │
  ├ /admin/finetune/status
  │   └ log tail / loss / GPU使用率
  │
  ├ /admin/finetune/eval
  │   └ before / after 比較
  │
  └ /admin/finetune/promote
      └ adapter を本番 profile に昇格

7. 実行フロー

1
データ蓄積

PDF、仕様書、会話ログ、修正済みQ&Aを一定期間ためる。

2
データ整形

CPT用raw text、SFT用messages JSONLへ変換する。

3
QLoRA学習

まず14BでCPT。効果確認後にSFTを追加する。

4
評価

RAG OFF / RAG ONの両方でbefore-after比較する。

5
手動promote

評価レポートを見てから本番adapterとして有効化する。

最初は 14B + CPTのみ が安全です。 いきなりCPT+SFTや27Bに行くと、失敗時に原因を切り分けにくくなります。

8. 学習データの設計

データ 使い方 期待効果 注意点
PDF chunks CPT 専門知識、用語、業務文脈が染みる 重複除去、古い資料の除外が必要
社内Wiki / Markdown CPT 社内標準の説明に強くなる 誤情報を混ぜるとそのまま癖になる
過去会話ログ SFT 回答スタイル、手順、説明粒度が揃う 全件投入は危険。高品質データだけ使う
訂正履歴 SFT 過去の間違いを再発しにくくする 正しい回答を明示した形式にする
web_knowledge CPT または RAG 一般知識の補強 鮮度が落ちる情報はRAG優先

9. 評価しないファインチューニングは危険

ファインチューニングは「賢くなるボタン」ではありません。 正確には、モデルに癖をつける作業です。 良い癖もつきますが、悪い癖もつきます。

[
  {
    "question": "Kaleidoのハイブリッド検索とは?",
    "expected_keywords": ["BM25", "ベクトル検索", "再ランキング"]
  },
  {
    "question": "URLを回答に含める条件は?",
    "expected_keywords": ["実在確認", "未確認なら出さない"]
  },
  {
    "question": "Linuxサービスが起動しない場合の確認手順は?",
    "expected_keywords": ["systemctl status", "journalctl", "権限", "パス"]
  }
]
評価項目 確認内容
専門知識 PDF由来の用語や設計意図を正しく説明できるか
汎用能力 数学、コード、一般会話が劣化していないか
指示追従 JSON出力、箇条書き、文字数制限などを守れるか
安全性 拒否すべき内容を安易に答えないか
URLハルシネーション 存在確認なしにURLを捏造しないか
RAG活用 contextを無視せず、根拠として正しく使えるか
もっとも怖いのは、明らかな故障ではなく silent degradation、つまり静かに品質が落ちることです。 そのため、本番反映は必ず手動promote + 評価レポート確認にします。

10. 推奨する初期構成

MVP

まず作るもの

  • PDF chunks → CPT JSONL出力
  • Adminの学習実行ボタン
  • Unsloth QLoRA学習スクリプト
  • adapter保存ディレクトリ
  • 簡易evalレポート
推奨設定

最初の学習条件

  • base model:14Bクラス
  • 学習:CPTのみ
  • LoRA rank:8〜16
  • epoch:1
  • promote:手動
推奨ステップ:
1. 14BでCPTのみ実行
2. RAG OFFで知識の焼き込み効果を見る
3. 問題なければ良質Q&AでSFT追加
4. RAG ONで根拠つき回答の品質を見る
5. adapterを手動で本番反映
6. 運用が固まってから27B級へ拡張

11. 最終結論

RAGは「資料を参照する力」です。 ファインチューニングは「その分野に馴染む力」です。

どちらか一方では不十分です。 実運用で強いのは、次の組み合わせです。

LLM知識体質改善の完成形

  CPT
    → PDF・仕様書・社内用語を染み込ませる

  SFT
    → 会話スタイル・回答手順・業務ルールを整える

  RAG
    → 出典・最新情報・顧客別データを補う

  LoRA / QLoRA
    → 元モデルを壊さず、安全に差し替える

  Eval
    → 静かな品質劣化を検出する
結論: 「RAGに頼りすぎない」とは、RAGを捨てることではありません。 モデル自身を業務文脈に慣れさせ、RAGは根拠確認に集中させることです。 これが、壊れにくく、説明可能で、運用しやすいLLM強化の基本方針です。

Tags:

No responses yet

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


Latest Comments

PAGE TOP