Ollama 是一个开源的本地大模型(LLM)推理与模型管理运行时,用 Go 语言编写、基于 MIT 协议发布。它解决的核心问题是「把开源大模型跑在本地」的三件事:模型下载与版本管理、一键启动推理服务、对外提供标准化 API。个人开发者或团队可以用它在笔记本、工作站或内网 GPU 服务器上运行 Llama、Qwen、DeepSeek、Mistral 等开源模型,数据不出本机、不依赖外部付费 API。核心特点:一条命令拉取并运行模型、Modelfile 声明式定制模型行为、内置 REST API 且兼容 OpenAI 接口、自动适配 CPU/NVIDIA/AMD/Apple Silicon 多硬件。典型使用方向包括本地 RAG 知识库、Agent 开发调试、内网离线推理。本篇从安装配置、快速上手、核心能力、生产部署、同类选型对比五个角度完整讲解,读完即可上手。

岗位关联

掌握 Ollama 是 AI 工程师构建本地与私有化推理的最小基础设施技能:能独立完成模型拉取、服务化暴露、与 RAG/Agent 框架对接,是进入本地推理与私有化部署方向的门槛级能力。

目录
  1. 为什么需要 Ollama:一条命令把开源模型跑在本地
  2. 安装与环境配置:4 步就绪
  3. 快速上手:2 分钟跑通第一个本地对话
  4. 核心能力详解:4 大支柱
  5. 生产部署与监控:从上线到运维
  6. 版本迭代
  7. AI 应用场景
  8. 常见误区
  9. 面试题
  10. 参考来源
工具类型
本地 LLM 推理与模型管理运行时(开源免费)
开发商
Ollama, Inc.(美国)
开源协议
MIT License(可商用)
GitHub Stars
无
主要语言
Go(推理核心基于 llama.cpp)
当前版本
v0.5.x(2025-02,截至训练数据可能已有更新)
安装方式
安装包 / curl 脚本 / Homebrew / Docker
官方文档
上手难度
★★☆☆☆(低)
适合人群
AI 应用开发者、RAG/Agent 工程师、内网推理运维
同类工具
LM Studio、llama.cpp、vLLM
托管服务
无

速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。

为什么需要 Ollama:一条命令把开源模型跑在本地

在 Ollama 出现之前,把开源大模型跑在自己的机器上是件费力的事:先要找到合适的权重文件(GGUF 格式,llama.cpp 系模型的权重打包格式),处理 llama.cpp 的编译与系统依赖,配置 CUDA(NVIDIA 的并行计算框架)或 CPU 线程等参数,再自己写一个 HTTP 服务把模型暴露给业务调用。这些环节分散在多个文档和工具里,换一台机器、换一个模型就要重新折腾一遍;团队协作时每个人本地环境各自为政,版本和配置不一致,问题排查成本很高。

Ollama 用两个命令把这件事收拢:ollama pull 下载模型,ollama run 直接进入对话,同时自动在 localhost:11434 启动一个完整的 HTTP 服务。它把模型下载、量化选择(把权重压缩到更低精度以减小体积和显存占用)、GPU/CPU 调度、API 暴露全部封装在幕后,开发者感知到的是一套类似 Docker 的模型管理语义:pull、list、ps、rm、stop、cp、create。此外 Ollama 提供与 OpenAI SDK 兼容的 /v1 接口,已有项目只需把 base_url(API 基地址)指向本地地址,就能把模型调用从云端平滑切到本地。

与同类工具相比,Ollama 的定位是「工程化且零配置」:它不像 LM Studio 那样以图形界面为核心,而是以命令行和 API 为主,适合嵌入脚本与服务端程序;也不像 vLLM 那样为高并发集群设计,而是把开箱即用做到极致。它隐藏了底层 llama.cpp 的大多数旋钮,换来几乎为零的上手成本,代价是引擎级精细调优的自由度有限。

安装与环境配置:4 步就绪

步骤一·安装。 Linux 和 macOS 使用官方安装脚本,一行命令完成;Windows 从官网下载 OllamaSetup.exe 双击安装;macOS 也可用 Homebrew。安装脚本会自动放置二进制、注册系统服务(Linux 为 systemd 的 ollama.service)。

