flag92 flag92
组合方案

Open WebUI + Ollama — 全本地推理客服方案

数据完全不出网的硬要求下,单台 GPU 服务器跑 Open WebUI + Ollama + Qwen + 本地 Embedding,覆盖金融 / 医疗 / 政企合规场景。

场景
金融 / 医疗 / 政企等数据合规严苛场景,所有 AI 推理必须在本地
月成本
$700 - $4,000(含 GPU)
难度
复杂
Open WebUIOllamaQwenbge-m3ChatwootvLLM (可选)

这套方案在解决什么问题#

云端 LLM(OpenAI / Claude / 国产云接口)虽然便宜好用,但有些场景根本不能用

  • 银行 / 证券 / 保险——客户对话含金融数据,监管不允许出境
  • 医院 / 医美——病历 / 检查报告属于 PHI 健康信息
  • 政企 / 国央企——所有数据必须在境内、加密存储、审计留存
  • 涉密研究机构——数据流出即重大事故

Open WebUI + Ollama 是 2026 年「全本地推理 AI 客服」最成熟的组合:

  • 单台 GPU 服务器即可启动
  • LLM、Embedding、Reranker 都本地
  • 提供完整的多用户、Pipelines(Python 中间件)、知识库
  • 可外接 Chatwoot 当客户入口

架构#

Agent Bot

脱敏 / 审计

内网 only

WORM 审计

审计

认证客户

Chatwoot

Open WebUI

Pipelines
Python 中间件

Ollama

Qwen 14B / 32B
本地 GPU

知识库
LanceDB

text-embeddings-inference
bge-m3 本地

本地 ERP / 病历系统

审计日志

何时选这套方案#

情况适合?
数据合规要求数据不出境 / 本地✓ 必须
已经有 GPU 服务器(沉没成本)✓ 强烈推荐
月会话量 < 5,000,且能接受较高延迟✓ 可行
月会话量 > 50,000,需要高并发⚠ 需要专业 GPU 集群
没有合规约束,只是想省钱✗ 云端 DeepSeek 更便宜

硬件配置#

场景模型GPUCPU / 内存月成本(云租)
小型 / POCQwen 2.5-7B q41 × A10 24GB8C/32G~$500
中型生产Qwen 2.5-14B q41 × A100 40GB16C/64G~$1,500
大型 / 企业Qwen 2.5-72B q42 × A100 80GB32C/128G~$4,000
极致性能Qwen 2.5-72B fp16 + vLLM4 × H10064C/256G$10k+

部署步骤#

1. 装 Ollama 与模型#

# 装 Ollama
curl -fsSL https://ollama.com/install.sh | sh
sudo systemctl enable --now ollama

# 拉模型(量化版本,省显存)
ollama pull qwen2.5:14b-instruct-q4_K_M

# 测试
ollama run qwen2.5:14b-instruct-q4_K_M "你好"

GPU 利用率检查:

nvidia-smi  # 应该看到 ollama 进程占用 GPU

2. 装本地 Embedding 服务#

关键:不要用 OpenAI Embedding,否则数据出网,合规直接废。

docker run -d --name tei \
  --gpus all -p 8080:80 \
  -v $PWD/tei-data:/data \
  ghcr.io/huggingface/text-embeddings-inference:1.5 \
  --model-id BAAI/bge-m3

3. 装 Open WebUI#

docker run -d --name openwebui \
  -p 3000:8080 \
  -v openwebui:/app/backend/data \
  --add-host=host.docker.internal:host-gateway \
  -e OLLAMA_BASE_URL=http://host.docker.internal:11434 \
  -e DEFAULT_MODELS=qwen2.5:14b-instruct-q4_K_M \
  -e DEFAULT_LOCALE=zh-CN \
  ghcr.io/open-webui/open-webui:main

打开 http://YOUR_IP:3000,注册管理员。

Settings → Documents → Embedding Model

  • Type: OpenAI
  • API Base URL: http://host.docker.internal:8080
  • Model: bge-m3

4. 配置 Pipelines(业务中间件)#

Pipelines 是 Open WebUI 给 Python 工程师的「中间件层」,跑在独立容器:

