Ollama 本地大模型部署指南:从安装到 API 调用
为什么选 Ollama
本地部署大模型的方案很多,Ollama 是最省心的选择:
- 一行命令拉模型:
ollama pull qwen2.5:7b就完事了 - 自带 API 服务:启动后自动暴露 RESTful API,直接对接业务系统
- 跨平台:Windows、Linux、macOS 全支持
- 模型生态丰富:Llama、Qwen、Mistral、Phi 等主流模型都能跑
对于后端开发者来说,Ollama 就是「大模型版的 Docker」——装好就能用,不用折腾 CUDA、PyTorch 依赖。
安装
Windows
直接去 ollama.com 下载安装包,一键安装。
安装后确认:
bash
ollama --version
# ollama version is 0.3.xLinux
bash
curl -fsSL https://ollama.com/install.sh | sh验证 GPU 可用性
bash
# Windows: nvidia-smi
# Linux: nvidia-smi
nvidia-smi如果能看到 GPU 信息和驱动版本,说明 CUDA 环境正常。Ollama 会自动检测并使用 GPU。
没有 GPU 也能跑
Ollama 支持 CPU 推理,只是速度慢一些。7B 模型在 CPU 上大概 2-5 tokens/s,能用但不太实用。有张 8GB 显存的显卡就能流畅跑 7B 模型。
拉取模型
推荐模型
| 模型 | 参数量 | 显存需求 | 中文能力 | 适用场景 |
|---|---|---|---|---|
| qwen2.5:7b | 7B | 6GB | 优秀 | 通用对话、代码、中文理解 |
| qwen2.5:14b | 14B | 10GB | 极好 | 更高质量输出 |
| llama3.1:8b | 8B | 7GB | 一般 | 英文场景、代码 |
| phi3:mini | 3.8B | 3GB | 尚可 | 低配机器、快速推理 |
| nomic-embed-text | 0.1B | 1GB | 良好 | Embedding 向量化 |
拉取命令
bash
# 拉取 Qwen 2.5 7B(推荐入门首选)
ollama pull qwen2.5:7b
# 拉取 Embedding 模型(做 RAG 用)
ollama pull nomic-embed-text拉取过程就是下载模型文件,7B 模型大约 4.7GB,网速决定时间。
查看已安装模型
bash
ollama list
# NAME ID SIZE MODIFIED
# qwen2.5:7b xxxxxxx 4.7 GB 2 hours ago
# nomic-embed-text xxxxxxx 274 MB 1 day ago运行模型
命令行对话
bash
ollama run qwen2.5:7b进入交互式对话,直接输入问题就能聊。/bye 退出。
后台服务模式
Ollama 安装后默认以服务方式运行,监听 localhost:11434。你不需要手动启动服务,直接调 API 就行。
API 调用
Ollama 自带 RESTful API,这才是后端开发者最关心的部分。
Chat 接口
bash
curl http://localhost:11434/api/chat -d '{
"model": "qwen2.5:7b",
"messages": [
{"role": "system", "content": "你是一个专业的后端技术助手"},
{"role": "user", "content": "SpringBoot 如何集成 Redis 缓存?"}
],
"stream": false
}'流式输出
bash
curl http://localhost:11434/api/chat -d '{
"model": "qwen2.5:7b",
"messages": [
{"role": "user", "content": "用 Python 写一个快速排序"}
],
"stream": true
}'流式模式下,响应会逐 token 返回(SSE 格式),适合做打字机效果的前端展示。
Embedding 接口
bash
curl http://localhost:11434/api/embeddings -d '{
"model": "nomic-embed-text",
"prompt": "这是一个需要向量化的文本"
}'返回 768 维向量,可以直接存入向量数据库做 RAG。
Python 集成
使用 Ollama Python SDK
python
import ollama
# 对话
response = ollama.chat(
model='qwen2.5:7b',
messages=[
{'role': 'system', 'content': '你是一个后端技术助手'},
{'role': 'user', 'content': '解释一下 RAG 的原理'}
]
)
print(response['message']['content'])流式输出
python
for chunk in ollama.chat(
model='qwen2.5:7b',
messages=[{'role': 'user', 'content': '写一个 Python 单例模式'}],
stream=True
):
print(chunk['message']['content'], end='', flush=True)结合 LangChain
python
from langchain.llms import Ollama
from langchain.prompts import PromptTemplate
llm = Ollama(
model="qwen2.5:7b",
base_url="http://localhost:11434",
temperature=0.7
)
template = """
你是一个后端技术专家。请回答以下问题:
问题:{question}
"""
prompt = PromptTemplate.from_template(template)
chain = prompt | llm
answer = chain.invoke({"question": "SpringBoot 如何对接大模型 API?"})
print(answer)SpringBoot 对接
后端老本行,Java 对接 Ollama 也很直接:
java
@RestController
@RequestMapping("/api/ai")
public class AIController {
private final RestClient client = RestClient.create("http://localhost:11434");
@PostMapping("/chat")
public String chat(@RequestBody ChatRequest request) {
return client.post()
.uri("/api/chat")
.body(Map.of(
"model", "qwen2.5:7b",
"messages", request.getMessages(),
"stream", false
))
.retrieve()
.body(Map.class)
.get("message")
.toString();
}
}实用配置技巧
修改监听地址
默认只监听 127.0.0.1,要让局域网其他机器访问:
bash
# Linux/Mac
OLLAMA_HOST=0.0.0.0:11434 ollama serve
# Windows: 设置环境变量
set OLLAMA_HOST=0.0.0.0:11434修改模型存储位置
默认存在用户目录下,C 盘空间紧张的话可以改:
bash
# Windows
setx OLLAMA_MODELS "D:\ollama\models"
# Linux/Mac
export OLLAMA_MODELS=/data/ollama/models创建自定义模型
用 Modelfile 自定义模型参数:
dockerfile
# Modelfile
FROM qwen2.5:7b
# 调整参数
PARAMETER temperature 0.3
PARAMETER top_p 0.9
PARAMETER num_ctx 4096
# 系统提示词
SYSTEM """
你是一个专业的后端技术助手,擅长 Java、Python、AI 工程化。
回答要简洁准确,代码要可直接运行。
"""bash
ollama create my-assistant -f Modelfile
ollama run my-assistant性能参考
实测 Qwen2.5:7b 在不同硬件上的推理速度:
| 硬件 | 速度 (tokens/s) | 首字延迟 |
|---|---|---|
| RTX 4060 8GB | ~45 | 0.3s |
| RTX 3060 12GB | ~38 | 0.4s |
| RTX 2060 6GB | ~25 | 0.6s |
| CPU i7-12700K | ~4 | 1.2s |
上下文长度影响速度
num_ctx 设置越大,推理越慢、显存占用越多。日常对话 4096 够用,长文档处理才需要 8192+。
下一步
- RAG 知识库:Ollama + 向量数据库搭建私有知识库,数据完全不出域
- 多模型编排:用 Ollama 跑多个模型,做模型路由(简单问题用小模型,复杂问题用大模型)
- Fine-tune:基于 Qwen 做领域微调,再转 GGUF 格式导入 Ollama 部署
- 集群部署:多机多卡,用负载均衡分发推理请求
Ollama 最大的价值是降低了本地大模型的使用门槛。对于后端开发者,它就是你本地的大模型 API 服务——装好、调接口、完事。