PromptQuorumPromptQuorum
ホーム/Power Local LLM/30分でローカルRAGシステムを構築: Ollama + AnythingLLM
RAG & Document Chat

30分でローカルRAGシステムを構築: Ollama + AnythingLLM

·12分で読める·Hans Kuepper 著 · PromptQuorumの創設者、マルチモデルAIディスパッチツール · PromptQuorum

Ollama をインストール、Llama 3.3 8B をプル、AnythingLLM をインストール、Ollama に接続、embedding モデルを nomic-embed-text に変更、PDF をワークスペースにドラッグして質問を開始。16GB ノートパソコンで全体の処理時間は 30 分 — ほぼモデルのダウンロード時間です。

16GB ノートパソコンで動作する、最速のパーソナルRAGシステム構築ガイド。スタック: Ollama、Llama 3.3 8B、AnythingLLM、nomic-embed-text。合計時間: 空のマシンからPDFとのチャットまで30分。

重要なポイント

  • スタック: Ollama が LLM を実行、AnythingLLM が UI + ベクトルストアを管理、Llama 3.3 8B Q4_K_M が回答、nomic-embed-text-v1.5 が取得。
  • 時間: 合計 30 分。最長は model プル (~8 分 @ 50 Mbps)。
  • ハードウェア: 16GB RAM が実用的な最小値。8GB は Phi-4 Mini と小規模データセットのみ対応。
  • プライバシー: インストール後、何もマシンを離れません。PDF、embedding、prompt、出力は全てローカル。
  • コードなし: Python なし、terminal コマンドは 2 つの Ollama コマンドのみ。AnythingLLM はドラッグ&ドロップ式 desktop app。
  • デフォルト embedder は不適切: AnythingLLM に tiny 組み込み embedder が付属。ステップ 4 で nomic-embed-text-v1.5 に変更 — 取得品質が大幅向上。
  • デフォルト chunk サイズも不適切: 1000-token chunks + 200-token overlap がデフォルト 512/0 より優秀。ステップ 7 で調整。

構築するもの

自己完結型 desktop RAG システム: PDF をドラッグして質問するチャットウィンドウ。 4 つのオープンソースコンポーネント、すべて無料、全てノートパソコンで実行:

📍 一文で説明

ローカル RAG システムは 4 つの部分 — ランタイム (Ollama)、answer model (Llama 3.3 8B)、UI + vector store (AnythingLLM)、embedding model (nomic-embed-text-v1.5) — クラウド呼び出しなしに 1 台のマシンで接続。

💬 簡潔に説明

PDF をドラッグ、質問を入力、引用付き根拠のある回答を取得 — 完全にオフライン。4 つの部分が作業を分担: Ollama がモデル実行、Llama 3.3 8B が回答作成、AnythingLLM が chunks と vectors 管理、nomic-embed-text-v1.5 がテキストを取得可能なベクトルに変換。合計インストール: ~30 分;合計コスト: ¥0。

  • Ollama — ローカル LLM ランタイム。Model ファイルを管理、localhost:11434 で OpenAI 互換 API を公開。Answer model を提供。
  • Llama 3.3 8B Instruct (Q4_K_M) — Meta の 8B parameter chat model、量子化して ~5GB RAM に適合。2026 年の文書ベース質問で良好な回答品質。
  • AnythingLLM Desktop — UI + ベクトルストア + RAG orchestration。LanceDB 内蔵、PDF/DOCX/TXT/MD をネイティブで解析、Ollama と通信。
  • nomic-embed-text-v1.5 — embedding model。768-dim vectors、Ollama 経由で最新 CPU で ~600 chunks/sec。デフォルト embedder の代わり。

📌Note: AnythingLLM にはビルトイン LLM とビルトイン embedder も搭載。両方が意図的に tiny なのは app が低スペック機器で高速起動するため。ステップ 4・6 で両方を置き換えます — RAG システムでは取得品質が全て。