docker run -d --name pipelines \
  -p 9099:9099 \
  -v pipelines-data:/app/pipelines \
  ghcr.io/open-webui/pipelines:main

写一个 Pipeline 实现「对话脱敏 + 审计」:

# pipelines/desensitize.py
import re
from typing import List, Optional

class Pipeline:
    def __init__(self):
        self.name = "Desensitize + Audit"
        self.id_pattern = re.compile(r'\b\d{15,18}[Xx0-9]?\b')  # 身份证
        self.phone_pattern = re.compile(r'\b1[3-9]\d{9}\b')

    def pipe(self, body: dict, user: dict, **kwargs):
        msg = body['messages'][-1]['content']

        # 脱敏
        msg = self.id_pattern.sub('[ID]', msg)
        msg = self.phone_pattern.sub('[PHONE]', msg)
        body['messages'][-1]['content'] = msg

        # 审计日志
        with open('/app/pipelines/audit.log', 'a') as f:
            f.write(f"{user.get('id')}|{user.get('name')}|{msg[:200]}\n")

        return body

Open WebUI 配上 Pipelines URL http://pipelines:9099 即可在 LLM 调用前自动应用。

5. 接 Chatwoot 作为客户入口#

# Chatwoot Agent Bot
Outgoing URL: http://openwebui:3000/api/chat/completions
Auth Header:
  Authorization: Bearer <Open WebUI API Key>

客户在 Chatwoot 提问 → Open WebUI → Pipelines 脱敏 → Ollama 本地推理 → 答案返回 → Chatwoot 回复客户。

实测性能(Qwen 14B q4 on 1 × A100 40GB)#

指标数值
首 token 延迟800-1200 ms
生成速度45-60 tokens/秒
RAG 检索延迟50-80 ms
端到端首响1.5-2.5 秒
单 GPU 并发上限~80 并发
单日吞吐80 并发 × 80 秒/会话 ≈ 86,400 会话/天理论

合规设计要点#

数据流必须本地#

数据必须在哪
客户对话明文本地
LLM 推理本地 GPU
Embedding 计算本地 GPU
向量库本地存储
知识库原文本地存储
审计日志WORM 存储

强身份验证#

  • Chatwoot Widget 必须接 SSO(OAuth / 公司 IDP)
  • 未认证客户只能访问「公开 FAQ」分支
  • 已认证客户才能进入业务问答

审计留存#

  • 每条对话、Prompt、模型版本、知识库版本都记录
  • 用 WORM 存储或 S3 Object Lock
  • 留存周期看监管要求(金融通常 5 年+)

成本估算#

自有 GPU(最划算)#

月成本
GPU 折旧(A100 一次性 $15k / 36 月)$400
电费(A100 ~250W × 24h)$50
CPU 主机 + 网络$80
Chatwoot 等辅助服务$30
合计~$560 / 月

云租 GPU#

中型生产 1 × A100 40GB + 16C/64G:~$1,500 / 月

关键提醒#

  • vLLM 替代 Ollama 能把并发拉到 5-10 倍,生产环境推荐
  • 量化精度:q4 比 fp16 快 2-3 倍但准确率下降 < 5%,合规场景可接受
  • 不要 GPU 共享多个项目——内存碎片会卡死

与云端方案的真实对比#

维度本地 Qwen 14B云端 Qwen 72B
准确率(同测试集)4.0 / 54.4 / 5
首响延迟1500 ms800 ms
月成本(5,000 会话)$560-1,500$50-150
数据合规✗ 部分场景禁用
运维复杂度极低

坦白结论:本地推理唯一的理由是合规。成本上云端碾压本地。

常见坑#

  1. GPU 显存不够:14B 用 q4 量化占约 9GB,24GB 卡够;32B 需要 80GB
  2. Ollama 并发瓶颈:默认串行,需要改 OLLAMA_NUM_PARALLEL=4
  3. Pipelines 中间件易丢消息:要加重试 + 死信队列
  4. 审计日志膨胀:每日几 GB,需要 logrotate + 定期归档到 WORM
  5. Open WebUI 升级风险:升级前先在测试环境跑一遍,社区版偶尔有 breaking change

相关阅读#

站内搜索

按 ⌘ K 随时唤起