本教程由社区贡献,不属于 Open WebUI 团队的支持范围。它仅作为如何根据您的特定用例自定义 Open WebUI 的演示。想贡献吗?请查阅贡献教程。
在离线模式下运行 Open WebUI 🔌
如果您想在离线模式下运行 Open WebUI,您需要考虑您的安装方法并相应调整您所需的功能。在本指南中,我们将介绍实现与在线版本基本相似设置的不同方法。
离线模式意味着什么?
Open WebUI 的离线模式允许您在不需要活跃互联网连接的情况下运行应用程序。这使您可以为您的 LLM 和工具创建一个“气隙”环境(完全的“气隙”环境需要将实例与互联网隔离)。
启用离线模式时禁用的功能
- 自动版本更新检查
- 从 Hugging Face Hub 下载嵌入模型
- 如果您在激活
OFFLINE_MODE
之前未下载嵌入模型,任何 RAG、网页搜索和文档分析功能可能无法正常工作
- 如果您在激活
- UI 中的更新通知
仍可用的功能
- 外部 LLM API 连接(OpenAI 等)
- OAuth 认证提供商
- 使用外部 API 进行网页搜索和 RAG
如何启用离线模式?
离线模式必须通过环境变量 OFFLINE_MODE
启用。根据您部署 Open WebUI 的方式应用此环境变量。
请考虑您是否需要在部署开始时就让应用程序处于离线状态。如果您的用例不需要立即具备离线能力,请遵循方法二以便更轻松地进行设置。
方法一
一:语音转文本
本地 whisper
安装默认不包含模型。在这方面,如果您想使用外部模型/提供商,只能部分遵循指南。要使用本地 whisper
应用程序,您必须首先下载您选择的模型(例如 Huggingface - Systran)。
from faster_whisper import WhisperModel
faster_whisper_kwargs = {
"model_size_or_path": "Systran/faster-whisper-large-v3",
"device": "cuda", # set this to download the cuda adjusted model
"compute_type": "int8",
"download_root": "/path/of/your/choice"
}
WhisperModel(**faster_whisper_kwargs)
下载目录的内容必须复制到您的 Open WebUI 部署中的 /app/backend/data/cache/whisper/models/
。通过环境变量直接声明您的 whisper
模型是合理的,例如:WHISPER_MODEL=Systran/faster-whisper-large-v3
。
一:文本转语音
默认的本地 Transformer 已经可以处理文本转语音功能。如果您偏好不同的方法,请遵循其中一个指南。
一:嵌入模型
出于各种目的,您将需要一个嵌入模型(例如 RAG)。您首先必须下载您选择的此类模型(例如 Huggingface - sentence-transformers)。
from huggingface_hub import snapshot_download
snapshot_download(repo_id="sentence-transformers/all-MiniLM-L6-v2", cache_dir="/path/of/your/choice")
下载目录的内容必须复制到您的 Open WebUI 部署中的 /app/backend/data/cache/embedding/models/
。通过环境变量直接声明您的嵌入模型是合理的,例如:RAG_EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
。
方法二
在设置期间使用互联网连接运行 Open WebUI
这是实现离线设置的最简单方法,几乎包含在线版本中的所有可用功能。仅应用您希望用于部署的功能。
二:语音转文本
请遵循指南。
二:文本转语音
请遵循其中一个指南。
二:嵌入模型
在您的 Open WebUI 安装中,导航到 管理设置
> 设置
> 文档
,然后选择您想要使用的嵌入模型(例如 sentence-transformer/all-MiniLM-L6-v2)。选择后,点击旁边的下载按钮。
安装完所有所需功能后,根据您的 Open WebUI 部署类型设置环境变量 OFFLINE_MODE=True
。
旁注
如前所述,要实现 Open WebUI 的完全离线体验,您必须将您的实例与互联网断开。离线模式仅防止在没有互联网连接时 Open WebUI 内部出现错误。
如何断开您的实例取决于您。这里提供一个通过 docker-compose
的示例
services:
# requires a reverse-proxy
open-webui:
image: ghcr.io/open-webui/open-webui:main
restart: unless-stopped
environment:
- OFFLINE_MODE=True
- RAG_EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
- WHISPER_MODEL=Systran/faster-whisper-large-v3
volume:
- ./open-webui-data:/app/backend/data
- ./models/sentence-transformers/all-MiniLM-L6-v2:/app/backend/data/cache/embedding/models/
- ./models/Systran/faster-whisper-large-v3:/app/backend/data/cache/whisper/models/
networks:
- open-webui-internal
networks:
open-webui-internal:
name: open-webui-internal-network
driver: bridge
internal: true