開始前に必要なもの

16GB RAM、20GB ディスク空き、インターネット接続、30 分を備えたノートパソコン。 OS は macOS 12+、Windows 10/11、最新 Linux desktop。

  • RAM: 16GB は Llama 3.3 8B Q4 + AnythingLLM + 通常の desktop app の実用最小値。8GB は Phi-4 Mini Q4 で動作 — ステップ 2 の代替を参照。
  • ディスク: 20GB 空き。Llama 3.3 8B Q4_K_M は ~5GB、embedding model は ~280MB、AnythingLLM は ~600MB、embedding 用に余裕が必要 (~100 page あたり 10–30MB)。
  • ネットワーク: Model プル用に ~50 Mbps 最小。25 Mbps では ~16 分;残りのチュートリアルは影響なし。
  • 権限: AnythingLLM に admin/root 不要。Ollama は macOS/Linux の /usr/local/bin にインストール (パスワード 1 回) または Windows %LOCALAPPDATA% (admin なし)。
  • ドキュメント準備: 開始に 5–20 PDF。より大きいセットも動作、小セットで取得品質テストが高速。

ステップ 1: Ollama をインストール (3 分)

**ollama.com/download から OS 用 Ollama installer をダウンロード、実行。Installer が ollama CLI を PATH に追加、バックグラウンドサービス開始。** 設定選択肢なし。

  • macOS: .dmg をダウンロード、Ollama を Applications にドラッグ、1 回起動して CLI helper をインストール。Service が実行中はメニューバーに llama icon。
  • Windows: .exe をダウンロード、実行、デフォルト受け入れ。Ollama はインストール後にバックグラウンドサービスで実行 — 別途起動不要。
  • Linux: 1 行インストール: curl -fsSL https://ollama.com/install.sh | sh。Script が systemd unit を登録;sudo systemctl start ollama で開始。
  • 確認: Terminal を開き ollama --version 実行。Version 文字列が表示されるはず。Command not found ならば Terminal を再起動して PATH を更新。
bash
ollama --version
# ollama version is 0.5.x  (any 0.5+ build works for this tutorial)

⚠️Warning: ollama --version は成功するがその後のステップで "localhost:11434 接続拒否" エラーが出る場合、バックグラウンドサービスが自動起動していません。macOS: Applications から app 起動。Linux: sudo systemctl start ollama。Windows: Ollama tray icon を開く。

ステップ 2: Llama 3.3 8B をプル (8 分)

**Terminal で ollama pull llama3.3:8b-instruct-q4_K_M 実行。これで 4.9GB 量子化 GGUF をダウンロード、Ollama に登録。** 合計 30 分中ほぼこのステップだけ。

  • ダウンロードサイズ: ~4.9GB (Q4_K_M 量子化)。50 Mbps では ~8 分;100 Mbps では ~4 分;25 Mbps では ~16 分。
  • 進捗を見る: Ollama がパーセンテージとレートを表示。ダウンロードが中断されても再実行で再開 — ollama list で確認。
  • Model の smoke test: ダウンロード完了後、ollama run llama3.3:8b-instruct-q4_K_M 実行、"2+2 は?" と聞く。妥当な回答を確認。/bye で終了。
  • 低 RAM 代替: 8GB 搭載なら ollama pull phi3:mini (Phi-4 Mini、~2.4GB)。ステップ 3 でこのモデル名を使用。長い文書では品質落ちるも動作可能。
bash
# 16GB RAM 推奨
ollama pull llama3.3:8b-instruct-q4_K_M

# 8GB RAM 代替
ollama pull phi3:mini

# Quick smoke test (終了: /bye)
ollama run llama3.3:8b-instruct-q4_K_M

💡Tip: すでに他の Ollama model がある? ollama list で全て表示。複数 model をインストール維持、AnythingLLM workspace 設定で切り替え可能。

ステップ 3: AnythingLLM Desktop をインストール (4 分)

