Skip to content

Ollama 完全指南:从入门到精通

本地运行大模型的最佳选择,让 AI 触手可及


目录

  1. 什么是 Ollama?
  2. 快速开始
  3. 核心概念
  4. 模型管理
  5. API 使用
  6. 高级配置
  7. 性能优化
  8. 实际应用场景
  9. 故障排除
  10. 最佳实践

什么是 Ollama?

简介

Ollama 是一个开源的本地大模型运行框架,让你能够在自己的电脑上轻松运行各种开源大语言模型(LLM)。它由 MIT 团队开发,旨在降低大模型的使用门槛。

核心特点

特点说明
🚀 开箱即用一行命令即可运行模型
💻 本地运行数据完全本地,隐私安全
📦 模型丰富支持 Llama、Qwen、Gemma 等主流模型
🔧 易于集成提供 REST API,方便应用集成
性能优化自动量化,降低资源消耗

适用场景

  • 个人学习:在本地实验大模型,无需云端 API
  • 企业开发:构建私有化 AI 应用,数据不出内网
  • 离线环境:无网络环境下依然可用
  • 成本敏感:避免 API 调用费用

快速开始

系统要求

系统最低配置推荐配置
macOSM1/M2/M3, 8GB 内存M2 Pro, 16GB+ 内存
WindowsWindows 10, NVIDIA GPU 4GBWindows 11, RTX 3060+, 16GB 内存
LinuxUbuntu 20.04, 8GB 内存Ubuntu 22.04, RTX 显卡,32GB 内存

安装步骤

macOS

bash
# 方法 1:官网下载
# 访问 https://ollama.com 下载安装包

# 方法 2:Homebrew 安装
brew install ollama

Windows

powershell
# 访问 https://ollama.com/download 下载安装包
# 或使用 winget
winget install Ollama.Ollama

Linux

bash
# 一键安装脚本
curl -fsSL https://ollama.com/install.sh | sh

# 验证安装
ollama --version

运行第一个模型

bash
# 下载并运行 Llama 3.2 模型
ollama run llama3.2

# 开始对话
>>> 你好,请介绍一下你自己
>>> 帮我写一个 Python 函数,计算斐波那契数列

常用命令速查

bash
# 查看已下载的模型
ollama list

# 下载模型(不运行)
ollama pull llama3.2

# 删除模型
ollama rm llama3.2

# 复制模型
ollama cp llama3.2 my-llama

# 查看模型信息
ollama show llama3.2

# 停止运行
ollama stop llama3.2

核心概念

模型(Model)

Ollama 中的模型是经过量化优化的大语言模型,支持多种尺寸和类型:

bash
# 按尺寸选择
ollama run llama3.2:1b      # 1B 参数,超轻量
ollama run llama3.2:3b      # 3B 参数,轻量
ollama run llama3.2:8b      # 8B 参数,平衡
ollama run llama3.2:70b     # 70B 参数,高性能

# 按用途选择
ollama run llama3.2         # 通用对话
ollama run codellama        # 代码生成
ollama run mistral          # 文本生成
ollama run qwen2.5          # 中文优化

Modelfile

Modelfile 是 Ollama 的模型配置文件,类似 Dockerfile:

dockerfile
# 基础模型
FROM llama3.2

# 设置参数
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_ctx 4096

# 系统提示词
SYSTEM """
你是一个专业的 Python 开发工程师,擅长代码编写、代码审查和技术问题解答。
请用简洁、清晰的方式回答问题,并提供可运行的代码示例。
"""

创建自定义模型:

bash
# 创建 Modelfile
ollama create my-coder -f ./Modelfile

# 运行自定义模型
ollama run my-coder

上下文窗口(Context Window)

上下文窗口决定了模型能"记住"多少对话历史:

bash
# 设置上下文长度(默认 2048)
ollama run llama3.2 --num_ctx 8192

# 在 API 中设置
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "你好",
  "options": {
    "num_ctx": 8192
  }
}'

模型管理

热门模型推荐

模型参数用途推荐场景
Llama 3.21B/3B/8B通用对话日常使用、学习
Qwen2.57B/14B/32B中文优化中文应用、写作
CodeLlama7B/13B/34B代码生成编程辅助
Mistral7B文本生成内容创作
Gemma22B/9B/27B轻量高效资源受限环境
DeepSeek-V216B/236B高性能复杂任务

模型下载管理

bash
# 批量下载模型
ollama pull llama3.2
ollama pull qwen2.5:7b
ollama pull codellama:13b

# 查看磁盘占用
ollama list --format json | jq '.[] | {name: .name, size: .size}'

# 清理未使用的模型
ollama rm $(ollama list | grep '^llama' | awk '{print $1}')

创建自定义模型

bash
# 1. 创建 Modelfile
cat > Modelfile << EOF
FROM llama3.2:8b

# 设置温度参数
PARAMETER temperature 0.6
PARAMETER top_p 0.9

