📎
RAG — モデルを再訓練せず「参考資料」を添付する方法
検索(Retrieval)+ 生成(Generation)— モデルの重みは変えず外部知識をプロンプトに添付
ファインチューニング vs RAG — 根本的な違い
ファインチューニング:モデルの重みを変える(頭の中の知識を変える)
RAG:重みは変えない(参考資料を渡すだけ)
例え:ファインチューニング=医者に新しい病気を教える。RAG=医者に患者カルテを渡す。
仕組み
ユーザーが質問→DBから関連文書を検索→プロンプトに添付→モデルが文書を参照して回答生成。
モデル重み変更:ゼロ。
最もシンプルなRAGコード
qa = pipeline("question-answering")
context = "年次休暇は15日。半休可能。"
result = qa(question="休暇は何日?", context=context)
# → {'answer': '15日', 'score': 0.98}
これがRAG。訓練なし。質問と一緒に参考資料を渡しただけ。
キーコンセプト
1
ユーザーが質問する
2
文書DBから関連文書を検索(Retrieval)— ベクトル類似度ベース
3
検索された文書をプロンプトに添付 — 「この参考資料をもとに答えて」
4
model(プロンプト+参考資料) → 回答生成(Generation)
5
モデル重みは1つも変わっていない — データ更新=文書を差し替えるだけ
ユースケース
社内文書QA — 社内マニュアル・ポリシー文書で質疑応答ボット構築
最新情報反映 — モデル再訓練なしで文書更新だけで最新回答
ハルシネーション防止 — 出典のある文書ベース回答で虚偽生成を削減