Ollama + Open WebUI 搭建团队 AI 助手

把大模型留在自己机房,是很多团队上 AI 的第一道门槛。Ollama 负责把模型跑起来,Open WebUI 负责给同事一个像 ChatGPT 那样好用的界面——两者组合,半天就能搭出一个数据不出网的团队 AI 助手。

一、为什么要自建 AI 助手

直接买 SaaS 版聊天机器人最省事,但三类团队迟早要自己搭:第一类处理客户合同、财务报表等敏感数据,不敢明文传第三方;第二类调用量大,按 token 计费月底账单吓人;第三类要在模型外挂私有知识、定制人设与审批流,通用产品满足不了。再往深了说,SaaS 的模型版本你控制不了——今天还是这个版本,明天厂商一升级,回答风格和准确率都可能漂移,对需要稳定输出的业务是隐患。自建的核心收益就三个词:数据不出网、成本可控、行为可审计。而 Ollama + Open WebUI 是当下门槛最低、文档最全的一条路,单机就能跑,不需要 Kubernetes,运维心智负担小。

二、整体架构:各管一摊

这套组合只分两层,理解清楚就不会迷路:

  • Ollama:模型运行时。它负责下载、加载、推理大模型,对外暴露一个本地 HTTP 接口(默认 11434 端口)。你可以把它当成”模型服务器”。
  • Open WebUI:交互层。它提供网页界面、用户体系、对话历史、RAG 检索,背后通过 OLLAMA_BASE_URL 把请求转发给 Ollama。你可以把它当成”自带权限的 ChatGPT 前端”。

两者解耦的好处是:模型想换就换(qwen2.5、llama3、deepseek 随意切),前端想加功能就加功能,互不绑架。

三、第一步:用 Ollama 跑起本地大模型

在 Linux 服务器上装好 Ollama 后(官方一键脚本),先拉一个对中文友好的模型。团队场景建议从 7B 量化版起步,显存占用小、响应快:

# 拉取并运行一个中文友好的模型
ollama pull qwen2.5:7b
ollama run qwen2.5:7b

# 查看本机已下载的模型
ollama list

# 启动常驻服务(默认监听 11434)
ollama serve

如果希望固化”公司助手”的人设、统一上下文长度,用 Modelfile 封装一个专属模型,避免每个人每次都重新写提示词:

FROM qwen2.5:7b

# 设定系统提示词,固化团队助手的人设
SYSTEM """你是公司内部 AI 助手,只基于公开资料回答,不泄露任何内部未公开信息。"""

# 调高上下文窗口,适配长文档问答
PARAMETER num_ctx 8192

保存为 Modelfile 后执行 ollama create team-assistant -f Modelfile 即可生成一个新模型名。关于显存与量化参数的取舍,可参考本地大模型量化部署:GGUF 与 llama.cpp 调优,里面把 4-bit/5-bit 量化的显存账算得很清楚。

3.1 模型选型:团队用多大够用

不是模型越大越好,团队助手 90% 的诉求是”问答、总结、改写、写 SQL”,7B~14B 量化版已经能打。只有在需要复杂推理或长程代码生成时才上 32B/70B。显存大概的对应关系:

模型规模量化后显存适用场景
7B约 4~6 GB日常问答、摘要、改写,单机首选
14B约 8~10 GB中等推理、带格式的代码生成
32B约 18~22 GB强推理、复杂 Agent 编排
70B+40 GB 以上接近旗舰体验,需多卡或云推理

建议先用 7B 把链路跑通、让同事用起来,再根据真实反馈决定要不要上更大的模型。盲目上 70B 往往只是把显存压满,体验提升却有限。

四、第二步:一条命令部署 Open WebUI

Open WebUI 官方提供镜像,用 Docker 起最稳。关键是把数据目录挂成 volume,否则容器一删用户全没:

docker run -d \
  --name open-webui \
  -p 8080:8080 \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  -v open-webui-data:/app/backend/data \
  ghcr.io/open-webui/open-webui:main