useanything.com (または anythingllm.com) から AnythingLLM Desktop をダウンロード、installer を実行。App を起動、"クラウドアカウント作成" を無視 — Local-only mode が次画面で提示。 無人インストール。

  • macOS: .dmg をダウンロード、AnythingLLM を Applications にドラッグ、起動。macOS がアプリ開発者確認を要求する場合、システム設定 → プライバシー で "開く" をクリック。
  • Windows: .exe installer をダウンロード。Windows SmartScreen が "一般的でないアプリ" とフラグ — "詳細情報" → "実行" をクリック。App は %LOCALAPPDATA%\anythingllm-desktop にインストール (admin 不要)。
  • Linux: .AppImage をダウンロード、実行可能にマーク (chmod +x AnythingLLMDesktop.AppImage)、ダブルクリックで実行。
  • 初回選択: AnythingLLM はホスト型クラウド workspace OR ローカルのみセットアップを提示。ローカル設定 を選択 — このシステムをオフラインのまま。
  • Workspace 作成: プロンプト時、最初の workspace に説明的な名前を付ける ("研究論文"、"契約"、"個人メモ")。各 workspace が独自の document collection と embedding store を持つ。

⚠️Warning: AnythingLLM のデフォルト LLM は welcome デモ専用の tiny 組み込みモデル。次のステップで local Ollama を指す。本来のクエリにデフォルト使用禁止 — 回答が使用不可能に弱い。

ステップ 4: AnythingLLM を Ollama に接続、embedder を変更 (3 分)

**AnythingLLM 設定 → LLM 選好 を開く。Provider に "Ollama" 選択、URL を http://127.0.0.1:11434 に設定、Model dropdown から llama3.3:8b-instruct-q4_K_M を選択。保存。次に Embedding 選好 を開き、デフォルトから nomic-embed-text (via Ollama) に変更。**

  • LLM 選好 panel: Provider = Ollama、Endpoint = http://127.0.0.1:11434、Model = llama3.3:8b-instruct-q4_K_M。"変更を保存" クリック。緑の checkmark が接続確認。
  • Embedding 選好 panel: デフォルトは "AnythingLLM Native Embedder" (tiny 組み込み)。Provider を Ollama に変更、Terminal で ollama pull nomic-embed-text を先に実行 (~280MB)、panel の model list をリフレッシュ、nomic-embed-text:latest を選択。保存。
  • Re-embedding 警告: 旧 embedder で既に document を追加していれば、AnythingLLM が re-embed を促す。新規インストールならば document がないので prompt なし。
  • ベクトル DB: デフォルト (LanceDB) のまま。ローカル、ファイルバック、ゼロ config。PGVector や Qdrant が特に必要な場合のみ変更。
bash
# Embedding 選好 panel を開く前に Terminal で実行
ollama pull nomic-embed-text

💡Tip: nomic-embed-text-v1.5 を選ぶ理由? 2026 年 5 月、500MB 以下のあらゆるモデルで MTEB Retrieval leaderboard top 5、最新 CPU で 400–800 chunks/sec、Apple Silicon で 2000+ chunks/sec、Apache 2.0 ライセンス。ほぼ全ローカル RAG stack のアップグレード first choice — 代替は embedding model comparison 参照。

ステップ 5: 最初の PDF をアップロード (5 分)

