SJ blog
ai
A

信頼度ランク

S 公式ソース確認済み
A 成功実績多数・失敗例少数
B 賛否両論
C 動作未確認・セキュリティリスク高
Z 個人所感

ローカルで動くLLM:Ollama完全ガイド

Ollamaを使ってLLM(大規模言語モデル)をローカルで動かす方法を解説。インストールからLlama・Mistral・Gemmaの実行、OpenAI互換APIの活用、RAGへの応用まで紹介します。

一言結論

Ollamaを使えばLLMをローカルで動かすハードルはDockerと同程度まで下がっており、プライバシー要件がある社内ツールや開発環境でのAI活用においてクラウドAPIへの依存から脱却できる。

Ollama とは

Ollama は LLM(大規模言語モデル)をローカルで簡単に動かすためのツールです。Docker のように ollama pull llama3.2 でモデルをダウンロードし、ollama run llama3.2 で対話できます。

メリット:

  • データが外部サーバーに送られない(プライバシー)
  • API 料金なし
  • オフラインで動作
  • モデルのカスタマイズが自由

インストール

# macOS / Linux
curl -fsSL https://ollama.com/install.sh | sh

# Windows: ollama.com からインストーラーをダウンロード

# バージョン確認
ollama --version

主要モデルを使う

# Llama 3.2(Meta)— 汎用、日本語もそこそこ対応
ollama pull llama3.2
ollama run llama3.2

# Gemma 3(Google)— 軽量で高性能
ollama pull gemma3

# Mistral(Mistral AI)— コーディングが得意
ollama pull mistral

# Qwen 2.5(Alibaba)— 日本語・中国語に強い
ollama pull qwen2.5

# モデル一覧
ollama list

コマンドラインで対話

ollama run llama3.2
>>> こんにちは。TypeScriptでFizzBuzzを書いて
for (let i = 1; i <= 100; i++) {
  if (i % 15 === 0) console.log("FizzBuzz");
  else if (i % 3 === 0) console.log("Fizz");
  else if (i % 5 === 0) console.log("Buzz");
  else console.log(i);
}
>>> /bye

OpenAI 互換 REST API

Ollama は OpenAI の API 仕様と互換性があります。既存のOpenAIクライアントをそのまま向き先変更で使えます。

# サーバーとして起動(デフォルトで起動済み)
# http://localhost:11434 でAPIが利用可能
// JavaScript/TypeScript(openai SDK をそのまま使う)
import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "http://localhost:11434/v1",
  apiKey: "ollama", // 任意の文字列
});

const response = await client.chat.completions.create({
  model: "llama3.2",
  messages: [
    { role: "user", content: "TypeScriptのジェネリクスを説明して" }
  ],
});

console.log(response.choices[0].message.content);
# Python
from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:11434/v1",
    api_key="ollama",
)

response = client.chat.completions.create(
    model="llama3.2",
    messages=[{"role": "user", "content": "Pythonでクイックソートを実装して"}]
)
print(response.choices[0].message.content)

カスタムモデルを作る(Modelfile)

# Modelfile
FROM llama3.2

# システムプロンプトを設定
SYSTEM """
あなたは日本語で回答するプログラミングアシスタントです。
コードは必ずコードブロックで示し、解説を日本語で提供してください。
"""

# テンプレートをカスタマイズ
PARAMETER temperature 0.7
PARAMETER num_ctx 8192
# モデルを作成
ollama create my-jp-assistant -f Modelfile

# 使う
ollama run my-jp-assistant

RAG(検索拡張生成)への応用

// ローカルLLM + ローカルembeddingでRAGを構築
import ollama from "ollama";

// テキストを embedding に変換
async function embed(text: string) {
  const response = await ollama.embed({
    model: "nomic-embed-text",
    input: text,
  });
  return response.embeddings[0];
}

// 質問に答える
async function answer(question: string, context: string) {
  const response = await ollama.chat({
    model: "llama3.2",
    messages: [{
      role: "user",
      content: `以下の情報を参考に質問に答えてください。\n\n情報:\n${context}\n\n質問: ${question}`
    }]
  });
  return response.message.content;
}

必要なスペック目安

モデルサイズVRAM目安
1〜3B パラメータ2〜4GBGemma 3 1B
7〜8B パラメータ5〜8GBLlama 3.1 8B
13〜14B パラメータ10〜12GBQwen 2.5 14B
70B パラメータ40GB+Llama 3.3 70B

CPU のみでも動きますが、GPU(CUDA / Metal)があれば大幅に高速化されます。

まとめ

Ollama は「ローカル LLM を試す」ための最良のツールです。プライバシーが重要な業務での利用、オフライン環境、コスト節約など用途は多岐にわたります。OpenAI 互換 API により、既存コードを最小限の変更でローカル LLM に切り替えられる点も大きな魅力です。


参考: Ollama 公式 / Ollama GitHub