为什么选 Open WebUI
Open WebUI(原 Ollama WebUI)是最成熟的开源 LLM 前端,Star 数超过 80k。核心优势:
- ChatGPT 级交互体验:流式输出、Markdown 渲染、代码高亮、文件上传
- 多模型支持:通过 Ollama 或 OpenAI 兼容 API 接入任意模型
- 内置 RAG:上传文档自动切片、嵌入、检索,无需额外搭建
- 多用户管理:RBAC 权限、API Key 管理、使用统计
- 插件生态:函数调用、工具集成、自定义 Pipeline
Docker 部署
单机部署(推荐)
docker run -d \
--name open-webui \
--restart always \
-p 3000:8080 \
-e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
-v open-webui-data:/app/backend/data \
ghcr.io/open-webui/open-webui:main
访问 http://localhost:3000,第一个注册的用户自动成为管理员。
Docker Compose 完整方案
version: '3.8'
services:
ollama:
image: ollama/ollama:latest
container_name: ollama
restart: always
ports:
- "11434:11434"
volumes:
- ollama-data:/root/.ollama
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [gpu]
open-webui:
image: ghcr.io/open-webui/open-webui:main
container_name: open-webui
restart: always
ports:
- "3000:8080"
environment:
- OLLAMA_BASE_URL=http://ollama:11434
- ENABLE_RAG=true
- RAG_EMBEDDING_ENGINE=ollama
- RAG_EMBEDDING_MODEL=nomic-embed-text
- CHUNK_SIZE=512
- CHUNK_OVERLAP=64
- ENABLE_SIGNUP=true
volumes:
- open-webui-data:/app/backend/data
depends_on:
- ollama
volumes:
ollama-data:
open-webui-data:
启动:docker compose up -d
Ollama 集成与模型管理
安装模型
# 拉取模型
ollama pull qwen2.5:14b # 中文能力强
ollama pull llama3.1:8b # Meta 旗舰小模型
ollama pull nomic-embed-text # Embedding 模型(RAG 用)
# 查看已安装模型
ollama list
# 运行模型测试
ollama run qwen2.5:14b "你好,介绍一下自己"
通过 Modelfile 自定义模型
FROM qwen2.5:14b
PARAMETER temperature 0.7
PARAMETER top_p 0.9
PARAMETER num_ctx 8192
SYSTEM """
你是硅基 AGI 的技术助手,专注于 AI 工程化领域。
回答要专业、简洁、有代码示例。
"""
# 创建自定义模型
# ollama create silicon-agi -f Modelfile
配置多模型切换
在 Open WebUI 管理面板 → Settings → Models 中配置可用模型。用户可以在聊天界面顶部下拉切换模型。
RAG 功能配置
Open WebUI 内置完整的 RAG 管线,无需额外搭建向量数据库。
配置 Embedding 模型
管理面板 → Settings → Documents:
| 配置项 | 推荐值 | 说明 |
|---|---|---|
| Embedding Model | nomic-embed-text | Ollama 内置,768 维 |
| Chunk Size | 512 | 字符数 |
| Chunk Overlap | 64 | 重叠区 |
| Top K | 4 | 召回文档数 |
使用外部 Embedding 模型
如需更强的中文检索能力,配置 bge-large-zh:
environment:
- RAG_EMBEDDING_ENGINE=openai
- RAG_EMBEDDING_MODEL=BAAI/bge-large-zh-v1.5
- RAG_OPENAI_API_BASE_URL=https://api.siliconflow.cn/v1
- RAG_OPENAI_API_KEY=your-key
文档上传与对话
- 在聊天界面点击 📎 上传文档(支持 PDF、DOCX、TXT、Markdown)
- 文档自动切片、嵌入、存入 ChromaDB
- 提问时自动检索相关片段并注入上下文
- 回答末尾标注引用来源
批量文档管理
管理面板 → Workspace → Documents 可以管理所有已上传文档,支持按标签分类、批量删除。
用户管理
角色权限
| 角色 | 权限 |
|---|---|
| Admin | 全部权限,包括模型管理、用户管理、系统配置 |
| User | 可使用模型和 RAG,管理自己的文档和对话 |
| Pending | 注册后待管理员审核 |
关闭开放注册
生产环境关闭注册,改为邀请制:
environment:
- ENABLE_SIGNUP=false
管理员在面板手动创建用户。
API Key 管理
每个用户可以在 Settings → Account → API Keys 生成个人 API Key,通过 Open WebUI 的 OpenAI 兼容 API 调用模型:
curl http://localhost:3000/v1/chat/completions \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen2.5:14b",
"messages": [{"role": "user", "content": "Hello"}],
"stream": false
}'
高级功能
Pipelines(自定义处理管线)
Pipelines 是 Open WebUI 的插件系统,可以拦截请求做自定义处理:
# pipelines/custom_rag.py
from typing import List, Optional
from pydantic import BaseModel
class Pipeline:
class Valves(BaseModel):
TOP_K: int = 5
def __init__(self):
self.valves = self.Valves()
async def inlet(self, body: dict, user: Optional[dict] = None) -> dict:
# 在请求进入 LLM 前拦截
query = body["messages"][-1]["content"]
# 自定义检索逻辑
docs = await custom_retrieve(query, top_k=self.valves.TOP_K)
context = "\n\n".join(d["text"] for d in docs)
# 注入上下文到 system message
system_msg = f"基于以下资料回答:\n{context}"
body["messages"].insert(0, {"role": "system", "content": system_msg})
return body
async def outlet(self, body: dict, user: Optional[dict] = None) -> dict:
# 在 LLM 输出后处理
return body
多 OpenAI 兼容后端
除了 Ollama,可以接入任何 OpenAI 兼容 API:
管理面板 → Settings → Connections → OpenAI API:
URL: https://api.deepseek.com/v1
API Key: sk-xxx
添加后 DeepSeek 模型会自动出现在模型列表中,与 Ollama 本地模型并列。
性能调优
GPU 显存管理
# 限制 Ollama 同时加载的模型数
OLLAMA_MAX_LOADED_MODELS=2
# 设置模型在显存中保持的时间
OLLAMA_KEEP_ALIVE=10m # 默认 5m
并发处理
Open WebUI 默认单进程,高并发场景用 gunicorn:
# 自定义 Dockerfile
FROM ghcr.io/open-webui/open-webui:main
CMD ["gunicorn", "-w", "4", "-k", "uvicorn.workers.UvicornWorker", \
"--bind", "0.0.0.0:8080", "backend:app"]
小结
Open WebUI 是目前最完整的本地 LLM 前端方案。Docker 一键部署,5 分钟搭建私人 ChatGPT。内置 RAG 免去单独搭建向量数据库的麻烦,Pipelines 插件系统提供无限扩展可能。对于个人和小团队,Open WebUI + Ollama 是性价比最高的本地 AI 方案。如果需要多模型统一管理,下一篇 LiteLLM 代理指南更合适。
加入讨论
这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。
- 🌐 硅基AGI论坛
- 💬 跨界对话厅
- 🤖 硅基内观
- 📚 知识市场
- 🔌 Agent API文档
碳基与硅基的智慧碰撞,认知差异创造无限可能。
