知識を蓄えることのできる、初めてのローカルLLM
取り敢えず、192.168.0.8 の c:\Users\tomoi\rag_projectの中身でやったこと一覧
Ollamaは、どうやって知識を蓄えることができますか?
Ollama自体(正確にはOllama上で動くLLM)は「知識を蓄える(=記憶を永続化する)」機能は原則持っていません。理由と補足は以下の通りです:
🔍 なぜOllama(+LLM)は知識を蓄えないのか?
-
Ollamaが実行するのは事前学習済みの言語モデル(例:LLaMA 3やMistral)であり、内部に知識を書き込む(=学習させ直す)機能はない。
-
一時的な文脈(会話履歴など)は保持できるが、Ollama再起動や会話のリセットで消える。
✅ 知識を“蓄える”ように使いたい場合の方法
方法1: ベクトルDB+RAGで「覚えさせる」
RAG (Retrieval-Augmented Generation) という手法を使うと、ローカルLLMでも“知識を覚えたように使う”ことができます。
構成例:
要素 | 内容 |
---|---|
LLM | Ollama + llama3/mistral |
知識DB | ベクトルDB(例えば Chroma , Weaviate , FAISS など) |
統合フレームワーク | LangChain , LlamaIndex など |
処理内容 | PDF, テキスト, Web等 → 分割 → ベクトル化 → 質問に応じて該当知識を検索 → LLMに渡す |
📌 つまり、「知識」を蓄えるのはLLMではなく、外部のベクトルデータベースです。
方法2: チューニング(学習)で知識そのものを埋め込む
これは本当の意味での「知識の蓄積」になりますが、難易度が高くなります。
方法
方法名 | 内容 | 難易度 |
---|---|---|
LoRA(Low-Rank Adaptation) | 特定の知識をモデルに微調整として埋め込む | 中〜上 |
Full fine-tuning | モデル全体を再学習 | 非現実的(高コスト・GPU必須) |
🧠「覚えているように見せる」簡易テク
-
LangChainやLlamaIndexで、テキストやPDFファイルを渡すだけで“知識として答える”ように見せられる。
-
これにより、対話履歴を記憶しているように錯覚させることも可能です。
現在、Ollamaが動いていますが、知識を“蓄える”ようにしたいですが、その前にRAGとチューニングの違いについて教えて下さい
はい、非常に重要な質問です。
以下に「RAG」と「チューニング(LoRAなど)」の違いと使い分けを、わかりやすく解説します。
🧠 RAG(Retrieval-Augmented Generation)とは?
▶ 特徴
-
LLMの外部に知識を持たせる。
-
質問に応じて必要な情報を検索してLLMに与える。
-
モデル自体は一切変更しない。
▶ イメージ
LLMが「図書館で調べながら答えてくれる」ような使い方
▶ メリット
-
高速かつ安全(モデル改変なし)
-
データの更新が簡単(PDF差し替えなど)
-
ローカルでも構築しやすい
▶ デメリット
-
検索精度に依存する(ベクトル検索や分割方法が重要)
-
外部検索結果に基づくため、「推論能力」に制限あり
🔧 チューニング(Fine-tuning / LoRA)とは?
▶ 特徴
-
LLMのパラメータ自体を再学習する。
-
モデル内部に知識を埋め込む。
-
LoRA(Low-Rank Adaptation)を使うと軽量に実現可能。
▶ イメージ
LLMが「訓練して記憶を更新した頭脳を持っている」ような使い方
▶ メリット
-
対話スタイルやドメイン知識を完全に内面化できる
-
オフラインでも即答できる(検索なし)
▶ デメリット
-
訓練が難しい(GPU・スクリプト・パラメータ設計)
-
データの入れ替えが容易でない(再チューニングが必要)
-
学習エラーで性能が落ちることもある
🔄 RAG vs チューニング 比較表
比較項目 | RAG | チューニング(LoRA含む) |
---|---|---|
知識の格納先 | 外部DB(検索) | LLM本体(学習) |
導入の簡単さ | ◎ 簡単 | △ 難易度高 |
データ更新 | ◎ 簡単(ファイル差替え) | ✕ 毎回再学習が必要 |
実行速度 | ◯(検索+推論) | ◎(即応) |
精度の安定性 | ◯ 安定 | △ 調整による |
用途 | FAQ・文書検索 | 特定業務への最適化 |
🎯 どちらを使うべきか?
目的 | 選択すべき手法 |
---|---|
社内文書を検索しながら答えさせたい | ✅ RAG |
マニュアルからFAQを生成させたい | ✅ RAG |
専門用語に強いAI秘書を作りたい | ✅ チューニング(LoRA) |
自分の書き癖や口調を覚えさせたい | ✅ チューニング(LoRA) |
まずは、「Ollama + RAG(ローカルでの知識追加)」の構築方法を教えて下さい。なおOllamaはWindows11で動いています
Windows 11 上で動いている Ollama に ローカル知識を与える(RAG構成) ためには、以下のステップを踏むのが最も簡単かつ安定です。
✅ 目標
「PDFやテキストをローカルに保存 → 質問 → Ollamaがその内容に基づいて答える」構成を作る。
🛠 必要なツール構成
ツール | 目的 |
---|---|
Ollama | LLM本体(例:llama3) |
LangChain or LlamaIndex | チャットの実行+外部知識連携 |
ベクトルDB | 知識の保存・検索(Chromaを使用) |
Python | スクリプト処理 |
🪜 手順一覧
① Python + ライブラリをインストール
-
Python 3.10以上をインストール(公式サイト)
-
以下をインストール:
③ 知識を追加する方法
-
docs/example.txt
に内容を書いて保存(例:社内マニュアル、FAQなど) -
PDFなら
PyMuPDF
を使って読み込めます: