ChatGPT 的 API 是好,但敏感业务数据不能传公网。2024-2025 年,Ollama + Open WebUI 这套"本地大模型 + Web 知识库"组合成为私有化 AI 助手的标准答案:Ollama 拉模型、跑推理;Open WebUI 提供类 ChatGPT 界面、知识库、对话历史。这篇文章把 Ollama(CPU/GPU 部署)+ Open WebUI(知识库)+ LobeChat 备选一次性说清。
阅读对象:需要在公司内网搭"私有 ChatGPT";想做知识库(RAG);想本地跑 deepseek-r1 / qwen / llama3 体验大模型;关心数据不外传的合规需求。
覆盖范围:Ollama 官方镜像 CPU 启动、GPU 加速(Nvidia / AMD)、Open WebUI 二合一 docker-compose、模型管理(pull / run / list)、知识库原理(Nomic-Embed-Text + AnythingLLM)、LobeChat 备选。
一、为什么是 Ollama + Open WebUI
| 工具 | 角色 |
|---|
| Ollama | 模型管理(拉取 / 运行 / 删除)、推理服务(11434 API) |
| Open WebUI | Web UI(类 ChatGPT)、知识库(RAG)、多用户、对话历史 |
| DeepSeek-R1 / Qwen / Llama3 | 实际跑的大模型(开源、可商用) |
| Nomic-Embed-Text | 向量模型(把文本转成向量做 RAG 检索) |
| AnythingLLM | 知识库应用平台(可选,配合 Open WebUI 知识库) |
典型组合:Ollama 跑模型(11434)→ Open WebUI 拉 Ollama 作为后端(3000)→ 业务系统调 Open WebUI API 接入。
数据流:用户问 → Open WebUI(知识库 RAG 检索)→ Ollama(拼 prompt + 大模型推理)→ 回答。
二、Ollama 部署
2.1 拉取镜像
1
| docker pull ollama/ollama:0.5.10
|
Ollama 模型仓库(ollama.com/library)涵盖 deepseek-r1、llama3、qwen2.5、mistral、gemma2、phi3 等几十个模型,按参数量分 tag(如 1.5b / 7b / 8b / 32b / 70b)。
2.2 CPU 模式启动
1
2
3
4
5
6
| docker run -d \
--name=ollama \
--restart=always \
-p 11434:11434 \
-v /home/docker/ai/ollama:/root/.ollama \
ollama/ollama
|
CPU 模式:适合 1.5b ~ 7b 模型;8b+ 模型推理慢得难以忍受(除非有 32+ 核 + AVX-512)。
2.3 GPU 加速(Nvidia)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| # 1. 安装 NVIDIA Container Toolkit
# Ubuntu 官方源
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | \
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# 国内源(USTC)
curl -fsSL https://mirrors.ustc.edu.cn/libnvidia-container/gpgkey | \
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
curl -s -L https://mirrors.ustc.edu.cn/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://nvidia.github.io#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://mirrors.ustc.edu.cn#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
apt update && apt install -y nvidia-container-toolkit
# 2. 配置 docker
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
# 3. 验证
nvidia-container-cli --version
# 4. 启动容器(带 GPU)
docker run -d --gpus=all -v ollama:/root/.ollama \
-p 11434:11434 --name ollama ollama/ollama
|
2.4 GPU 加速(AMD ROCm)
1
2
3
| docker run -d --device /dev/kfd --device /dev/dri \
-v ollama:/root/.ollama \
-p 11434:11434 --name ollama ollama/ollama:rocm
|
AMD GPU 需要 ROCm 5.7+ 且只支持部分 GPU(RX 7900 / MI 系列等)。
三、模型管理
3.1 进入容器跑模型
1
2
3
4
5
6
7
8
9
10
11
| # 拉模型(自动从 ollama.com 仓库下载)
docker exec -it ollama ollama run deepseek-r1:1.5b
# 7B 模型(需要 ≥8GB 显存)
ollama run deepseek-r1:7b
# 8B 模型
ollama run deepseek-r1:8b
# 32B 模型(需要 24GB+ 显存)
ollama run deepseek-r1:32b
|
3.2 Ollama 命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| # 列出已下载模型
docker exec ollama ollama list
# 显示模型信息
ollama show deepseek-r1:7b
# 拉取模型
ollama pull llama3
# 拷贝模型
ollama cp deepseek-r1:7b my-deepseek
# 删除模型
ollama rm deepseek-r1:7b
# 后台运行模型(不进入交互)
docker exec -d ollama ollama run deepseek-r1:32b
|
3.3 拉模型日志(GPU 推理)
1
2
3
4
| time=2025-04-08T07:16:19.351Z level=INFO source=routes.go:1297 msg="Listening on 127.0.0.1:11434"
time=2025-04-08T07:16:19.557Z level=INFO source=types.go:130 msg="inference compute"
id=GPU-a1af182d-40db-335b-dc0b-664be8894ff9 library=cuda variant=v12 compute=8.9
driver=12.4 name="NVIDIA GeForce RTX 4090" total="23.6 GiB" available="23.3 GiB"
|
关键指标:compute=8.9(CUDA Compute Capability,8.9 = RTX 4090)、total/available(显存)、library=cuda variant=v12(CUDA 版本)。
3.4 API 直接调
1
2
3
4
5
| # 拉取模型(API 等价于 ollama pull)
curl http://localhost:11434/api/pull -d '{"name": "deepseek-r1:32b"}'
# 列已加载模型
curl http://localhost:11434/api/tags
|
OpenAI 兼容接口:Ollama 还提供 http://localhost:11434/v1/chat/completions(OpenAI 兼容),Open WebUI 和其他客户端都能直连。
四、Open WebUI(二合一 docker-compose)
open-webui/open-webui 是 GitHub 上最火的 Ollama Web 客户端(70k+ stars),支持知识库(RAG)、多用户、对话历史、图像生成、语音输入。
4.1 国内镜像加速
1
2
| docker pull ghcr.nju.edu.cn/open-webui/open-webui:main
docker pull ghcr.nju.edu.cn/ollama/ollama
|
ghcr.nju.edu.cn 是南京大学的 GitHub Container Registry 镜像。--add-host=host.docker.internal:host-gateway 让容器能访问宿主机(Ollama 在另一台时也要用)。
4.2 二合一 docker-compose
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| version: "3"
services:
ollama:
image: ghcr.nju.edu.cn/ollama/ollama
container_name: ollama
restart: always
volumes:
- /home/docker/ollama/data:/root/.ollama
ports:
- "11434:11434"
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
open-webui:
image: ghcr.nju.edu.cn/open-webui/open-webui:main
container_name: open-webui
restart: always
--add-host=host.docker.internal:host-gateway \
ports:
- "3000:8080"
volumes:
- /home/docker/ollama/open-webui:/app/backend/data
depends_on:
- ollama
|
启动:
4.3 Ollama 在另一台服务器
1
2
3
4
5
| docker run -d -p 3000:8080 \
-e OLLAMA_BASE_URL=https://ollama.internal.example.com \
-v open-webui:/app/backend/data \
--name open-webui --restart always \
ghcr.io/open-webui/open-webui:main
|
OLLAMA_BASE_URL:指定远程 Ollama 地址。
4.4 拉取模型
1
2
3
4
| # 1. 浏览器访问 http://<host>:3000
# 2. 用 admin 登录(第一个注册的账号自动是 admin)
# 3. 右上角 用户菜单 → 管理面板 → 设置 → 模型
# 4. 拉取:deepseek-r1:1.5b
|
或在 Open WebUI 容器内调 API:
1
2
3
4
5
| # 拉取模型(后台自动运行)
curl http://localhost:3001/api/pull -d '{"name": "deepseek-r1:32b"}'
# 验证
curl http://localhost:11434/api/tags
|
五、知识库(RAG)原理
5.1 三件套
- Ollama 跑 LLM(deepseek-r1 / qwen / llama3):回答用户问题
- Ollama 跑 Embedding 模型(
nomic-embed-text):把文本库切成 chunk、编码成向量 - Open WebUI 知识库:上传文档 → 自动向量化 → 检索时召回 Top K → 拼 prompt 喂 LLM
5.2 拉 Embedding 模型
1
| docker exec -it ollama ollama pull nomic-embed-text
|
5.3 工作流
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| [用户问 "如何配置 Harbor 复制?"]
│
▼
[Open WebUI 知识库]
│ ① 文档分块(chunk)
│ ② nomic-embed-text 向量化
│ ③ 存进向量库
│
│ 查询时:
│ ④ 问题 → nomic-embed-text 向量化
│ ⑤ 余弦相似度检索 Top 3
│ ⑥ 拼 prompt:"[上下文] + 用户问题"
▼
[Ollama LLM] → 回答
|
RAG vs Fine-tuning:私有文档问答优先 RAG(成本低、可解释、可更新);长期沉淀领域知识用 Fine-tuning。
六、LobeChat 备选
LobeChat 是另一个开源 AI 对话客户端,UI 更现代(仿 ChatGPT),支持多模型(OpenAI / Claude / Ollama)。
1
| docker pull lobehub/lobe-chat:1.53.12
|
Open WebUI vs LobeChat:
- Open WebUI:原生对 Ollama 友好,知识库内置,多用户权限完整
- LobeChat:UI 漂亮,插件市场丰富,知识库是付费功能
- 生产推荐 Open WebUI(开源 + 自带知识库)
七、模型选型速查
| 模型 | 参数量 | 显存需求 | 适合 |
|---|
| deepseek-r1:1.5b | 1.5B | 2GB | CPU 也能跑,翻译/简单问答 |
| deepseek-r1:7b | 7B | 8GB | RTX 3070+ 跑,编程/推理 |
| deepseek-r1:8b | 8B | 10GB | 综合能力强,推荐 |
| qwen2.5:7b | 7B | 8GB | 中文优化好 |
| qwen2.5:14b | 14B | 16GB | 中文场景首选 |
| llama3.1:70b | 70B | 80GB+ | 顶级,需要 A100/H100 |
| nomic-embed-text | 137M | 1GB | Embedding(向量化) |
国内场景:中文任务优先 qwen2.5 / deepseek 系列;英文代码任务用 deepseek-coder / codestral。
八、2024+ 视角补充
本文写于 2025-06,2025-2026 期间 Ollama / Open WebUI 生态持续爆发:
- Ollama 0.7+ / 0.10+:原生支持 Vision 模型(LLaVA / Qwen2-VL)、Tool Calling(Function Call)、结构化输出(JSON schema 强制)——企业 Agent 应用场景关键
- DeepSeek-R1 / Qwen3 系列成主流:DeepSeek-R1 671B 全参版本可通过 Ollama 跑(4-bit 量化后 400GB+,需多卡),Qwen3 系列在中文 / 编程 / 推理任务上全面超越 Llama3 同尺寸
- Open WebUI 0.5+:原生支持 Web Search(集成 Tavily / Google CSE / SearXNG)、Code Interpreter(沙箱执行 Python)、Image Generation(A1111 / ComfyUI 后端)
- AnythingLLM 1.0+(2025):向量数据库 + LLM 编排更专业,与 Open WebUI 形成"轻量 vs 企业"双选
- 多模态:Open WebUI 2025+ 支持上传图片 / 音频 / 视频解析
- 企业级:Ollama 0.10+ 引入 Ollama Turbo(云推理)+ 私有集群模式(self-host Enterprise)
实战建议(2025-2026 视角):
- 个人 / 团队知识库 → Open WebUI 0.5+ + Ollama 0.10+ + Qwen3 32B 仍是首选
- 企业 Agent → 推荐 Open WebUI + DeepSeek-R1 / Qwen3 + 自建 RAG(AnythingLLM)
- GPU 资源紧张 → Ollama 量化模型(Q4_K_M 是甜点);CPU 推理 → llama.cpp + GGUF 仍是更省的选择
- 云端推理混合 → Ollama Turbo / OpenAI 兼容 API 混合调用
九、扩展阅读