步骤二·验证。 执行 ollama --version 确认安装;ollama list 初始为空属正常。Linux 安装后服务已随 systemd 自启,macOS/Windows 桌面版在后台常驻,也可手动运行 ollama serve 启动前台服务。

步骤三·配置环境变量。 生产使用前重点设置三个变量,必须在服务启动前生效:

  • OLLAMA_MODELS=/data/ollama:模型存储目录,建议指向大容量磁盘;
  • OLLAMA_HOST=0.0.0.0:监听所有网卡,允许局域网访问(默认仅 127.0.0.1);
  • OLLAMA_KEEP_ALIVE=30m:无请求 30 分钟后自动卸载模型(默认 5m,设 -1 表示永不卸载)。

Linux systemd 场景用 systemctl edit ollama 添加 Environment=OLLAMA_HOST=0.0.0.0 等配置,再重启服务。

步骤四·验证服务。 请求 /api/tags 接口,返回模型列表 JSON 即服务正常。

bash12 行
# 1. 安装(Linux / macOS)curl -fsSL https://ollama.com/install.sh | sh# Windows:从 https://ollama.com/download 下载 OllamaSetup.exe # 2. 配置环境变量(写入 shell 配置,或 systemctl edit ollama)export OLLAMA_MODELS=/data/ollamaexport OLLAMA_HOST=0.0.0.0export OLLAMA_KEEP_ALIVE=30m # 3. 启动并验证ollama serve &curl http://localhost:11434/api/tags

快速上手:2 分钟跑通第一个本地对话

最小可用流程只有两步:拉取一个轻量模型,然后运行它进入对话。入门推荐 llama3.2(3B 参数,磁盘约 2.3GB,8GB 内存的笔记本即可流畅运行),验证流程后再切换到业务所需的大模型。

1. 终端执行 ollama pull llama3.2,等待下载完成。下载按 layer(层)分批进行,支持断点续传,中断后重新执行即可续传。

2. 执行 ollama run llama3.2 进入交互式对话,直接输入问题即可;/bye 或 Ctrl+D 退出,/? 查看内置命令。

3. 另开一个终端,用 curl 请求 http://localhost:11434/api/chat 走 HTTP 接口。Ollama 默认返回流式输出(边生成边返回),传入 "stream": false 可一次拿完整结果。

验证成功后可以进一步尝试:拉取 deepseek-r1:8b 体验带推理过程的思考模型;拉取 nomic-embed-text(约 274MB 的嵌入模型)为 RAG 做文本向量化。进阶技巧:用 ollama ps 观察当前驻留内存的模型和显存占用,用 ollama stop llama3.2 手动卸载。

bash9 行
ollama pull llama3.2ollama run llama3.2   # 进入交互对话,输入 /bye 退出 # 另开终端:REST API 非流式调用curl http://localhost:11434/api/chat -d '{  "model": "llama3.2",  "messages": [{"role": "user", "content": "用一句话介绍你自己"}],  "stream": false}'
python5 行
# Python 官方 SDK(pip install ollama)import ollamaresp = ollama.chat(model="llama3.2",                   messages=[{"role": "user", "content": "你好"}])print(resp["message"]["content"])

核心能力详解:4 大支柱

支柱一·模型仓库与模型生命周期管理。 Ollama 官方模型库(ollama.com/library)收录了主要开源模型系列:Llama 3.x、Qwen2.5/Qwen3、DeepSeek-R1、Mistral、Gemma、Phi、多模态的 LLaVA/Qwen2-VL,以及嵌入模型 nomic-embed-text。版本通过 名称:tag 精确指定,例如 qwen2.5:7b、deepseek-r1:8b、llama3.2:3b-instruct-q4_K_M。管理命令与 Docker 语义一致:ollama list 查看本地、ollama rm 删除、ollama cp 复制、ollama ps 查看加载状态、ollama stop 卸载指定模型。其中 ollama ps 输出的 SIZE 和 PROCESSOR 字段(CPU/GPU 分布)对排查显存占用问题非常关键。