# 设置系统角色
SYSTEM """
你是一个专业的技术文档撰写助手。
你的任务是帮助用户编写清晰、准确的技术文档。
请使用 Markdown 格式,包含必要的代码示例和图表说明。
"""
EOF

# 2. 创建模型
ollama create tech-writer -f Modelfile

# 3. 测试模型
ollama run tech-writer "帮我写一个 API 设计文档大纲"

API 使用

REST API 基础

Ollama 提供 OpenAI 兼容的 REST API:

bash
# 聊天接口
curl http://localhost:11434/api/chat -d '{
  "model": "llama3.2",
  "messages": [
    { "role": "user", "content": "你好!" }
  ],
  "stream": false
}'

# 生成接口
curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "写一首关于春天的诗",
  "stream": false
}'

Python 客户端

python
import requests

# 简单对话
response = requests.post('http://localhost:11434/api/chat', json={
    'model': 'llama3.2',
    'messages': [{'role': 'user', 'content': '你好'}],
    'stream': False
})

print(response.json()['message']['content'])

# 流式输出
response = requests.post('http://localhost:11434/api/chat', json={
    'model': 'llama3.2',
    'messages': [{'role': 'user', 'content': '讲个故事'}],
    'stream': True
}, stream=True)

for line in response.iter_lines():
    if line:
        chunk = json.loads(line)
        print(chunk.get('message', {}).get('content', ''), end='')

Node.js 客户端

javascript
const axios = require('axios');

// 简单对话
async function chat(message) {
  const response = await axios.post('http://localhost:11434/api/chat', {
    model: 'llama3.2',
    messages: [{ role: 'user', content: message }],
    stream: false
  });
  return response.data.message.content;
}

// 使用示例
chat('你好').then(console.log);

OpenAI 兼容模式

Ollama 可以模拟 OpenAI API,方便迁移现有应用:

python
from openai import OpenAI

# 配置 Ollama 作为后端
client = OpenAI(
    base_url='http://localhost:11434/v1',
    api_key='ollama'  # 任意值
)

# 使用方式与 OpenAI 完全相同
response = client.chat.completions.create(
    model='llama3.2',
    messages=[
        {'role': 'user', 'content': '你好'}
    ]
)

print(response.choices[0].message.content)

高级配置

环境变量配置

bash
# 修改监听地址(默认 127.0.0.1:11434)
export OLLAMA_HOST="0.0.0.0:11434"

# 修改模型存储路径
export OLLAMA_MODELS="/path/to/models"

# 设置 GPU 层数(NVIDIA)
export OLLAMA_NUM_GPU=99

# 设置并发请求数
export OLLAMA_MAX_QUEUE=512

# 启动服务
ollama serve

GPU 加速配置

NVIDIA GPU

bash
# 查看 GPU 状态
nvidia-smi

# Ollama 会自动检测并使用 GPU
# 如需手动配置:
export OLLAMA_NUM_GPU=99  # 使用所有 GPU 层
ollama serve

AMD GPU

bash
# 需要安装 ROCm
# 设置可见 GPU
export HSA_OVERRIDE_GFX_VERSION=11.0.0
export OLLAMA_NUM_GPU=99

Apple Silicon

bash
# macOS 自动使用 Metal 加速
# 调整 GPU 内存分配
export OLLAMA_MAX_VRAM=8GB

多模型并发

bash
# 配置并发请求
export OLLAMA_MAX_QUEUE=100

# 配置模型加载策略
export OLLAMA_KEEP_ALIVE=5m  # 模型保持加载时间

# 启动服务
ollama serve

性能优化

量化设置

bash
# 使用 4-bit 量化模型(更小更快)
ollama run llama3.2:q4_0

# 使用 8-bit 量化模型(平衡)
ollama run llama3.2:q8_0

# 使用 FP16 模型(精度最高)
ollama run llama3.2:f16

推理参数调优

bash
# 优化响应速度
ollama run llama3.2 \
  --temperature 0.3 \
  --top_p 0.8 \
  --num_predict 512

# 优化创造性
ollama run llama3.2 \
  --temperature 0.9 \
  --top_p 0.95 \
  --num_predict 1024

内存优化

bash
# 限制上下文长度
export OLLAMA_CONTEXT_LENGTH=2048

# 限制批处理大小
export OLLAMA_NUM_BATCH=4

# 限制 GPU 层数
export OLLAMA_NUM_GPU=50

性能基准测试

bash
# 使用 ollama-bench 测试
ollama run llama3.2 "请快速回答:1+1=?"

# 测量首 token 延迟
time curl http://localhost:11434/api/generate -d '{
  "model": "llama3.2",
  "prompt": "你好",
  "stream": false
}'

实际应用场景

1. 本地 AI 助手

bash
# 创建个人助手模型
cat > assistant.Modelfile << EOF
FROM llama3.2:8b