Workspace を開く、"ドキュメントをアップロード" をクリック、5–20 PDF をドラッグ。AnythingLLM がテキスト抽出、chunk (デフォルト 512 token、0 overlap)、各 chunk を Ollama で embedding、vector を LanceDB に保存。 Progress bar に解析 page と embedded chunk を表示。

  • 対応フォーマット: PDF (テキスト)、DOCX、TXT、MD、EPUB + URL scraping。スキャンした image-PDF は OCR が必要 — troubleshooting 参照。
  • 速度: 最新 CPU で 400–800 chunks/sec、Apple Silicon で 2000+ chunks/sec (Ollama warm 後)。~50 page × 20 PDF (~3000 chunks 合計) は最新 CPU で embedding 5–8 秒、Apple Silicon で 1–2 秒 + parsing time。20 PDF アップロード、解析、embedding に ~5 分計上。
  • Embedding 中 RAM: Ollama が embedding model (~280MB) を最初の request で load、cache 維持。以降の embed は cache 再利用。
  • "Workspace に移動": Upload 後、AnythingLLM が document を "limbo" pool に配置。明示的に "Workspace に移動" → "保存して embedding" をクリック時のみクエリ可能に。このニステップは意図的 — embedding コスト前に preview 可能。

⚠️Warning: 古い OCR scan の PDF には破損または空の text layer — 人間の目では良好に見えるが AnythingLLM は "[image]" または空 string を抽出。Upload 前に text editor で PDF を開く (または pdftotext file.pdf - from poppler-utils 実行) して text layer 確認。

ステップ 6: クエリをテスト (5 分)

Workspace chat に質問を入力。AnythingLLM が質問を embedding、LanceDB から top-N chunk を取得、これらを context で prompt 構築、Ollama に送信、回答を表示。 16GB ノートパソコンの latency は ~3–10 秒/query。

  • Fact-recall query で開始: "あなたの PDF の [特定用語] とは?" — 取得 grounding をテスト。回答は PDF を引用し正確な phrasing を例示すべき。
  • 次に synthesis query: "[著者/document title] の主論を要約。" — model が複数 chunk を統合する能力をテスト。
  • 次に comparison query (PDF に比較可能 content がある場合): "[doc A][doc B][topic] をどう扱う?" — cross-document 取得をテスト。
  • 引用を検査: AnythingLLM は各回答の下に source chunk を表示。クリックして、model が正しい passage から根拠を取ったか確認。引用が off-topic なら、取得が broken — ステップ 7 参照。

ステップ 7: Chunk サイズを調整 (2 分)

Workspace 設定 → ベクトルデータベース を開く。Chunk 大きさを 512 から 1000、Chunk overlap を 0 から 200 に変更。保存、document を re-embed (UI が prompt)。 AnythingLLM では単一最大レバレッジポイント。

  • 1000/200 を選ぶ理由: PDF paragraph や section は 512 token に綺麗に適合しない。200-token overlap は chunk 境界を跨ぐ sentence が少なくとも 1 つの neighbor に完全に現れることを意味、取得がそれをつかむ。
  • Re-embed コスト: 20-PDF / 3000-chunk set は ~5 秒で re-embed。より大きい set は比例して長い。Chunk store は overwrite、append でなく。
  • Top-K 取得: デフォルト top-K は 4 (4 best-match chunks が context に)。回答が根拠薄く感じるなら 6–8 に増加;model が noisy chunk に distracted なら 2–3 に低下。
  • Prompt template: AnythingLLM は system prompt を Workspace → Chat 設定 → Prompt で公開。デフォルト OK;specific failure mode がある場合のみ tune。

💡Tip: 理論より empirical tuning: chunk size 変更の前後で同じ 5 test query を入力、結果比較。1000/200 での取得が worse なら、おそらく非常に短い document (1-page memo、code docstring) — 代わりに 256/64 を試す。

サンプルクエリと期待される回答

正しく調整されたローカル RAG システムは fact-recall を source から逐語的に回答、求められれば synthesis、使用した chunk を引用。 研究論文 workspace での 3 つの例と健全なシステム が返すもの:

📍 一文で説明

健全なローカル RAG 回答は fact-recall で source chunk を逐語引用、summary query で chunk を跨ぐ synthesis、使用した chunk ID を引用 — 引用なしの generic 回答は model problem でなく取得 problem を合図。

💬 簡潔に説明

