情報量に飲まれない学習設計 — RAG/LLMチューニングを"深く3つ"に絞り、測るまでを1単位にする
はじめに
この分野は、学ぶべきツールと手法が多すぎる。評価、検索、リランク、ファインチューニング、可観測性——それぞれに定番ライブラリが何本もあり、毎週のように新しい名前が流れてくる。全部を追えば、どれも中途半端に終わる。だから学ぶ前に、何を捨てて何を深掘るかを先に設計した。この記事は、その学習ロードマップそのものの設計記録だ。
題材は、個人で運用している RAG(過去の記録を意味で検索して引き出す、外付けの長期記憶のような仕組み)だ。RAG そのものの前提は、この記事へ譲る。
AI に5回訂正された夜 — 個人 RAG を5年付き合える相棒にする設計思想
この記事は、「壊れないRAG」「汚れないRAG」と対になる、**「測れるRAG」**の話でもある。壊れず汚れない土台の上で、では自分の技能をどう測って伸ばすか——その設計だ。要点を先に置く。
- ツールを広く浅く触らない。深く3つ(評価・検索・ファインチューニング)に絞り、残りは「知るだけ」に留める
- 「読んだ」で終わらせない。自分の実データに接続して測るまでを、学習の最小単位とする
- 評価(測る手段)を最初に立てる。測れなければ、検索やファインチューニングの改善が「良くなった気がする」で終わるから
なぜ「深く3つ」に絞ったのか
いちばん避けたかったのは、20個のツールを浅く触って「一通り知っている」つもりになることだ。陥りやすい罠で、触った数だけ増えて、測れる腕は一つも増えない。
そこで、層ごとに定番ツールを並べ、自分がどこを持っていてどこが薄いかを棚卸しした。すると、埋めるべきは「ツールの数」ではなく、測る・比べる・データを作るという三つの薄い脚だと分かった。絞り込みはこうなった。
RAG/LLM チューニングの学習範囲
│
┌─────────┬───────────┼───────────┬─────────────┐
▼ ▼ ▼ ▼ ▼
評価(E) 検索(R) FT(F) オーケスト …その他多数
│ │ │ レーション(O) (浅く触らない)
═══╪══════════╪══════════╪═══ │
深く掘る3本の柱(E→R→F) 知るだけ
│ (過投資しない)
└──▶ 各柱は「実データで測るまで」を1単位(次節)
深く掘るのは評価・検索・ファインチューニングの3本。オーケストレーション(複数の部品をつなぐ枠組み)は「読めて語れる」程度でよいと割り切った。理由は後述するが、その部分は既に自作で概念を持っているので、標準の枠組みは”翻訳”できれば足りるからだ。
保有と欠けの棚卸し(現在地マップ)
絞り込みの根拠にした棚卸しを、そのまま載せる。自己採点ではなく、「どの層に何があり、何が薄いか」を淡々と並べた設計用の地図だ。
| 層 | 標準ツール | 自分の現状 | 厚み |
|---|---|---|---|
| 評価 | Ragas / DeepEval | 関連度の判定器を自作(後述) | 薄い(標準化・自動回帰が未) |
| 可観測性 | LangSmith / Langfuse | ログは自作、トレース基盤は未 | 薄い |
| 検索・リランク | pgvector / 各種 reranker | ハイブリッド検索+リランクを実運用 | 中核は保有(横比較が未) |
| つなぎ(O) | LangChain / LlamaIndex | 独自に実装済み | 概念は保有(標準語彙が未) |
| 基盤・FT | QLoRA / LoRA | 個人RAG向けに訓練・投入済 | 実物あり(データ設計と評価が薄い) |
薄いのは三か所——(A) 測定の標準化・自動化、(B) 検索方式の横比較、(C) ファインチューニングのデータ設計。この三つを埋める順に、学習トラックを並べた。
学習の型 ― 「測るまで」を1単位にする
各トラックに共通の進め方を、先に一つの型として固定した。ここが設計の肝だ。
① 読む(公式Doc・概念)
│
▼
② 自分の実データで動かす ◀─────────┐
│ (トイデータ/チュートリアルで終えない)
▼ │ 測れない=まだ動かせていない
③ 測る(正解付きデータで数値を出す)─┘
│ ここに到達して初めて「理解した」と称してよい
▼
④ 記事化(学びを固定+ポートフォリオ)
「①読んだ」を「理解した」と呼ばない。③自分の実データで測るまで到達して初めて一単位が完了、とした。チュートリアルのサンプルデータで動いても、それは「動かせた」ではなく「なぞれた」に過ぎない。測って数字が出せなければ②に戻る、という戻りエッジを型に組み込んである。個人RAGの成功/失敗を「対応して成功するまで」を1セットで記録する規律と、同じ考え方だ。
なぜ評価を、いちばん最初に置くのか
三本の柱には順序を付けた。評価(E)→ 検索(R)→ ファインチューニング(F)。評価を先頭にしたのには、はっきりした理由がある。
測る物差しが無いまま検索を変えても、ファインチューニングをやり直しても、良し悪しは「なんとなく良くなった気がする」でしか言えない。実際、検索の改善は「測る」を先に立てたからこそ数字で語れた。ハイブリッド検索を入れて、肝心なときの想起率(recall)を 0.2 から 1.0 まで動かした——この「0.2→1.0」は物差しがあって初めて言える数字だ。その物差しの立て方はこの記事に書いた。
ベクトル検索だけのRAGは「肝心なときに思い出さない」— ハイブリッド検索+測定で recall を 0.2→1.0 にした話
E: 評価基盤(物差し)
│ これが立たないと ↓ の良否が数字で言えない
┌────┴────┐
▼ ▼
R: 検索 F: ファインチューニング
(比べる) (鍛える)
物差し無しの R や F は、賭けと変わらない。だから評価を最初に据えた。ここが今いちばん薄く、そして埋めれば残り全部の判断が数字に変わる、最大の投資対効果がある場所だ。
三本の柱の中身と、「知るだけ」のO
各トラックの「学ぶ概念/作る成果物/完了条件」を並べる。完了条件は、すべて数値や動く成果物で定義した。
| 柱 | 学ぶ概念(初出を噛み砕く) | 作る成果物 | 完了条件 |
|---|---|---|---|
| E 評価 | Faithfulness(答えが根拠に忠実か=作り話をしていないか)、文脈の再現率/適合率、LLM-as-judge(LLM自身に採点させる)、回帰テスト | 正解付きデータ(golden set)に Ragas(評価用ライブラリ)を接続した評価の土台+変更前後を自動比較する回帰スイート。Langfuse(自己ホストで動く、処理を可視化する基盤)でトレースを見える化 | ハイブリッド検索の係数やリランクを替えたとき、良否を数値で判定できる |
| R 検索 | 密ベクトル(意味の近さで引く)/疎ベクトル(語の一致で引く)/ハイブリッド、reranker(取得結果を関連順に並べ直す器)、chunking(文書の刻み方)、クエリ変換 | pgvector(Postgres上でベクトル検索する拡張)版の検索を実装し、既存版と同一データで横比較(想起率・適合率・速度) | 「どちらの方式をなぜ選ぶか」を、測った数字で語れる |
| F ファインチューニング | データセット設計(多様性・リーク防止)、評価用の分割、LoRA/QLoRA(省メモリで微調整する手法) | データを意図して設計し直して再訓練し、訓練に使わないデータ(hold-out)で評価・比較 | 「なぜこのデータ構成か・精度がどう動いたか」を数字で説明できる |
E で自作した関連度の判定器と、F で訓練した微調整モデルは、既に手元にある実物だ。それぞれの実装記事へ譲る。
RAGに「関係あるか」を見分ける小さな判定器を置く — 取得したものを、全部は渡さない
RTX 2070ノートだけで個人RAGをファインチューニングした話
E の狙いは、この自作の判定器を、Ragas という標準の物差しに接続・置換することにある。自分で発明した勘を、他人と比較できる共通の目盛りに載せ替える、という作業だ。
一方、四つ目のO(オーケストレーション)は深追いしない。独自に組んだ活性化層やつなぎの層で、概念そのものは既に手の内にある。
AIに毎ターン「今、思い出すべきこと」を差し込む — 個人RAGの活性化層
だからOは、LangChain などの標準の枠組みを「読めて、自作の仕組みをその語彙で説明できる」ところまでで十分とした。小さく一本だけ写経して、それ以上は投資しない。
先回りで潰すアンチパターン
この設計は、裏返せば「やってしまいがちな失敗」を先に列挙し、それぞれに対策を紐づけたものだ。
- ツールを広く浅く触る:20個を触って一つも測れない。→ だから深く3つに絞り、Oは知るだけにした。
- 測らずに改善する:「良くなった気がする」で止まる。→ だから評価(E)を最初に立てる。
- トイデータで満足する:チュートリアルのサンプルで完結する。→ だから「自分の実データに接続して測るまで」を1単位にした。
- 枠組みに過投資する:つなぎのライブラリを極めようとする。→ 概念は自作で持っているので、標準語彙へ翻訳できれば足りる。
四つとも、知識ではなく設計で潰す種類の失敗だ。学び始める前に地図の上で潰しておけば、走り出してから溶かす時間が減る。
学びも、測って初めて「進んだ」と言える
このロードマップの背骨は一つだ。「読んだ」を「できる」と混同せず、自分の実データで測るところまでを一単位にする。 そして測る物差し(評価)を、何よりも先に立てる。物差しさえ立てば、検索もファインチューニングも「賭け」から「測定」に変わり、伸びを数字で確かめながら進める。
これは、記憶を壊れないように保ち、汚れないように正す話と、同じ思想の三本目だ。壊れず・汚れず・測れる——その三つが揃って初めて、外付けの記憶は「ただ増える」ものから「鍛えられる」ものになる。壊れない側と汚れない側は、対になる二本の記事に書いた。
AWS S3 + restic で相棒の脳を暗号化オフサイトバックアップ — 記憶を”平文のままクラウドに上げず”に遠隔退避する
RAGに溜めた誤った教訓を、あとから撤回する仕組みを作った — 相棒を毎ターン歪める汚染を自動で消す
そして、これらを健全なまま保ち続けるための毎週の点検の仕組みは、この記事に書いた。