支柱二·Modelfile 模型定制。 Modelfile 是类似 Dockerfile 的声明式文件:FROM 指定基座模型,SYSTEM 预设系统提示词,PARAMETER 调整采样与上下文参数(temperature、top_p、num_ctx、seed 等),TEMPLATE 改写对话模板。写好后用 ollama create 生成一个带名字的本地模型。典型场景是为团队封装固定角色的客服机器人或固定输出格式的业务助手,避免每次请求重复拼写 prompt。

支柱三·REST API 与 OpenAI 兼容接口。 原生接口按调用目的划分:/api/tags 列出本地模型、/api/generate 文本补全、/api/chat 多轮对话、/api/embed 文本向量化、/api/pull 程序化下载模型、/api/ps 查看运行状态。从早期版本起就提供 OpenAI 兼容端点(/v1/models、/v1/chat/completions、/v1/embeddings),配合 OpenAI 官方 SDK 只需把 base_url 改为 http://localhost:11434/v1 即可无缝切换。流式返回默认开启,需要整段结果时传 "stream": false。LangChain、Dify、Open WebUI 等主流框架均已内置 Ollama 适配器,这也是它生态接入成本最低的原因。

支柱四·多硬件支持与自动化资源调度。 推理核心基于 llama.cpp,Ollama 启动时自动探测可用硬件:NVIDIA 走 CUDA、AMD 走 ROCm(需对应驱动或镜像)、Apple Silicon 走 Metal 加速,没有任何可用 GPU 时退化为纯 CPU 推理。调度器根据模型大小、上下文窗口和可用显存决定权重分层放置(部分层 GPU、部分层 CPU),并在内存不足时自动卸载最久未用的模型。三个关键环境变量决定资源行为:OLLAMA_NUM_PARALLEL 控制同一模型的并发请求数、OLLAMA_KEEP_ALIVE 控制模型驻留时间、OLLAMA_MAX_LOADED_MODELS 控制同时加载的模型数。理解这三者,生产环境的内存规划就有了抓手。

text4 行
FROM qwen2.5:7bSYSTEM "你是企业内部客服,回答须简洁准确并基于给定资料。"PARAMETER temperature 0.3PARAMETER num_ctx 8192
bash2 行
ollama create support-bot -f ./Modelfileollama run support-bot

生产部署与监控:从上线到运维

部署方式一·systemd 单机服务。 Linux 安装脚本默认注册 systemd 服务。生产做法:用 systemctl edit ollama 注入 OLLAMA_HOST、OLLAMA_MODELS 等环境变量,然后 systemctl restart ollama 生效;防火墙只放行内网网段到 11434 端口。在服务前面架一层 Nginx 反向代理并加 Basic Auth 或 API Key 中间件,弥补 Ollama 自身无鉴权的短板。客户端通过 http://host:11434 直连或走代理访问。

部署方式二·Docker + GPU 容器化。 GPU 服务器上推荐容器化部署,前置条件是在宿主机安装 NVIDIA 驱动与 nvidia-container-toolkit,然后运行官方镜像并透传 GPU。AMD 平台改用 ollama/ollama:rocm 镜像。将模型目录挂载为独立数据卷,便于备份与迁移。多模型、多团队场景可用 docker-compose 编排多个实例并做端口隔离,容器内环境变量一律通过 -e 传入。

可观测性。 实时状态用 ollama ps 观察驻留模型、SIZE 以及 CPU/GPU 分布;日志在 Linux 下用 journalctl -u ollama -f 跟踪,macOS 桌面版位于 ~/.ollama/logs,Docker 部署用 docker logs ollama。疑难场景在启动前设置 OLLAMA_DEBUG=1 可输出模型加载与调度的详细日志。容量方面要建立三项预警:磁盘占用(模型存储在 OLLAMA_MODELS 目录,务必与系统盘分离)、显存不足(表现为模型加载失败或分配失败,通过降低 num_ctx 或换量化模型解决)、模型加载失败次数(通常伴随网络或磁盘空间问题)。

<p class="para-label">避坑清单:</p>

