【信创】OpenWebUI 离线部署方案梳理(方案1:本地all-MiniLM-L6-v2嵌入模型,适配飞腾内网断网环境)
笔者在本文基础上进一步细化梳理并逐步通过真实环境验证详细请转移至https://blog.csdn.net/cnxzzcn/article/details/165469380OpenWebUI 离线部署方案梳理方案1本地all-MiniLM-L6-v2嵌入模型适配飞腾内网断网环境整体架构OpenWebUI前端Web界面提供对话RAG知识库ChromaDB独立容器向量数据库不再使用OpenWebUI内置废弃嵌入式Chroma解决v0.11.3 chroma弃用报错Ollama宿主机裸机部署不在docker容器内负责LLM推理OpenWebUI通过host.docker.internal访问11434端口Embedding模型all-MiniLM-L6-v2外网提前下载到本地挂载目录关闭自动联网更新内网断网直接加载不再访问HuggingFace端口映射OpenWebUI宿主机3000 → 容器内8080网页访问地址http://宿主机IP:3000ChromaDB宿主机8000 → 容器内8000一、外网准备机操作当前这台机器用于下载模型、导出镜像作为打包源1. 目录初始化# 创建持久化目录mkdir-p/data/openwebui_data/modelsmkdir-p/data/chroma_data/data/openwebui_dataOpenWebUI业务数据账号、对话记录、上传文档、all-MiniLM-L6-v2嵌入模型/data/chroma_dataChroma向量库持久化存储2. 离线下载嵌入模型 all-MiniLM-L6-v2# 安装依赖aptinstallpython3-pip-ypip3installhuggingface_hub# 国内镜像下载模型生成脚本执行避免命令换行问题catdownload_model.pyEOF import os os.environ[HF_ENDPOINT] [https://hf-mirror.com](https://hf-mirror.com) from huggingface_hub import snapshot_download snapshot_download( repo_idsentence-transformers/all-MiniLM-L6-v2, local_dir/data/openwebui_data/models/all-MiniLM-L6-v2, local_dir_use_symlinksFalse ) EOFpython3 download_model.py# 校验模型文件必须能看到 pytorch_model.bin、config.jsonls/data/openwebui_data/models/all-MiniLM-L6-v23. docker-compose.yml 完整配置文件services:chromadb:image:chromadb/chroma:latestcontainer_name:chromadbrestart:alwaysvolumes:-/data/chroma_data:/chroma/chromaports:-8000:8000environment:-CHROMA_SERVER_AUTHN_PROVIDERnoneopen-webui:image:ghcr.io/open-webui/open-webui:maincontainer_name:open-webuirestart:alwaysports:-3000:8080volumes:-/data/openwebui_data:/app/backend/dataextra_hosts:-host.docker.internal:host-gatewayenvironment:-OLLAMA_API_BASE_URL[http://host.docker.internal:11434/api](http://host.docker.internal:11434/api)-VECTOR_DBchroma-CHROMA_HTTP_HOSTchromadb-CHROMA_HTTP_PORT8000-UVICORN_WORKERS1-RAG_EMBEDDING_MODEL/app/backend/data/models/all-MiniLM-L6-v2-RAG_EMBEDDING_MODEL_AUTO_UPDATEfalsedepends_on:-chromadbhealthcheck:test:[CMD,curl,-f,[http://127.0.0.1:8080/health](http://127.0.0.1:8080/health)]interval:10stimeout:20sretries:104. 启动整套服务cd/data/openwebui_yml# 清理旧向量库模型目录openwebui_data不要删除dockercompose downrm-rf/data/chroma_datamkdir-p/data/chroma_data# 启动dockercompose up-d# 查看实时日志观察启动过程dockerlogs-fopen-webui5. 服务校验命令# 1. 检查健康接口返回{status:true}代表web服务正常dockerexec-itopen-webuicurl-v[http://127.0.0.1:8080/health](http://127.0.0.1:8080/health)# 2. 校验RAG环境变量dockerexecopen-webuienv|grepRAG# 3. 校验容器内模型挂载dockerexec-itopen-webuils/app/backend/data/models/all-MiniLM-L6-v2浏览器访问http://宿主机IP:3000注册管理员账号测试知识库上传文档RAG问答。6. 导出镜像内网飞腾部署用# 导出两个容器镜像-到当前目录dockersave ghcr.io/open-webui/open-webui:main-o./openwebui-arm64.tardockersave chromadb/chroma:latest-o./chromadb-arm64.tar# 导出数据目录-从目标文件压缩到当前目录生成压缩文件tar-zcfopenwebui_data.tar.gz /data/openwebui_data/tar-zcfchroma_data.tar.gz /data/chroma_data/# 导出yml配置文件tar-zcfopenwebui_yml.tar.gz /data/openwebui_yml二、内网飞腾机器断网环境部署步骤内网前提宿主机已安装Ollama提前拉好需要的大模型宿主机安装docker、docker-compose将外网打包文件拷贝至内网openwebui-arm64.tarchromadb-arm64.tar整个/data/openwebui_data目录包含预下载的embedding模型整个/data/chroma_data目录向量知识库可选新建空目录也可以docker-compose.yml内网加载镜像dockerloadopenwebui-arm64.tardockerloadchromadb-arm64.tar把数据目录放到内网机器同路径/data/启动服务cd/data/openwebui_ymldockercompose up-d访问http://内网宿主机IP:3000直接使用无需联网下载任何模型三、关键要点与踩坑总结为什么不用内置ChromaOpenWebUI v0.11.3废弃嵌入式本地Chroma PersistentClient直接启动会报deprecated异常改用独立HTTP Chroma容器。网络报错根源默认RAG启动自动联网拉取HF的all-MiniLM-L6-v2断网直接服务崩溃方案1预下载模型关闭自动更新彻底规避。UVICORN_WORKERS1ARM平台必加防止sqlite多进程冲突。depends_on仅保证容器启动顺序不等待应用就绪首次启动如果unhealthy等待片刻即可。模型文件跨架构通用all-MiniLM-L6-v2权重x86下载飞腾ARM64可以直接加载不需要重新转换。四、功能测试清单网页登录管理员账号新建知识库上传PDF/TXT文档触发文档向量化使用本地all-MiniLM-L6-v2生成向量不访问外网对话提问验证RAG能召回上传文档内容