Ollama 教程
Ollama 教程
Ollama 是一个本地运行大语言模型(LLM)的开源工具,让你在个人电脑上轻松运行 Llama、Qwen、DeepSeek、Mistral 等开源模型,无需 GPU 云服务,数据完全本地化。
核心特性
- 本地运行:模型下载到本机,数据不出门
- 一键安装:下载即可用,支持 macOS/Linux/Windows
- 模型丰富:Ollama 库有数千个模型/变体
- API 接口:内置 REST API,方便集成
- 多平台:支持 CPU/GPU 运行,自动优化
快速开始
# 安装后运行模型 ollama run llama3 # 下载特定模型 ollama pull qwen2.5 # 查看本地模型 ollama list
支持的模型示例
llama3 Meta 的 Llama 3 qwen2.5 阿里的通义千问 deepseek-r1 DeepSeek 推理模型 mistral Mistral AI gemma Google Gemma phi3 微软 Phi-3 codegemma 代码模型 llava 多模态(图像)
学习路线
- 安装与运行模型
- 相关命令与基本概念
- 模型交互与 API 调用
- Python 集成
- Open WebUI 等图形界面
Ollama 简介
Ollama 简介
1. 什么是 Ollama
Ollama 由 Ollama 公司开发,2023 年发布,把运行大模型的复杂性(下载、量化、推理优化、硬件适配)封装为简单命令,让个人开发者也能轻松使用开源 LLM。
2. 为什么用 Ollama
- 隐私安全:数据不出本地,适合敏感场景
- 零成本:开源模型免费,无需 API 费用
- 离线可用:断网也能使用
- 开发友好:OpenAI 兼容 API,易集成
- 轻量部署:单机即可,无需集群
3. 与云 API 对比
| 对比项 | Ollama(本地) | 云 API(GPT) |
|---|---|---|
| 数据隐私 | 完全本地 | 上传云端 |
| 成本 | 免费(硬件成本) | 按 token 计费 |
| 性能 | 受硬件限制 | 高性能集群 |
| 模型选择 | 开源模型 | 闭源/开源托管 |
| 离线 | 可以 | 不行 |
4. 硬件要求
# 运行 7B 模型 内存 ≥ 8GB(推荐 16GB) # 运行 13B-70B 模型 内存 ≥ 16GB,推荐 GPU(如 RTX 3060+) # 无 GPU 也可运行(CPU 推理,速度慢) # Ollama 自动选择最优设备
Ollama 安装
Ollama 安装
1. macOS 安装
# 方式一:官网下载 # 访问 ollama.com 下载 .dmg 安装包 # 方式二:Homebrew brew install ollama # 启动 ollama serve
2. Linux 安装
# 官方一键脚本 curl -fsSL https://ollama.com/install.sh | sh # Ubuntu/Debian 手动 sudo apt install curl curl -fsSL https://ollama.com/install.sh | sh # 验证 ollama --version
3. Windows 安装
# 下载 OllamaSetup.exe 安装 # https://ollama.com/download/windows # 或使用 winget winget install Ollama.Ollama
4. 验证安装
# 查看版本 ollama --version # 启动服务(后台) ollama serve # 测试运行(下载并运行 llama3) ollama run llama3 # 输出 # >>> 你好 # 你好!有什么可以帮助你的吗?
5. 常见问题
# 端口占用 # 默认端口 11434 # 修改环境变量 OLLAMA_HOST=0.0.0.0:11435 # GPU 不可用 # 检查驱动、设置 OLLAMA_GPU # 模型下载慢 # 可配置镜像源(如设置 OLLAMA_BASE_URL)
Ollama 运行模型
Ollama 运行模型
1. 运行模型
# 直接运行(自动下载) ollama run llama3 # 运行特定版本 ollama run llama3:70b ollama run qwen2.5:7b ollama run deepseek-r1:14b # 交互式对话 # 进入后直接输入文字对话 # 多行输入用 \\ # 退出用 /bye 或 Ctrl+D
2. 模型大小选择
# 常见参数规模 1.5b 轻量,CPU 可跑,速度快 3b 基础任务 7b 平衡之选(推荐) 8b 均衡(如 llama3.1) 14b 较强 32b 强(需大内存/GPU) 70b 强(需多 GPU) # 量化版更省内存 qwen2.5:7b-q4_K_M # 4bit 量化,体积小
3. 拉取模型
# 先下载再运行 ollama pull llama3 ollama pull qwen2.5:7b # 查看下载进度 # 已下载模型 ollama list # 查看模型详情 ollama show llama3 # 参数、量化、上下文长度等
4. 删除模型
# 删除模型释放空间 ollama rm llama3 ollama rm qwen2.5:14b # 删除所有 ollama rm -a
5. 模型文件位置
# macOS: ~/.ollama/models # Linux: /usr/share/ollama/.ollama/models # Windows: C:\Users\\.ollama\models # 查看占用 du -sh ~/.ollama/models
Ollama 相关命令
Ollama 相关命令
1. 命令速查
ollama serve 启动服务(常驻) ollama run <模型> 运行模型(对话) ollama pull <模型> 下载模型 ollama push <模型> 上传到库 ollama list 列出本地模型 ollama show <模型> 查看模型详情 ollama cp 复制模型 ollama rm <模型> 删除模型 ollama create <模型> 从 Modelfile 创建 ollama version 版本信息 ollama help 帮助
2. Modelfile 创建模型
# Modelfile FROM llama3 SYSTEM "你是一个友好的中文助手" PARAMETER temperature 0.7 PARAMETER num_ctx 4096 # 创建 ollama create my-helper -f Modelfile # 使用 ollama run my-helper
3. 查看模型详情
ollama show llama3 # 输出示例 # Model # architecture llama # parameters 8.0B # context length 8192 # embedding length 4096 # quantization Q4_0 # 查看模板 ollama show llama3 --template # 查看参数 ollama show llama3 --parameters
4. 常用环境变量
OLLAMA_HOST 服务地址(默认 127.0.0.1:11434) OLLAMA_MODELS 模型存储目录 OLLAMA_KEEP_ALIVE 模型驻留时间 OLLAMA_NUM_PARALLEL 并行请求数 OLLAMA_MAX_LOADED_MODELS 最多加载模型数
Ollama 基本概念
Ollama 基本概念
1. 模型(Models)
# 模型 = 权重 + 配置 + 模板 # 存储在 ~/.ollama/models # 模型命名: name:tag ollama run llama3:8b ollama run qwen2.5:7b-instruct # tag 常见值 latest 默认最新 7b/8b/14b/70b 参数规模 q4_0/q8_0/fp16 量化级别 instruct/chat 是否指令微调
2. 量化(Quantization)
# 量化:压缩模型精度,减小体积,加快推理 # 权衡:精度 vs 速度/内存 q4_0 4bit,最常用,体积小 q4_K_M 4bit K-quant,质量更好 q5_K_M 5bit,质量接近原版 q8_0 8bit,质量高,体积较大 f16 全精度,最大最准 # 例如 qwen2.5:7b # 原始 f16 约 15GB # q4_K_M 约 4.7GB(常用)
3. 上下文长度(Context)
# 上下文:模型一次能"记住"的 token 数
# 越长能处理更长对话/文档,但更耗内存
# 运行时设置
ollama run llama3 --num-ctx 16384
# Modelfile 设置
PARAMETER num_ctx 8192
# API 设置
{"options": {"num_ctx": 8192}}
4. 推理参数
temperature 温度(0-2),越高越随机 top_p 核采样,概率阈值 top_k 候选数 max_tokens 最大生成 token repeat_penalty 重复惩罚 seed 随机种子 # 用途 temperature 0.1 确定性输出(代码/事实) temperature 0.8 创造性输出(写作/头脑风暴)
Ollama 模型交互
Ollama 模型交互
1. 交互式对话
# 启动交互模式 ollama run qwen2.5 # >>> 你好,介绍一下你自己 # 你好!我是通义千问... # 多行输入 # >>> 写一首诗 # ...回车后按 \\ 再回车 # 查看会话命令 /help 帮助 /? 参数列表 /set 设置(如 temperature) /bye 退出 /save <名> 保存会话
2. 单次调用(非交互)
# 管道输入 echo "翻译成英文:你好" | ollama run qwen2.5 # 直接传参 ollama run qwen2.5 "用一句话介绍 Python" # 从文件读取 cat prompt.txt | ollama run qwen2.5
3. 系统提示词
# Modelfile 方式
FROM qwen2.5
SYSTEM "你是一个专业的中文技术文档翻译者"
# 交互式设置
# /set system 你是一个...助手
# API 方式
{
"messages": [
{"role": "system", "content": "你是...助手"},
{"role": "user", "content": "你好"}
]
}
4. 多模态交互(如 llava)
# 图片模型 ollama run llava # 描述图片 # 交互中输入图片路径 # >>> /image ./photo.png # >>> 这张图里有什么? # 或命令行 ollama run llava "描述图片" < ./photo.png
Ollama API 交互
Ollama API 交互
1. REST API 概览
# Ollama 内置 HTTP API,默认端口 11434 # 端点 POST /api/generate 文本生成 POST /api/chat 对话(推荐) POST /api/embed 嵌入向量 GET /api/tags 模型列表 POST /api/show 模型详情 POST /api/pull 拉取模型 POST /api/create 创建模型 DELETE /api/delete 删除模型
2. 对话 API(OpenAI 兼容)
# OpenAI 兼容端点
# POST /v1/chat/completions
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5",
"messages": [
{"role": "system", "content": "你是助手"},
{"role": "user", "content": "你好"}
]
}'
# 返回
# {
# "choices": [{"message": {"content": "你好!..."}}]
# }
3. /api/generate
curl http://localhost:11434/api/generate \
-d '{
"model": "qwen2.5",
"prompt": "讲个笑话",
"stream": false,
"options": {"temperature": 0.8}
}'
# 流式输出
curl http://localhost:11434/api/generate \
-d '{"model": "qwen2.5",
"prompt": "写一段代码",
"stream": true}'
# 返回多行 JSON,每行一个 token 片段
4. /api/chat
curl http://localhost:11434/api/chat \
-d '{
"model": "qwen2.5",
"messages": [
{"role": "user", "content": "1+1=?"}
],
"stream": false
}'
# 多轮对话:把历史消息都传过去
5. 嵌入与向量
# 生成文本嵌入向量(用于 RAG/向量检索)
curl http://localhost:11434/api/embed \
-d '{
"model": "nomic-embed-text",
"input": "你好世界"
}'
# 返回 768 维向量
# {"embeddings": [[0.123, ...]]}
Ollama Python 使用
Ollama Python 使用
1. 安装客户端
# 官方 Python 库 pip install ollama # 或 OpenAI SDK(兼容) pip install openai
2. 基本对话
import ollama
# 同步对话
response = ollama.chat(
model="qwen2.5",
messages=[
{"role": "user", "content": "你好"}
]
)
print(response["message"]["content"])
# 多轮对话
messages = [
{"role": "system", "content": "你是助手"},
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "你好!"},
{"role": "user", "content": "今天天气如何?"}
]
resp = ollama.chat(model="qwen2.5", messages=messages)
print(resp["message"]["content"])
3. 流式输出
import ollama
stream = ollama.chat(
model="qwen2.5",
messages=[{"role": "user", "content": "写一首诗"}],
stream=True,
)
for chunk in stream:
print(chunk["message"]["content"], end="", flush=True)
4. OpenAI SDK 方式
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama" # 任意值
)
resp = client.chat.completions.create(
model="qwen2.5",
messages=[{"role": "user", "content": "你好"}]
)
print(resp.choices[0].message.content)
5. 实用封装
import ollama
class LocalLLM:
def __init__(self, model="qwen2.5"):
self.model = model
self.messages = []
def system(self, content):
self.messages.append(
{"role": "system", "content": content})
def ask(self, content):
self.messages.append(
{"role": "user", "content": content})
resp = ollama.chat(
model=self.model, messages=self.messages)
answer = resp["message"]["content"]
self.messages.append(
{"role": "assistant", "content": answer})
return answer
llm = LocalLLM("qwen2.5")
llm.system("你是一个 Python 导师")
print(llm.ask("什么是装饰器?"))
print(llm.ask("给个例子"))
Ollama Open WebUI
Ollama Open WebUI
1. 什么是 Open WebUI
Open WebUI 是开源的 LLM Web 界面,类似 ChatGPT 的交互体验,支持 Ollama、OpenAI 等后端,提供多用户、聊天管理、文档上传(RAG)、模型管理等功能。
2. Docker 安装
# 官方推荐 Docker 部署 docker run -d -p 3000:8080 \ -v open-webui:/app/backend/data \ -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \ --name open-webui \ ghcr.io/open-webui/open-webui:main # 访问 http://localhost:3000 # 首次注册管理员账号
3. 本地安装(Python)
# 需要 Python 3.11+ git clone https://github.com/open-webui/open-webui.git cd open-webui # 前端构建 npm install && npm run build # 后端 pip install -r requirements.txt cd ./backend python main.py # 访问 http://localhost:8080
4. 主要功能
# 聊天界面 多会话管理、Markdown 渲染、代码高亮 模型切换、系统提示词、参数调节 # 多用户 注册/登录、用户管理、权限控制 # 知识库(RAG) 上传文档(PDF/Word/TXT),向量化检索 # 模型管理 查看/下载 Ollama 模型、自定义模型 # 其他 语音输入、图片理解、Web 搜索(需配置)
5. 配置 Ollama 连接
# Docker 方式 # OLLAMA_BASE_URL 指向 Ollama 服务 # 如果 Ollama 在宿主机 docker run ... -e OLLAMA_BASE_URL=http://host.docker.internal:11434 # 让 Ollama 监听所有接口 OLLAMA_HOST=0.0.0.0 ollama serve
Ollama Page Assist
Ollama Page Assist
1. 什么是 Page Assist
Page Assist 是浏览器扩展,把本地 LLM(Ollama)集成到浏览器中,可在任意网页侧边栏调用模型,实现网页内容问答、翻译、摘要等功能。
2. 安装
# 浏览器扩展 # Chrome/Edge: 搜索 "Page Assist" 安装 # https://chromewebstore.google.com/ # Firefox: AMO 商店搜索 "Page Assist" # 或 GitHub 手动安装 # https://github.com/n4ze3m/page-assist
3. 配置
1. 打开扩展设置 2. Ollama API URL: http://localhost:11434 3. 选择默认模型(qwen2.5 等) 4. 配置侧边栏快捷键(如 Ctrl+Shift+L) # 前提:Ollama 服务已启动 ollama serve
4. 功能
# 侧边栏聊天 # 在任意网页打开侧边栏与本地模型对话 # 网页内容问答 # 选中网页文本 → 右键 → 问模型 # 摘要/翻译 # 一键摘要网页、翻译选中内容 # 页面上下文 # 可让模型基于当前网页内容回答 # 历史记录 # 会话保存与管理
5. 使用场景
- 阅读长文时让模型总结要点
- 外文网页即时翻译
- 代码片段解释
- 研究资料问答(隐私安全)
Ollama 常见问题与资源
Ollama 常见问题与资源
1. 常见问题
# Q: 模型运行很慢? # A: 用小参数模型(qwen2.5:1.5b)或开启 GPU # Q: 内存不足 OOM? # A: 用 4bit 量化版本,或减少 num_ctx # Q: 下载模型失败? # A: 检查网络,设置代理或镜像源 # Q: 端口被占用? # A: 设置 OLLAMA_HOST 换端口 # Q: API 调用超时? # A: 首次加载模型慢,增加超时时间 # Q: 中文输出乱码? # A: 选中文模型(qwen2.5),或检查终端编码
2. 性能优化
# GPU 加速检查 ollama run llama3 --verbose # 看 eval rate(每秒 token) # 常用优化 1. 用量化模型(q4_K_M) 2. 减小 num_ctx(如 2048) 3. 关闭不用的模型(ollama rm) 4. 设置 OLLAMA_KEEP_ALIVE 控制驻留 5. 升级内存/GPU
3. 模型选择建议
# 通用对话 qwen2.5:7b(中文强) / llama3.1:8b # 代码 deepseek-coder / codellama / qwen2.5-coder # 数学推理 deepseek-r1 / qwen2.5-math # 轻量设备 qwen2.5:1.5b / phi3:mini / llama3.2:3b # 多模态 llava / qwen2.5-vl
4. 应用场景
- 本地知识库问答(RAG)
- 代码辅助与审查
- 文档摘要与翻译
- 私有数据智能分析
- 开发测试(替换 OpenAI API)
5. 学习资源
官网: ollama.com 模型库: ollama.com/library GitHub: github.com/ollama/ollama 文档: github.com/ollama/ollama/tree/main/docs 社区: reddit.com/r/ollama Open WebUI: github.com/open-webui/open-webui Page Assist: github.com/n4ze3m/page-assist
Ollama 总结与进阶
Ollama 总结与进阶
1. 知识回顾
- 安装运行:ollama run/pull/list 等基础命令
- 模型管理:量化选择、Modelfile 自定义、参数调优
- API 集成:REST API + OpenAI 兼容端点
- Python 开发:ollama 库与 OpenAI SDK
- 图形界面:Open WebUI、Page Assist
2. 进阶方向
- RAG 应用:Ollama + LangChain + 向量库(Chroma)
- Function Calling:让模型调用本地工具
- 微调:LoRA 微调专用模型
- 多模型路由:按任务选择模型
- Agent 开发:本地模型构建 AI 助手
3. RAG 示例(LangChain)
pip install langchain langchain-community chromadb
from langchain_community.llms import Ollama
from langchain_community.embeddings import OllamaEmbeddings
from langchain_community.vectorstores import Chroma
from langchain.text_splitter import RecursiveCharacterTextSplitter
from langchain_community.document_loaders import TextLoader
# 加载文档
loader = TextLoader("docs.txt")
docs = loader.load()
# 切分
splitter = RecursiveCharacterTextSplitter(chunk_size=500)
chunks = splitter.split_documents(docs)
# 向量化存储
embeddings = OllamaEmbeddings(model="nomic-embed-text")
db = Chroma.from_documents(chunks, embeddings)
# 检索问答
llm = Ollama(model="qwen2.5")
retriever = db.as_retriever()
query = "文档里说了什么?"
context = retriever.invoke(query)
from langchain.chains import RetrievalQA
qa = RetrievalQA.from_chain_type(llm=llm, retriever=retriever)
print(qa.invoke(query)["result"])
4. Function Calling 示例
import ollama
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询城市天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}
}]
resp = ollama.chat(
model="qwen2.5",
messages=[{"role": "user",
"content": "北京天气怎么样?"}],
tools=tools,
)
print(resp["message"]["tool_calls"])
5. 结语
Ollama 降低了本地大模型的门槛,是个人开发者、隐私敏感行业和离线场景的理想选择。配合 RAG、Agent 等进阶技术,可以构建强大的本地 AI 应用。
第 1 / 13 节