<ul class="dash-list"><li>首次 run 会隐式下载模型,大模型可能占用几十 GB 磁盘且耗时数十分钟——务必先用 ollama pull 显式下载并确认磁盘空间,或提前把 OLLAMA_MODELS 指到大容量磁盘。</li><li>默认上下文窗口为 2048 token,长文档问答会被截断——通过 Modelfile 的 PARAMETER num_ctx 或请求体 options.num_ctx 调大,同时注意 KV cache(对话中缓存历史计算的临时存储)会使实际内存需求随上下文线性增长。</li><li>OLLAMA_HOST 等环境变量改完不生效——必须重启服务(systemctl restart ollama 或重启桌面 App),Docker 场景需在 docker run -e 中传入,容器内改文件无效。</li><li>修改 Modelfile 后旧对话仍表现旧行为——Ollama 对模型有加载缓存,改动后先 ollama stop 对应模型再重新 run。</li><li>Docker 里 GPU 不可用——排查是否安装 nvidia-container-toolkit 并加 --gpus all;Windows Docker Desktop 用 WSL2 后端时 GPU 直通配置复杂,建议直接安装原生 Windows 版。</li></ul>

bash3 行
docker run -d --gpus all -v ollama:/root/.ollama \  -p 11434:11434 --name ollama ollama/ollamadocker logs ollama   # 查看容器日志
维度OllamaLM Studiollama.cpp(llama-server)vLLM
定位本地模型管理 + 推理服务运行时桌面图形化模型客户端底层推理引擎(C/C++)高性能服务化推理引擎
编排范式CLI + REST/OpenAI 兼容 APIGUI 为主,内置 API Server命令行二进制 / HTTP ServerPython 服务 + 集群调度
类型约束模型以 名称:tag 管理,API 传 JSON模型由 GUI 管理,API 为 JSON无类型系统,CLI 参数即配置配置与 Engine 由 Python 定义,结构强
学习曲线★★ 低:两条命令可跑通★ 最低:纯点选操作★★★ 中:需编译与参数调优★★★★ 高:需 Python 与 GPU 运维
生态集成OpenAI 兼容接口 + 官方 Python/JS SDK,框架适配最全提供 OpenAI 兼容本地 API,偏桌面需自行封装服务与鉴权OpenAI 兼容接口,适合服务网格
生产部署systemd/Docker 一键,反向代理即可不适合无人值守服务化需自建进程守护与监控多卡并行、PagedAttention 高吞吐
LicenseMIT(可商用)闭源,个人免费 / 商业付费MIT(可商用)Apache 2.0(可商用)
适合谁AI 应用开发、RAG/Agent 工程师非程序员、模型体验与测评底层研究与嵌入式场景高并发生产推理服务团队

选型建议:个人开发、原型验证、中小团队内网部署首选 Ollama——接口与生态接入成本最低,几乎所有 RAG/Agent 框架都有现成适配器;纯桌面体验、不想写命令行选 LM Studio;需要精细控制底层引擎或嵌入到定制环境用 llama.cpp;多用户高并发的正式生产服务选 vLLM,其连续批处理吞吐显著更高。一般建议把 Ollama 作为默认起步选项,遇到明确的并发瓶颈再迁移 vLLM。

版本迭代

Ollama 的演进主线是「平台覆盖 → 接口收敛 → 调度优化」:2023 年底首发时仅是 macOS/Linux 命令行工具;2024 年上半年补齐 Windows 与 Docker 部署,下半年完成 SDK 与嵌入接口并支持并发加载;2025 年起重心转向并发调度、自动卸载等运行稳定性。版本节奏为典型的小步快跑,补丁版本密集。截至训练数据(2025-02),可能已有更新版本,请以官方 Release 页为准。

版本时间变化提升
v0.1.02023-12初始正式版命令行 pull/run 跑通 Llama 2、Mistral;Modelfile 定制;内建 REST API
v0.1.322024-06Windows 平台支持Windows 预览版安装包发布;Docker 镜像成为服务端主流部署方式
v0.3.02024-09并发与嵌入接口支持并发加载多个模型;新增 /api/embed 文本向量化接口
v0.4.02024-11调度优化与桌面化调度器与自动卸载改进;Ollama App 桌面版 beta;OLLAMA_NUM_PARALLEL 等运行参数完善
v0.5.42025-02稳定性维护修复调度与多 GPU 兼容问题;优化模型自动内存释放与多模态运行体验
结论