回答が "通常、研究者は 100-500 人の参加者" 的に聞こえ、"Smith et al. 287 人を使用 (Methods p.4)" でなければ、取得が broken、model が training data から guessing。取得を先に修理 (chunk size、embedder、similarity threshold)、model を変更する前に。

Query 型Example健全な回答パターン失敗パターン
Fact-recallSmith et al. 2024 は何のサンプルサイズを使用した?Methods section からの直接引用 + chunk への引用引用なしの generic 回答 ("通常、研究者は 100–500 人の参加者")
Synthesisこの論文の主要な貢献を要約。Abstract + Conclusion chunk から 3–5 文Title 反復または abstract から 1 文引用のみ
Cross-documentSmith と Jones は chunk overlap をどう異なる見方する?両論文からの引用、明示的帰属1 論文のみ引用、または chunk にない disagreement を発明

💡Tip: この 3 query pattern を各 retrieval config 変更後のテストセットとして使用。Fact-recall が still misses だが synthesis 機能すれば chunks が粗い。Synthesis は miss だが fact-recall 機能すれば top-k が低い。Fail パターンがどの knob を回すかを伝える。

何か壊れた時: 6 つの一般的な failure mode と fix

ほぼ全て failure が 6 カテゴリに該当。Symptom を行に match、fix を apply。

Symptom推定される原因Fix
AnythingLLM が "Ollama に接続できません" を表示Ollama service が実行していない、または endpoint 不正ollama serve を実行 (または app/service を再起動)。Endpoint が http://127.0.0.1:11434 であり localhost:11434 でないことを確認 (Windows で alias が時々失敗)。
Model pull が 0% または 99% で stallCDN edge issue または disk fullCtrl+C で cancel、df -h で disk space 確認、同じ ollama pull を再実行 — Ollama が last byte から resume。
Embedding step が hang している風Ollama が embedding model を初回 load30–60 秒待つ。初回 model load は disk speed に応じて 10–40 秒。後続 embed は fast。
取得が query に無関係な chunk を返すデフォルト 512/0 chunking + weak default embedderステップ 4 (nomic-embed-text) とステップ 7 (1000/200 chunking) 両方が apply されたか確認。Workspace を re-embed。
回答が短い、generic、source との engagement を拒否Wrong LLM (tiny default) が still selected または context 小さいLLM 選好が llama3.3:8b-instruct-q4_K_M を表示するか確認。Top-K を 4 から 6 に増加。
Scanned-image PDF は upload するが empty chunk を producePDF に text layer がない — pure raster imagePDF を OCR 先に。macOS: ocrmypdf input.pdf output.pdf。Linux/Windows: Tesseract + ocrmypdf をインストール。OCR'd output を re-upload。

日本ユーザーのための活用ポイント

ローカル RAG システムは日本のビジネスと教育における重要なニーズに対応します。METI (経済産業省) AI ガバナンス、企業セキュリティ基準、データ主権に合致した architecture。

  • METI AI ガバナンス 2024: 経済産業省が 2024 年に公開したフレームワークに準拠。ローカル推論で sensitive data (医療、金融、法務) を cloud LLM API に送らず、enterprise governance 要件を満たす。日本企業の risk management standard に aligned。
  • 東アジアデータ主権: Japan、Malaysia、Singapore、Korea では regional data residency framework が厳化。ローカル RAG (zero cloud API) はこれらを直接満たす。企業が regional boundary 内でデータ処理を完全制御。
  • 日本企業活用シナリオ: 大銀行、病院、law firm はローカル RAG を客契約書、patient record、法令解釈に使用。Zero cloud dependency、ゼロ license cost。インストール: laptop または on-premise server で 30 分、productivity: 即座。Financial/Medical/Legal sectors の due diligence、compliance scan、document search 自動化。

FAQ

Ollama のインストールが失敗する場合は?