SYSTEM """
你是一个全能的个人 AI 助手,帮助用户处理日常任务:
- 回答问题
- 编写代码
- 撰写文档
- 分析问题
- 提供建议

请用友好、专业的语气交流。
"""
EOF

ollama create assistant -f assistant.Modelfile
ollama run assistant

2. 代码生成器

bash
# 创建代码专家模型
cat > coder.Modelfile << EOF
FROM codellama:13b

PARAMETER temperature 0.2
PARAMETER num_ctx 4096

SYSTEM """
你是资深软件工程师,擅长:
- 编写高质量代码
- 代码审查和优化
- 架构设计
- 调试问题

请提供完整、可运行的代码,并附带必要的注释。
"""
EOF

ollama create coder -f coder.Modelfile

3. 文档生成器

python
import requests

def generate_docs(code, language="python"):
    """自动生成代码文档"""
    response = requests.post('http://localhost:11434/api/generate', json={
        'model': 'llama3.2',
        'prompt': f'''请为以下{language}代码生成文档:

```{language}
{code}

请包含:

  1. 功能说明
  2. 参数说明
  3. 返回值说明
  4. 使用示例 ''', 'stream': False }) return response.json()['response']

### 4. 数据分析助手

```python
def analyze_data(df_description):
    """分析数据并提供洞察"""
    prompt = f'''
我有一份数据集,结构如下:
{df_description}

请帮我:
1. 分析数据特点
2. 指出潜在问题
3. 建议分析方法
4. 推荐可视化方案
'''
    
    response = requests.post('http://localhost:11434/api/chat', json={
        'model': 'llama3.2',
        'messages': [{'role': 'user', 'content': prompt}],
        'stream': False
    })
    return response.json()['message']['content']

5. 本地 RAG 系统

python
from langchain_community.llms import Ollama
from langchain_community.embeddings import OllamaEmbeddings
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain.vectorstores import Chroma

# 初始化
llm = Ollama(model="llama3.2")
embeddings = OllamaEmbeddings(model="llama3.2")

# 文档处理
documents = ["文档 1 内容", "文档 2 内容", ...]
splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=50)
chunks = splitter.split_documents(documents)

# 向量存储
vectorstore = Chroma.from_documents(chunks, embeddings)

# 检索问答
def rag_query(question):
    docs = vectorstore.similarity_search(question, k=3)
    context = "\n\n".join([d.page_content for d in docs])
    
    prompt = f"""基于以下信息回答问题:
{context}

问题:{question}
回答:"""
    
    return llm.invoke(prompt)

故障排除

常见问题

1. 模型下载慢

bash
# 使用镜像源
export OLLAMA_DOWNLOAD_HOST=https://ollama.fly.dev

# 断点续传
ollama pull llama3.2

2. GPU 未被使用

bash
# 检查 GPU 驱动
nvidia-smi  # NVIDIA
rocm-smi    # AMD

# 检查 Ollama 配置
ollama ps

# 重启服务
ollama serve

3. 内存不足

bash
# 使用更小的模型
ollama run llama3.2:1b

# 减少上下文
export OLLAMA_CONTEXT_LENGTH=1024

# 关闭其他应用

4. API 连接失败

bash
# 检查服务状态
curl http://localhost:11434/api/tags

# 重启服务
ollama serve

# 检查防火墙
# Windows: 允许 11434 端口
# Linux: sudo ufw allow 11434

日志调试

bash
# 查看详细日志
export OLLAMA_DEBUG=1
ollama serve

# 查看系统日志
# macOS: log show --predicate 'process == "ollama"' --last 1h
# Linux: journalctl -u ollama
# Windows: 事件查看器

最佳实践

1. 模型选择建议

需求推荐模型显存需求
日常对话Llama 3.2 3B4GB
代码生成CodeLlama 13B12GB
中文应用Qwen2.5 7B8GB
复杂推理Llama 3.2 70B48GB+

2. 安全建议

bash
# 不要暴露到公网
# 默认只监听 localhost

# 如需局域网访问,添加认证
export OLLAMA_HOST="0.0.0.0:11434"
# 配合反向代理(Nginx)添加认证

3. 性能建议

  • 使用量化模型节省显存
  • 根据任务调整 temperature 参数
  • 合理设置上下文长度
  • 定期清理不用的模型

4. 开发建议

bash
# 使用 Modelfile 固化配置
# 版本控制 Modelfile
# 为不同场景创建专用模型
# 使用 API 而非 CLI 集成

总结

Ollama 让本地运行大模型变得前所未有的简单。通过本指南,你应该已经掌握了:

  • ✅ 安装和配置 Ollama
  • ✅ 模型管理和自定义
  • ✅ API 集成方法
  • ✅ 性能优化技巧
  • ✅ 实际应用场景

现在,开始构建你的本地 AI 应用吧!🚀


参考资源:


最后更新:2026-03-13