Ollama 官方不发布统一的推理性能基准(社区实测表明吞吐主要由底层 llama.cpp、GPU 型号与量化格式共同决定,与版本号关系不大),故不列分数对比。选型建议:本地推理不必追逐最新补丁版本——升级前在目标机器上实测 token/s 与显存占用,比看版本号更有参考价值;需要稳定生产环境时锁定一个已验证版本,用 ollama run <模型> 前的 pull 指定固定 tag,避免随最新 Release 频繁变更。

AI 应用场景

内网 RAG 知识库的本地推理底座

阶段:RAG 管道构建

解决的问题:企业文档数据敏感,不能调用第三方云端 API。Ollama 在同一台机器上提供 embedding 服务(nomic-embed-text)和生成服务(qwen2.5 等),LangChain / LlamaIndex 通过 OpenAI 兼容接口即插即用,数据全程不出内网。

具体案例:某制造企业将 5000 份设备手册向量化到本地向量库,用 Ollama 跑 qwen2.5:7b 做问答生成,单卡 RTX 4090 下单次问答延迟约 1-3 秒;相比云端 API 消除了按 token 计费,月运行成本从数千元降至电费与硬件折旧。

Agent 与应用的本地调试直达

阶段:Agent 编排

解决的问题:开发 Agent 和函数调用(function calling)时频繁调用外部 LLM API,单轮延迟高、迭代烧钱,网络抖动还会打断调试。把调试流量切到本地模型后,同一套 OpenAI SDK 代码只需改 base_url。

具体案例:某开发团队用 openai 库把 base_url 指向 Ollama 本地服务,开发调试阶段全部走 llama3.2 本地推理,验收阶段再切换云端大模型;典型观察是单次调试循环耗时下降约 60%(本地 0.5-1 秒 vs 云端 2-4 秒),网络限流问题消失。

多模型快速选型与对比评测

阶段:模型评测与选型

解决的问题:团队选型时需要在同一环境跑多个模型对比效果,手工配置每个模型的运行环境以天计;Ollama 让模型切换收敛为一条命令。

具体案例:某算法团队在同一台 8GB 显存显卡上拉取 deepseek-r1:8b、qwen2.5:7b、llama3.2:3b 三个模型,用同一组 50 条业务用例跑对话与结构化输出测试,两个工作日完成全部对比并输出选型报告;ps 命令实时核对各模型的显存占用。

常见误区

误区

正解

误区

正解

误区

正解

误区

正解

误区

正解

面试题

Q1. Ollama 本地服务默认监听哪个端口?

单选题 · easy

  • A.8000
  • B.8080
  • C.11434← 正确答案
  • D.6379

答案:C。ollama serve 默认绑定 127.0.0.1:11434,所有 REST 接口和 OpenAI 兼容接口都从这里暴露。8000/8080 是常见 Web 服务端口,6379 是 Redis 默认端口,均与 Ollama 无关。

Q2. 查看本机已下载模型列表的命令是?

单选题 · easy

  • A.ollama ps
  • B.ollama list← 正确答案
  • C.ollama show
  • D.ollama run

答案:B。ollama list 列出本地已下载的模型及大小;ollama ps 显示当前已加载进内存的模型;ollama show 查看指定模型详情;ollama run 进入对话。注意与 docker ps 语义区分:ps 表示“正在运行”而非“全部”。

Q3. 从模型库拉取模型到本地的命令是?

单选题 · easy

  • A.ollama download llama3.2
  • B.ollama fetch llama3.2
  • C.ollama pull llama3.2← 正确答案
  • D.ollama get llama3.2

答案:C。与 Docker 语义一致,Ollama 使用 ollama pull 从模型库下载。download、fetch、get 均不是有效子命令;若本地已存在该模型,pull 会提示已存在并跳过重复下载。

Q4. Modelfile 中设置上下文长度的指令是?

单选题 · mid

  • A.PARAMETER temperature 0.7
  • B.PARAMETER seed 42
  • C.PARAMETER num_ctx 8192← 正确答案
  • D.SYSTEM “你是助手”

答案:C。num_ctx 控制上下文窗口(KV cache 大小)与输入输出长度,调整后需 ollama create 重新生成模型才生效。temperature 和 seed 是采样参数,SYSTEM 只能设置系统提示词,均不决定上下文长度。

Q5. 让 Ollama API 可被局域网其他机器访问的正确做法是?