macOS では Gatekeeper が未署名 helper をブロック — システム設定 → プライバシー & セキュリティ で "許可" をクリック。Windows では Defender SmartScreen が quarantine — 右クリック → プロパティ → ブロック解除。Linux では install script が sudo を要求 (systemd unit 書き込み); sudo 利用不可なら github.com/ollama/ollama/releases から static binary をダウンロード、手動で PATH に配置。

Embedding step が遅い理由は?

Session の初回 embed は遅い — Ollama が embedding model を lazy-load in RAM (disk speed に応じて 10–40 秒)。その後、embedding は最新 CPU で 400–800 chunks/sec、Apple Silicon で 2000+ chunks/sec。持続 throughput が 100 chunks/sec 以下なら model が swap-disk で実行 — 他 app を close してメモリ解放、retry。

いくつの PDF を一度に upload できる?

AnythingLLM は単一 drag-drop で数百ファイル受け入れ。Practical limit は parse step 中の RAM: ~100 medium PDF (50 page each) で ~1GB peak。Embed 後、on-disk vector store は小さい (~100 page あたり 10–30MB)。1000+ PDF は 1000 PDF locally dedicated guide 参照。

Password-protected PDF に使用可能?

AnythingLLM は password-protected PDF を直接 decrypt できない。qpdf --password=YOURPASSWORD --decrypt input.pdf output.pdf で decrypt first (qpdf は無料、全 OS)、unprotected output を upload。Threat model が要求すれば embed 後に unprotected copy を delete — embedding は human-readable でない。

取得が wrong chunk を返す場合は?

3 つの knob (impact 順): default embedder から nomic-embed-text に switch (ステップ 4)、512/0 chunking を 1000/200 に change + re-embed (ステップ 7)、workspace setting で top-K を 4 から 6 に bump。3 つ全て後も取得が wrong なら、document が前処理が必要 — header/footer を strip、whitespace を normalize、long PDF を per-chapter file に split。

Llama 3.3 8B 以外のモデルを使うべき?

Llama 3.3 8B Q4_K_M は 16GB system での 2026 best quality-per-RAM tradeoff。8GB RAM では Phi-4 Mini Q4_K_M (~2.4GB)。24GB+ では Qwen 2.5 14B Q4 for notably better synthesis on long document。Multilingual workload は Mistral Nemo 12B が non-English より優秀 (Llama 3.3 より)。

後でモデルを update する方法は?

ollama pull llama3.3:8b-instruct-q4_K_M を再実行 latest build 取得、AnythingLLM を再起動して model version を re-detect。Completely different model に switch するには、ollama pull <new-model> 実行、AnythingLLM setting の LLM 選好 dropdown を変更 — re-embedding 不要 (embedding は model でなく embedder に依存)。

別のコンピュータに移動可能?

はい。Ollama model は ~/.ollama/models (macOS/Linux) または %USERPROFILE%\.ollama\models (Windows) — フォルダをコピー。AnythingLLM workspace は ~/.anythingllm/storage — それもコピー。新 machine で Ollama と AnythingLLM Desktop をインストール、copied folder を place。Workspace と embedding は identically come up。

PDF が scanned image の場合は?

Not directly — AnythingLLM は text 抽出できるが image の OCR はできない。Scanned PDF を前処理: ocrmypdf input.pdf output.pdf (cross-platform、MIT-licensed、Tesseract 使用)。Apple Silicon では ocrmypdf -l jpn+eng が 70+ 言語対応。OCR 後、output PDF は original image + searchable text layer を持つ、AnythingLLM が text を正しく抽出。

Document database をバックアップする方法は?

AnythingLLM は全て ~/.anythingllm/storage (macOS/Linux) または %LOCALAPPDATA%\anythingllm-desktop\storage (Windows) に store。このフォルダを tar/zip、backup drive にコピー。フォルダは original document、parsed chunk、vector index、chat history を包含。Restoration は copy-back-and-restart — special import flow 不要。

← Power Local LLM に戻る

30分でローカルRAG構築 2026: Ollama + AnythingLLM | PromptQuorum