Featured image of post Ollama + Open WebUI:本地大模型与 AI 知识库一体化部署实战

Ollama + Open WebUI:本地大模型与 AI 知识库一体化部署实战

Ollama 拉取 deepseek-r1 / llama3 / qwen 等模型、CPU/GPU 容器化部署、Open WebUI 知识库二合一、LobeChat 备选——把"私有化 AI 助手"的完整工具链一次说清

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 WebUIWeb 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

启动:

1
docker-compose up -d

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 三件套

  1. Ollama 跑 LLM(deepseek-r1 / qwen / llama3):回答用户问题
  2. Ollama 跑 Embedding 模型nomic-embed-text):把文本库切成 chunk、编码成向量
  3. 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.5b1.5B2GBCPU 也能跑,翻译/简单问答
deepseek-r1:7b7B8GBRTX 3070+ 跑,编程/推理
deepseek-r1:8b8B10GB综合能力强,推荐
qwen2.5:7b7B8GB中文优化好
qwen2.5:14b14B16GB中文场景首选
llama3.1:70b70B80GB+顶级,需要 A100/H100
nomic-embed-text137M1GBEmbedding(向量化)

国内场景:中文任务优先 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 混合调用

九、扩展阅读

使用 Hugo 构建
主题 StackJimmy 设计