单选题 · mid

  • A.设置 OLLAMA_HOST=0.0.0.0 并重启服务← 正确答案
  • B.在防火墙放行 11434 端口并重启电脑
  • C.在 ollama run 时添加 --host 参数
  • D.打开浏览器访问 localhost 并开启共享

答案:A。Ollama 通过 OLLAMA_HOST 控制监听地址,0.0.0.0 表示监听所有网卡;环境变量必须在服务启动前设置并重启服务才生效。只有防火墙配置没有设置监听地址无济于事,Ollama 也没有 --host 命令行参数。

Q6. 使用 Ollama 的 OpenAI 兼容接口,base_url 应指向?

单选题 · mid

  • A.http://localhost:11434/v1← 正确答案
  • B.http://localhost:11434/openai
  • C.http://localhost:11434/api
  • D.http://localhost:11434/

答案:A。Ollama 提供 /v1/models、/v1/chat/completions、/v1/embeddings 等 OpenAI 兼容端点,把 openai SDK 的 base_url 设为 http://localhost:11434/v1 即可无缝替换云 API。/api 是 Ollama 原生接口路径,两者功能等价但请求格式不同。/openai 路径不存在。

Q7. 关于 OLLAMA_KEEP_ALIVE,下列说法正确的是?

单选题 · hard

  • A.设为 30m 表示模型无请求 30 分钟后自动卸载← 正确答案
  • B.设为数字表示模型最多可驻留的 CPU 线程数
  • C.只能取布尔值控制模型驻留内存的开关
  • D.该配置项仅对嵌入类小模型生效

答案:A。OLLAMA_KEEP_ALIVE 控制模型在无请求情况下驻留内存的时间,单位支持 s/m/h,默认 5m,设 -1 表示永不自动卸载。它作用于所有模型而非仅嵌入模型;线程数由 OLLAMA_NUM_THREAD 控制,且该变量不是布尔开关。

Q8. 生产环境中排查本地推理故障,Ollama 提供的诊断手段包括?

多选题 · hard

  • A.ollama ps 查看驻留模型与内存← 正确答案
  • B.服务日志(Linux 下 journalctl -u ollama)← 正确答案
  • C.OLLAMA_DEBUG=1 开启详细调度日志← 正确答案
  • D.ollama metrics 直接输出吞吐指标

答案:ABC。ollama ps 展示当前加载模型及显存/内存占用;Linux 安装包自带 systemd 服务,journalctl -u ollama 可看完整日志;启动前设 OLLAMA_DEBUG=1 可输出模型加载与调度细节。Ollama 没有 metrics 子命令,吞吐需自行压测统计。

Q9. 下列哪些项目能显著降低本地推理的显存/内存占用?

多选题 · hard

  • A.选用量化版本如 q4_K_M 替代 f16← 正确答案
  • B.调小 num_ctx 即缩小上下文窗口← 正确答案
  • C.设置合理的 OLLAMA_KEEP_ALIVE 驻留时长← 正确答案
  • D.调大 OLLAMA_NUM_PARALLEL 并发数

答案:ABC。量化直接缩小权重体积,num_ctx 决定 KV cache 大小(随上下文线性增长),KEEP_ALIVE 控制闲置模型是否及时卸载,三者都直接影响常驻内存。调大并发数反而会提高显存占用,因为每个并发请求都需要独立的 KV cache。

Q10. 关于 Ollama 的多硬件支持,下列说法正确的有?

多选题 · mid

  • A.无 GPU 时可用纯 CPU 推理← 正确答案
  • B.Apple Silicon 走 Metal 加速← 正确答案
  • C.NVIDIA 显卡自动使用 CUDA 后端← 正确答案
  • D.AMD 显卡无法使用仅支持 NVIDIA

答案:ABC。Ollama 在无 GPU 或驱动不可用时自动退化为 CPU 推理(线程数由 OLLAMA_NUM_THREAD 控制);macOS 通过 Metal 使用 Apple Silicon 的统一内存加速;NVIDIA 自动使用 CUDA 后端。AMD 显卡在 Linux 可通过 ROCm 后端运行(Docker 用 ollama/ollama:rocm 镜像),D 选项错误。

参考来源

  • webpageOllama 官网产品入口、模型库浏览与各平台下载