降低内存 (RAM) 占用
降低内存 (RAM) 占用
如果您在内存受限的环境中部署 Open WebUI(例如树莓派、小型 VPS 或共享主机),有几种策略可以显著减少内存消耗。
在运行 v0.3.10 版本的树莓派 4 (arm64) 上,通过这些优化,空闲内存消耗从 >1GB 减少到了 ~200MB(通过 docker container stats 观察)。
快速开始
设置以下环境变量可立即节省 RAM:
# 使用外部嵌入模型而不是本地 SentenceTransformers
RAG_EMBEDDING_ENGINE=ollama
# 使用外部语音转文本而不是本地 Whisper
AUDIO_STT_ENGINE=openai
tip
这些设置也可以在 管理员面板 > 设置 界面中配置 —— 将 RAG 嵌入设置为 Ollama 或 OpenAI,并将语音转文本设置为 OpenAI 或 WebAPI。
为什么 Open WebUI 占用这么多内存?
大部分内存消耗来自本地加载的机器学习模型。即使在使用外部 LLM(如 OpenAI 或独立的 Ollama 实例)时,Open WebUI 仍可能为以下功能加载额外的模型:
| 功能 | 默认设置 | 内存影响 | 解决方案 |
|---|---|---|---|
| RAG 嵌入 | 本地 SentenceTransformers | ~500-800MB | 使用 Ollama 或 OpenAI 嵌入 |
| 语音转文本 | 本地 Whisper | ~300-500MB | 使用 OpenAI 或 WebAPI |
| 重排序 (Reranking) | 已禁用 | 启用时 ~200-400MB | 保持禁用或使用外部服务 |
| 图像生成 | 已禁用 | 不定 | 如果不需要请保持禁用 |
⚙️ 降低内存的环境变量
将嵌入模型卸载到外部服务
节省内存最有效的方法是使用外部嵌入引擎:
# 选项 1:使用 Ollama 进行嵌入(如果您有独立运行的 Ollama)
RAG_EMBEDDING_ENGINE=ollama
# 选项 2:使用 OpenAI 进行嵌入
RAG_EMBEDDING_ENGINE=openai
OPENAI_API_KEY=your-api-key
卸载语音转文本 (STT)
本地 Whisper 模型会消耗大量内存:
# 使用 OpenAI 的 Whisper API
AUDIO_STT_ENGINE=openai
# 或者使用基于浏览器的 WebAPI(不需要外部服务)
AUDIO_STT_ENGINE=webapi
禁用未使用的功能
禁用不需要的功能以防止加载相关模型:
# 禁用图像生成(防止加载图像模型)
ENABLE_IMAGE_GENERATION=False
# 禁用代码执行(减少开销)
ENABLE_CODE_EXECUTION=False
# 禁用 代码解释器
ENABLE_CODE_INTERPRETER=False
减少后台任务开销
这些设置可以减少后台操作占用的内存:
# 禁用自动补全建议(高资源占用)
ENABLE_AUTOCOMPLETE_GENERATION=False
# 禁用自动标题生成
ENABLE_TITLE_GENERATION=False
# 禁用标签生成
ENABLE_TAGS_GENERATION=False
# 禁用后续建议生成
ENABLE_FOLLOW_UP_GENERATION=False
数据库和缓存优化
# 禁用实时聊天保存(减少数据库开销)
ENABLE_REALTIME_CHAT_SAVE=False
# 针对低资源系统减小线程池大小
THREAD_POOL_SIZE=10
向量数据库多租户
如果使用 Milvus 或 Qdrant,启用多租户模式以减少内存占用:
# 对于 Milvus
ENABLE_MILVUS_MULTITENANCY_MODE=True
# 对于 Qdrant
ENABLE_QDRANT_MULTITENANCY_MODE=True
🚀 推荐的最小化配置
对于内存极其受限的环境,请使用此组合配置:
# 将机器学习模型卸载到外部服务
RAG_EMBEDDING_ENGINE=ollama
AUDIO_STT_ENGINE=openai
# 禁用所有非核心功能
ENABLE_IMAGE_GENERATION=False
ENABLE_CODE_EXECUTION=False
ENABLE_CODE_INTERPRETER=False
ENABLE_AUTOCOMPLETE_GENERATION=False
ENABLE_TITLE_GENERATION=False
ENABLE_TAGS_GENERATION=False
ENABLE_FOLLOW_UP_GENERATION=False
# 减少工作线程开销
THREAD_POOL_SIZE=10
💡 其他提示
- 监控内存使用情况:使用
docker container stats或htop来监控内存消耗。 - 更改后重启:环境变量的更改需要重启容器才能生效。
- 全新部署:某些环境变量仅在没有现有
config.json的全新部署中生效。 - 考虑替代方案:对于极其受限的系统,考虑在性能更强的机器上运行 Open WebUI,然后远程访问。
相关指南
- 提高本地 LLM 性能 - 在不减少功能的情况下优化性能。
- 环境变量配置 - 所有配置选项的完整列表。