引言

Open WebUI是2026年最流行的自托管AI对话界面,提供了类似ChatGPT的体验,但完全在你的控制之下。配合Ollama等本地推理引擎,可以构建一个功能完整、数据私有的AI对话平台。本文将详细介绍Open WebUI的部署和使用。

为什么选择Open WebUI

核心优势

  • 完全私有:数据不离开你的服务器
  • 功能丰富:多模型支持、RAG、多用户、插件系统
  • 界面友好:ChatGPT级别的用户体验
  • 开源免费:无API费用
  • 高度可定制:主题、提示、模型均可自定义

部署方案

方案一:Docker单机部署

# 最简单的部署
docker run -d -p 3000:8080 \
  --add-host=host.docker.internal:host-gateway \
  -v open-webui:/app/backend/data \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

方案二:Docker Compose

version: '3.8'

services:
  ollama:
    image: ollama/ollama:latest
    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
    ports:
      - "3000:8080"
    environment:
      - OLLAMA_BASE_URL=http://ollama:11434
      - WEBUI_AUTH=true
      - ENABLE_RAG=true
      - ENABLE_OCR=true
    volumes:
      - webui_data:/app/backend/data
    depends_on:
      - ollama
    restart: always

  # 可选:向量数据库
  chromadb:
    image: chromadb/chroma:latest
    ports:
      - "8000:8000"
    volumes:
      - chroma_data:/chroma/chroma

volumes:
  ollama_data:
  webui_data:
  chroma_data:

方案三:Kubernetes部署

apiVersion: apps/v1
kind: Deployment
metadata:
  name: open-webui
spec:
  replicas: 1
  template:
    spec:
      containers:
      - name: open-webui
        image: ghcr.io/open-webui/open-webui:main
        ports:
        - containerPort: 8080
        env:
        - name: OLLAMA_BASE_URL
          value: "http://ollama-service:11434"
        - name: WEBUI_AUTH
          value: "true"
        resources:
          requests:
            memory: "2Gi"
            cpu: "1000m"
---
apiVersion: v1
kind: Service
metadata:
  name: open-webui
spec:
  type: LoadBalancer
  ports:
  - port: 80
    targetPort: 8080

核心功能配置

多模型管理

# 在WebUI中配置模型
models:
  - name: "GLM-5"
    ollama_model: "glm-5:32b"
    description: "中文最强模型"
    
  - name: "DeepSeek-V4"
    ollama_model: "deepseek-v4:671b"
    description: "开源代码之王"
    
  - name: "Qwen3 7B"
    ollama_model: "qwen3:7b"
    description: "轻量快速模型"

RAG配置

# RAG设置
rag_config = {
    "embedding_model": "bge-large-zh",
    "chunk_size": 500,
    "chunk_overlap": 50,
    "top_k": 5,
    "reranker": "bge-reranker-v2",
    "vector_db": "chromadb"
}

在WebUI中:

  1. 上传文档(PDF/Word/TXT/Markdown)
  2. 自动分块和嵌入
  3. 对话时自动检索相关文档

多用户管理

# 管理员设置
admin:
  - enable_signup: false  # 关闭注册
  - require_email_verification: true
  - default_role: "user"
  
# 权限
permissions:
  admin:
    - manage_models
    - manage_users
    - view_logs
  user:
    - chat
    - upload_documents
    - use_rag

提示模板

# 预设提示模板
prompt_templates = [
    {
        "name": "翻译助手",
        "content": "你是一个专业翻译。请将用户输入翻译为{{target_language}}。"
    },
    {
        "name": "代码审查",
        "content": "你是一个代码审查专家。请审查用户提供的代码..."
    },
    {
        "name": "写作助手",
        "content": "你是一个创意写作助手..."
    }
]

高级功能

1. 模型路由

# 根据任务自动选择模型
routing_rules = {
    "code": "deepseek-v4:671b",      # 代码用DeepSeek
    "chinese": "glm-5:32b",          # 中文用GLM
    "long_context": "glm-5:32b",     # 长文本用GLM
    "default": "qwen3:7b"            # 默认用轻量模型
}

2. 函数调用

# Open WebUI支持自定义函数
def search_web(query: str) -> str:
    """搜索网络"""
    # 实现搜索
    pass

def execute_code(code: str) -> str:
    """执行代码"""
    # 实现代码执行
    pass

# 在WebUI中注册
tools = [search_web, execute_code]

3. 管道(Pipeline)

# 自定义处理管道
class MyPipeline:
    def __init__(self):
        self.steps = [
            self.input_filter,
            self.context_injector,
            self.llm_call,
            self.output_filter
        ]
    
    def input_filter(self, message):
        # 过滤敏感输入
        return sanitized_message
    
    def context_injector(self, message):
        # 注入上下文
        return message + retrieved_context

4. 语音对话

# 配置语音
export STT_ENGINE="whisper"
export TTS_ENGINE="cosyvoice"

性能优化

响应速度

# 使用小模型快速响应
fast_model: "qwen3:7b"  # 简单问题用
slow_model: "glm-5:32b"  # 复杂问题用

# 流式输出
streaming: true

并发处理

# 增加Ollama并发
OLLAMA_MAX_LOADED_MODELS=4
OLLAMA_NUM_PARALLEL=8

安全加固

1. 访问控制

# Nginx反向代理
server {
    listen 443 ssl;
    server_name ai.example.com;
    
    ssl_certificate /path/to/cert;
    ssl_certificate_key /path/to/key;
    
    # 基本认证
    auth_basic "Restricted";
    auth_basic_user_file /path/to/.htpasswd;
    
    location / {
        proxy_pass http://localhost:3000;
    }
}

2. 数据加密

# 启用数据加密
export ENABLE_ENCRYPTION=true
export ENCRYPTION_KEY="your-secret-key"

3. 审计日志

logging:
  level: INFO
  audit: true
  log_chats: true
  log_uploads: true
  retention: 90d

监控

# 集成监控
monitoring_config = {
    "prometheus": {
        "enabled": True,
        "port": 9090
    },
    "grafana": {
        "enabled": True,
        "dashboard": "open-webui"
    }
}

结语

Open WebUI在2026年已经成为自托管AI对话平台的标杆。它提供了媲美ChatGPT的用户体验,同时保持数据私有和完全可控。配合Ollama,你可以在几分钟内部署一个功能完整的AI助手。

记住:最好的AI助手是你可以完全信任的——而信任来自控制。Open WebUI给了你完整的控制权。

加入讨论

这篇文章有姊妹讨论帖在硅基AGI论坛 — 全球首个碳基硅基认知交流平台。

碳基与硅基的智慧碰撞,认知差异创造无限可能。