はじめに——「クラウドにデータを出せない」企業のためのAI活用
ChatGPTやClaudeは強力ですが、使えない場面があります。
顧客の個人情報を扱う士業事務所、患者データを参照したい医療機関、財務データをAIに読ませたい会計事務所、営業秘密を含む社内文書を検索したい製造業——こうした企業にとって、「クラウドに一切データを送信しない」AI環境は切実なニーズです。
当サイトではローカルLLM入門でモデルのインストールと基本操作を、RAG実践ガイドでRAGの仕組みと活用法を個別に解説してきました。また、ファインチューニング入門やローカルLLMのAPIサーバー化も扱っています。
しかし、「ローカルLLMとRAGを1台のPCで統合し、社内文書を完全オフラインで検索できる環境をゼロから構築する」手順を1記事で完結させたガイドがありませんでした。
この記事では、その統合環境——私たちが「鎖国RAG」と呼ぶ、外部にデータを一切出さない完全オフラインRAG環境——の構築手順をステップバイステップで解説します。
💡 この記事を読むと分かること
・完全オフラインRAG環境の全体アーキテクチャ
・Ollama(ローカルLLMエンジン)のインストールとモデル選定
・Embeddingモデルの導入とベクトルDBの構築
・AnythingLLM(GUI付きRAGプラットフォーム)の導入と設定
・Difyセルフホスト版での代替構築手順
・社内文書の取り込みとRAG検索の実行・精度チューニング
・PCスペック別の推奨構成(8GB / 16GB / 32GB以上)
「鎖国RAG」のアーキテクチャ——何が必要で、データはどう流れるか
全体構成図
完全オフラインRAG環境は、以下の4つのコンポーネントで構成されます。すべてが1台のPC内で動作し、外部への通信は一切発生しません。
| コンポーネント | 役割 | 使用ツール |
|---|---|---|
| ①ローカルLLM | 自然言語の理解・生成(質問への回答生成) | Ollama + Llama 3.2 / Qwen 2.5 / Gemma 3 等 |
| ②Embeddingモデル | 文書をベクトル(数値の配列)に変換 | Ollama + nomic-embed-text / bge-m3 |
| ③ベクトルDB | ベクトル化された文書を保存・類似検索 | LanceDB(AnythingLLM内蔵)/ ChromaDB |
| ④RAGフロントエンド | ユーザーインターフェース+RAGパイプラインの管理 | AnythingLLM または Difyセルフホスト |
データの流れ
文書登録時:社内文書(PDF・Word・テキスト等)→ チャンク分割(500トークン単位に分割)→ Embeddingモデルでベクトル化 → ベクトルDBに保存
質問時:ユーザーの質問 → Embeddingモデルでベクトル化 → ベクトルDBで類似文書チャンクを検索(上位5〜7件)→ 検索結果をコンテキストとしてLLMに渡す → LLMが回答を生成
重要なポイント:このすべてのプロセスが1台のPC内で完結します。インターネット接続は、最初のモデルダウンロード時のみ必要です。一度モデルをダウンロードすれば、以降は完全オフラインで動作します。
PCスペック別の推奨構成
ローカルLLMの動作には一定のハードウェア性能が必要です。以下に、PCスペック別の推奨モデルと期待される性能をまとめます。
| スペック | 推奨LLMモデル | 期待される性能 | 向いている用途 |
|---|---|---|---|
| 8GB RAM (GPU なし) | Llama 3.2 3B(Q4量子化) | やや遅い(CPU推論)。簡単なQ&Aは対応可能 | 個人利用、検証・テスト |
| 16GB RAM (GPU 6-8GB VRAM) | Qwen 2.5 7B / Llama 3.1 8B(Q4_K_M) | 実用的な速度。日本語でのQ&Aに十分対応 | 小規模チーム(3-5人)の社内文書検索 |
| 32GB RAM (GPU 12-16GB VRAM) | Qwen 3 14B / Gemma 3 12B | 快適な応答速度。複雑な質問にも対応 | 部門単位での業務利用 |
| 64GB+ RAM (GPU 24GB VRAM) | Command R 35B / Qwen 3 30B-A3B | 高速で高品質。引用元の明示も可能 | 組織全体での本格運用 |
| Apple Silicon (M3/M4 32GB+) | Gemma 3 12B〜27B | 統合メモリでGPU相当の性能。省電力 | 個人〜小規模チーム |
💡 最初のおすすめ構成
初めてローカルRAGを構築する方は、Qwen 2.5 7B(チャットモデル)+ nomic-embed-text(Embeddingモデル)+ AnythingLLMの組み合わせがおすすめです。16GB RAMのPCで実用的に動作し、日本語にも対応しています。
ステップ1:Ollamaのインストールとモデルの導入
Ollamaとは
Ollamaは、ローカルマシン上でオープンソースのLLMを簡単に実行できるCLIツールです。Dockerがコンテナを管理するように、Ollamaはモデルのダウンロード・管理・推論を一元的に扱います。2026年時点でローカルLLMのデファクトスタンダードとなっています。詳しくはローカルLLM入門をご覧ください。
インストール手順
macOS / Linux:
curl -fsSL https://ollama.com/install.sh | sh
Windows:
ollama.com/downloadからインストーラーをダウンロードして実行します。
インストール確認:
ollama –version
チャットモデルの導入
# 16GB RAM環境の場合(推奨)
ollama pull qwen2.5:7b
# 8GB RAM環境の場合(軽量版)
ollama pull llama3.2:3b
# 32GB+ RAM / Apple Silicon 64GB環境の場合(高性能版)
ollama pull gemma3:12b
Embeddingモデルの導入
RAGにはEmbeddingモデル(文書をベクトルに変換するモデル)が別途必要です。
# 英語中心の文書の場合(最も広く使われている)
ollama pull nomic-embed-text
# 日本語を含む多言語文書の場合
ollama pull bge-m3
動作確認
# Ollamaの起動(バックグラウンドで実行)
ollama serve
# モデルの動作確認
ollama run qwen2.5:7b
>>> こんにちは。あなたは社内文書検索AIです。自己紹介してください。
応答が返ってくれば、LLMの導入は完了です。Ctrl+Dで対話を終了します。
ステップ2:AnythingLLMの導入とOllama連携
AnythingLLMとは
AnythingLLMは、MintplexLabs社が開発するオープンソース(MITライセンス)のRAGプラットフォームです。LLM接続、ドキュメントアップロード、Embedding、ベクトルDB、チャットインターフェースのすべてを1つのアプリケーションで提供します。ベクトルDBとしてLanceDBを内蔵しているため、別途データベースを立てる必要がありません。
インストール手順
方法A:デスクトップアプリ(最も簡単・個人利用向け)
anythingllm.com/desktopからOS別のインストーラーをダウンロードして実行するだけです。
方法B:Docker(チーム利用・マルチユーザー向け)
# 作業ディレクトリの作成
mkdir anythingllm-setup && cd anythingllm-setup
touch .env
# Dockerで起動(ストレージの永続化付き)
docker run -d \
–name anythingllm \
-p 3001:3001 \
-v $(pwd)/storage:/app/server/storage \
-v $(pwd)/.env:/app/server/.env \
–add-host=host.docker.internal:host-gateway \
mintplexlabs/anythingllm
--add-host=host.docker.internal:host-gateway はDockerコンテナからホストマシンのOllamaに接続するために必要です。
Ollama連携の設定
AnythingLLMを起動したら、以下の設定を行います。
LLMプロバイダーの設定:
- Settings(設定)を開く
- LLM Preference(LLMプロバイダー)で「Ollama」を選択
- Ollama URL:
http://127.0.0.1:11434(デフォルト) - モデル: 先ほどダウンロードしたモデル(例: qwen2.5:7b)を選択
- 保存
Embeddingプロバイダーの設定:
- Settings → Embedding Preference
- 「Ollama」を選択
- Embeddingモデル:
nomic-embed-text(またはbge-m3)を選択 - 保存
ベクトルDBの設定:
デフォルトでLanceDB(内蔵)が使用されます。変更不要です。外部のChromaDBやQdrantを使いたい場合は、Settings → Vector Database から切り替え可能です。
ステップ3:社内文書の取り込みとRAG検索の実行
ワークスペースの作成
AnythingLLMでは「ワークスペース」単位で文書を管理します。用途別にワークスペースを分けることで、検索精度を向上させ、アクセス管理を容易にします。
- 「法務文書」ワークスペース——契約書、規約、法令関連
- 「人事・労務」ワークスペース——就業規則、給与規程、評価基準
- 「技術文書」ワークスペース——仕様書、マニュアル、議事録
文書のアップロードと埋め込み
- 作成したワークスペースを開く
- ドキュメント管理エリア(上部のアイコンまたは設定内)でファイルをアップロード
- 対応形式: PDF、Word(.docx)、テキスト(.txt)、Markdown(.md)、Excel(.xlsx)、CSV
- アップロード後、「Embed」(埋め込み)をクリック
- AnythingLLMが自動的にチャンク分割→Embeddingモデルでベクトル化→ベクトルDBに保存を実行
RAG検索の実行
チャット画面で質問を入力するだけです。
ユーザー: 当社の有給休暇の付与日数は?
AI: 就業規則第XX条によると、入社6ヶ月経過後に10日が付与されます。
勤続年数に応じて増加し、6年6ヶ月以上で最大20日となります。
[参照元: 就業規則_2026年版.pdf – p.15]
RAGモードでは、LLM は自分の学習データではなく、アップロードした文書の中から関連する情報を検索し、それに基づいて回答を生成します。これにより、ハルシネーション(事実に反する回答の生成)が大幅に抑制されます。
RAG精度を向上させるチューニング
RAG環境を構築しただけでは、回答精度が十分でない場合があります。以下のチューニングポイントで精度を向上させましょう。
チューニング1:コンテキスト長の拡張
Ollamaのデフォルトのコンテキスト長は2,048トークンです。RAGでは検索結果をコンテキストとして渡すため、これでは不足します。最低8,192トークン、理想的には16,000トークン以上に拡張してください。
AnythingLLMの設定画面、またはOllamaのModelfileでnum_ctxパラメータを調整できます。
チューニング2:チャンクサイズと重複の調整
文書の分割(チャンキング)の設定は検索精度に大きく影響します。
| パラメータ | 推奨値 | 説明 |
|---|---|---|
| チャンクサイズ | 500トークン | 1つのチャンク(文書の断片)のサイズ。大きすぎるとノイズが増え、小さすぎると文脈が失われる |
| オーバーラップ | 10〜20%(50〜100トークン) | 前後のチャンクと重複させる割合。チャンクの境界で情報が切れるのを防ぐ |
| 取得チャンク数 | 5〜7件 | 質問に対して取得する関連チャンクの数。多すぎるとノイズが増える |
チューニング3:ハルシネーション対策のプロンプト設定
AnythingLLMのワークスペース設定で、システムプロンプト(AIの行動指示)を設定できます。以下のような指示を設定することで、ハルシネーションを抑制できます。
あなたは社内文書検索アシスタントです。
回答は必ず提供されたコンテキスト(検索結果)に基づいてください。
コンテキストに情報がない場合は「この質問に対する情報は見つかりませんでした」と正直に回答してください。
推測や一般的な知識に基づく回答はしないでください。
回答には、参照した文書名とページ番号を含めてください。
チューニング4:多言語文書への対応
日本語の社内文書を扱う場合、Embeddingモデルの選択が重要です。nomic-embed-textは英語中心ですが、bge-m3は多言語対応(日本語含む)で、日本語文書の検索精度が向上します。
代替構成:Difyセルフホスト版での構築
AnythingLLMの代わりに、Difyのセルフホスト版を使う選択肢もあります。特にワークフローの自動化やAPI公開が必要な場合に適しています。
Difyセルフホスト版の特徴
- オープンソース(Apache 2.0ライセンス)
- ワークフロービルダー:ノーコードでRAGパイプラインやエージェントワークフローを構築可能
- API公開:構築したRAGアプリを社内の他のシステムからAPIで呼び出し可能
- マルチモデル対応:Ollama、OpenAI、Anthropic等、複数のLLMプロバイダーを切り替え可能
- 完全オフライン:セルフホスト版ではすべてが自社インフラ内で完結
Docker Composeでの導入
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env
docker compose up -d
起動後、http://localhost/installにアクセスして初期設定を行います。
AnythingLLM vs Difyの使い分け
| 比較項目 | AnythingLLM | Difyセルフホスト |
|---|---|---|
| セットアップの簡単さ | ★★★(デスクトップアプリは即使える) | ★★(Docker Compose必須) |
| RAG特化度 | ★★★(RAGに特化した設計) | ★★(RAGは機能の一部) |
| ワークフロー自動化 | ★(基本的なチャットのみ) | ★★★(ノーコードワークフロービルダー) |
| API公開 | ★★(APIあり) | ★★★(充実したAPI+SDK) |
| マルチユーザー | ★★(Docker版で対応) | ★★★(ネイティブ対応) |
| リソース消費 | 軽量(約2GB RAM) | やや重い(複数コンテナ) |
| おすすめ | 個人〜小規模チーム、RAG主目的 | チーム利用、ワークフロー自動化、API連携が必要 |
💡 迷ったらAnythingLLMから始める
最初の構築にはAnythingLLMのデスクトップアプリが最も簡単です。RAGの基本を理解し、要件が明確になった段階でDifyへの移行を検討するアプローチが堅実です。
セキュリティ上の注意点——「鎖国」を維持するために
完全オフラインRAG環境を構築しても、運用方法を間違えるとデータが外部に漏れるリスクがあります。
注意点1:Ollamaのネットワークバインディング
Ollamaのデフォルト設定ではlocalhost(127.0.0.1)にのみバインドされます。絶対に0.0.0.0にバインドしないでください。0.0.0.0にバインドすると、同じネットワーク上の全デバイスからOllama APIに認証なしでアクセスできてしまいます。
チーム利用で他のPCからアクセスさせたい場合は、特定のIPアドレスのみを許可するファイアウォールルールを設定してください。
注意点2:モデルのダウンロード後のオフライン化
モデルのダウンロードにはインターネット接続が必要ですが、ダウンロード完了後はネットワークケーブルを抜くか、ファイアウォールでOllamaの外部通信をブロックすることで完全オフライン化が可能です。
注意点3:AnythingLLM/Difyのテレメトリ
一部のオープンソースツールは利用状況のテレメトリ(匿名使用統計)を外部に送信する場合があります。完全オフライン環境では、設定でテレメトリを無効化するか、ファイアウォールで外部送信をブロックしてください。
注意点4:データのバックアップと暗号化
ベクトルDBに保存されたデータは、元の文書の内容を含んでいます。ベクトルDB のデータディレクトリにはディスク暗号化(macOS FileVault / Windows BitLocker)を適用し、バックアップにも同様の暗号化を施してください。
よくある質問(Q&A)
Q1. ローカルLLMの回答品質はChatGPTやClaudeと比べてどうですか?
率直に言って、最先端のクラウドLLM(GPT-4o、Claude Opus等)と比較すると、ローカルで動作する7〜14Bパラメータのモデルは汎用的な回答品質で劣ります。しかし、RAGと組み合わせることで、「特定の社内文書に関するQ&A」という限定されたタスクでは実用的な精度を達成できます。RAGが正しく関連文書を取得していれば、LLMは取得された情報を整理して回答するだけでよいため、モデルサイズの差が緩和されます。
Q2. GPU がないPCでも動作しますか?
はい、CPU のみでも動作します。ただし、推論速度はGPUに比べて大幅に遅くなります。3Bパラメータの軽量モデル(Llama 3.2 3B等)であれば、8GB RAMのPCでもCPU推論で実用可能です。快適に使いたい場合は、NVIDIA GPU(6GB VRAM以上)またはApple Silicon Mac(M1以降)を推奨します。
Q3. 日本語の文書はうまく検索できますか?
Embeddingモデルの選択が重要です。多言語対応のbge-m3を使用することで、日本語文書の検索精度が向上します。チャットモデルも、Qwen 2.5やGemma 3のような多言語対応モデルを選ぶと、日本語での回答品質が向上します。ただし、英語文書に比べると精度がやや落ちる傾向があるため、日本語専用のEmbeddingモデルの活用も検討してください。
Q4. 何件くらいの文書を扱えますか?
ベクトルDBのストレージ容量とRAM に依存しますが、数千件のPDFでも問題なく動作します。AnythingLLMのLanceDBはディスクベースで動作するため、RAMをあまり消費しません。ただし、文書数が増えるとEmbedding(ベクトル化)処理に時間がかかるため、初回の取り込みは事前に計画してください。
Q5. クラウドLLMとローカルLLMを併用する「ハイブリッド」構成は可能ですか?
はい、AnythingLLMはワークスペースごとに異なるLLMプロバイダーを設定できます。機密文書用のワークスペースはOllama(ローカル)、一般的な調査用のワークスペースはOpenAI API(クラウド)、というハイブリッド構成が可能です。データの機密度に応じて使い分けることで、品質とプライバシーを両立できます。
まとめ——「鎖国」でもAIは使える
クラウドにデータを出せない企業がAIを活用できないわけではありません。OllamaとAnythingLLM(またはDify)を組み合わせれば、1台のPCで完全にオフラインのRAG環境を構築できます。
1. まず動かしてみる。Ollamaのインストール→モデルのダウンロード→AnythingLLMデスクトップアプリのインストール→テスト文書のアップロード——ここまで1時間程度で完了します。
2. 精度を上げていく。コンテキスト長の拡張、チャンクサイズの調整、ハルシネーション対策のプロンプト設定——これらのチューニングで実用的な精度に到達できます。
3. 安全に運用する。ネットワークバインディングの制限、テレメトリの無効化、ディスク暗号化——「鎖国」を維持するためのセキュリティ対策を忘れずに。
ローカルLLM入門でAIモデルの基礎を学び、RAG実践ガイドでRAGの仕組みを理解した上で、この記事の手順に沿って統合環境を構築してください。あなたの社内文書が、AIで検索可能になる日はすぐそこです。
関連記事
- ローカルLLM入門——自分のPCでAIを動かす方法
- RAGとは?——AIをもっと賢く使うための仕組み
- ファインチューニング入門——LoRA/QLoRAで自社データにAIを特化させる
- ファインチューニング上級——本格的なモデルカスタマイズの手法
- ローカルLLMのAPIサーバー化——社内システムからAIを呼び出す方法
- MCPサーバーの構築と活用——AIと外部ツールを安全につなぐ
- NotebookLM活用ガイド
- AIベンダーセキュリティ評価チェックリスト
免責事項:本記事は2026年3月時点の公開情報に基づく情報提供です。各ツール(Ollama、AnythingLLM、Dify)のバージョン・仕様は頻繁に更新されるため、最新情報は各公式ドキュメントで確認してください。ローカルRAG環境の構築・運用はセキュリティとデータ管理の責任を伴います。機密性の高いデータを扱う場合は、情報セキュリティの専門家にご相談ください。

コメント