几个要点:OLLAMA_BASE_URL 指向宿主机的 Ollama 地址;macOS/Windows 上用 host.docker.internal,Linux 上换成宿主机真实内网 IP(如 http://192.168.1.10:11434)。启动后访问 http://服务器IP:8080,第一位注册的用户自动成为管理员。

4.1 用 compose 管起来更省心

生产环境建议写成 docker-compose,把端口、数据卷、重启策略固定下来,升级时 docker compose pull && docker compose up -d 一行搞定,不会丢配置。

五、第三步:把知识接进来(可选 RAG)

光有模型还不够,团队助手真正有用是因为”懂公司”。Open WebUI 内置文档上传与向量检索,上传 PDF/Word 即可在对话里引用。若你需要更完整的”私有知识库 + 工作流”方案,可以看2026 年搭建私有 AI 知识库:Dify + Ollama 本地部署完整教程,它把知识入库、切分、召回的全链路讲透了;Open WebUI 胜在轻量和界面友好,Dify 胜在流程编排,按团队成熟度二选一或搭配用都行。

六、第四步:团队权限与多用户管理

面向团队,必须解决”谁能注册、谁能用什么模型”。Open WebUI 管理员面板里可以:关闭开放注册(仅邀请)、建用户组、给组分配可见模型。一个稳妥的落地节奏是:先开开放注册让核心 3~5 人内测、跑通工作流,再关掉公开注册、改成邀请制,避免外部人员蹭算力。常用环境变量:

# 关闭公开注册,只允许管理员邀请
-e WEBUI_AUTH=false   # 仅内网可信环境可关;公网务必保持 true

# 限制单用户并发与令牌,防止某人把 GPU 占满
-e OLLAMA_MAX_LOADED_MODELS=2

# 通过反向代理(如 Nginx)统一加 HTTPS 与登录保护

公网暴露时,务必在前面套一层 Nginx 反代做 HTTPS 与访问控制,做法可对照Nginx 反向代理实战。多模型统一路由(比如把贵的大模型走云 API、便宜的走本地)则可用LiteLLM 多模型网关收口,Open WebUI 直接填网关地址即可。

七、生产环境避坑清单

自建最怕”本地能跑、上线就崩”。把这几条提前堵上:

坑点现象对策
模型太大内存爆Ollama 进程被 OOM 杀掉选 7B/14B 量化版;用 num_gpu 限制显存占用
Open WebUI 连不上 Ollama界面模型列表为空OLLAMA_BASE_URL 用宿主机真实 IP,放行 11434 端口
数据卷没挂升级后用户与对话清零务必挂载 volume 持久化 /app/backend/data
首字延迟高打字机卡顿、体验差开 GPU 推理、合理设 num_ctx、首次请求前预热模型
公网裸奔被扫到后滥用算力Nginx 反代 + HTTPS + 关闭开放注册

八、总结

Ollama 解决”模型怎么跑”,Open WebUI 解决”同事怎么用”,两者一Docker一配,半天交付一个数据不出网、成本可算、权限可控的团队 AI 助手。下一步想上规模,把模型推理换成vLLM 高吞吐部署,前面再接 LiteLLM 网关统一调度,就能从”能用了”平滑演进到”扛得住”。

上一篇 递归 CTE 实战:用 WITH RECURSIVE 查询树形与层级数据
下一篇 Nginx 重定向循环 Too many redirects
最新评论
Docker 网络模式详解:bridge/host 生产选型 - FSData
Docker 网络模式详解:bridge/host 生产选型 - FSData
8月20日
[…] 注意最后那条:把端口绑定到 127.0.0.1,再由宿主机上的 Nginx 反代进来,比直接 -p 80:80 暴露安全得多,也方便统一做
Vue3 + TypeScript 工程化:类型安全的前端架构 - FSData
Vue3 + TypeScript 工程化:类型安全的前端架构 - FSData
8月20日
[…] Pinia 的工程化用法,可以参考我们之前的实战文章 《Vue3 组合式 API + Pinia:状态管理从入门到实战》,那里覆盖了 Sto
2026 年最值得装的 10 个 VS Code 插件(AI/前端/后端/效率全覆盖) - FSData
2026 年最值得装的 10 个 VS Code 插件(AI/前端/后端/效率全覆盖) - FSData
8月19日
[…] 状态,点一下就能起停容器,配合我们讲过的 Docker Compose 编排 […]
Redis 缓存设计:穿透、击穿、雪崩与最佳实践 - FSData
Redis 缓存设计:穿透、击穿、雪崩与最佳实践 - FSData
8月19日
[…] 缓存三大坑的本质都是”缓存失效导致请求穿透到数据库”。记住口诀:穿透用布隆、击穿用锁、雪崩用错峰。配合合理的过期策略
GitHub Actions 实战:从零搭建 CI/CD 流水线 - FSData
GitHub Actions 实战:从零搭建 CI/CD 流水线 - FSData
8月19日
[…] Docker 镜像部署。结合我们之前写的 Docker Compose 一键编排实战,可以在 CI […]