总览(中文译文)
原始 DeepWiki 页面:https://deepwiki.com/open-webui/open-webui/1-overview
翻译时间:2026-06-09T16:07:23.353Z
翻译模型:deepseek-chat
原文字符数:9334
项目:Open WebUI (open-webui)
---
概述
相关源文件
以下文件被用作生成此 wiki 页面的上下文:
CHANGELOG.mdLICENSEREADME.mdTROUBLESHOOTING.mdpackage-lock.jsonpackage.jsonsrc/app.csssrc/lib/apis/images/index.tssrc/lib/apis/index.tssrc/lib/components/chat/Settings/About.sveltesrc/lib/components/common/RichTextInput.sveltesrc/lib/components/playground/Images.sveltesrc/lib/stores/index.tssrc/routes/(app)/playground/images/+page.svelte/playground/images/+page.svelte)src/routes/+layout.sveltestatic/manifest.json
目的与范围
Open WebUI 是一个可扩展、功能丰富且用户友好的自托管 AI 平台,旨在完全离线运行,同时为多个 LLM 运行器提供统一接口 README.md:1-15。它作为一个全面的 AI 部署解决方案,将 Ollama 等本地推理引擎与 OpenAI 兼容 API(包括 LMStudio、GroqCloud、Mistral 和 OpenRouter)集成在一起 README.md:15-33。
该平台旨在处理复杂的 AI 工作流,包括检索增强生成(RAG)、原生 Python 函数调用和实时协作功能,使其既适合个人高级用户,也适用于企业环境 README.md:46-67。
---
核心能力
Open WebUI 通过广泛的功能集脱颖而出,弥合了原始模型推理与精致用户体验之间的差距。
AI 界面与模型管理
- 多模型对话:轻松与多个模型同时交互,比较各自的优势和回答
README.md:58-59。 - 模型构建器:直接通过 Web UI 创建和自定义 Ollama 模型,包括自定义角色和代理
README.md:44-45。 - 提供商聚合:系统通过
getModels发现并聚合来自多个后端的模型src/lib/apis/index.ts:9-14,支持代理和直接 OpenAI 连接src/lib/apis/index.ts:48-55。
检索增强生成(RAG)
- 向量数据库支持:集成 9 种向量数据库选项,包括 ChromaDB、PGVector、Qdrant 和 Milvus
README.md:64-65。 - 文档导入:支持多种内容提取引擎,包括新增的 PaddleOCR-vl
CHANGELOG.md:12和用于网页加载的 Firecrawl v2 APICHANGELOG.md:13。 - 网络搜索集成:将来自 15 个以上提供商(SearXNG、Brave、Google PSE 等)的实时结果注入聊天体验
README.md:52-53。
高级工具与可扩展性
- 原生 Python 函数调用:工具工作区中的内置代码编辑器允许用户“自带函数”(BYOF)
README.md:46-47。 - 定时聊天自动化:可使用 iCalendar RRULE 语法安排重复性 AI 任务,并可通过
AUTOMATION_MAX_COUNT等管理员配置限制CHANGELOG.md:41。 - 代码执行:代码块执行系统,允许通过 Pyodide 直接从聊天消息中运行 Python 代码
package.json:138,通过持久化工作线程管理以保留虚拟文件系统src/routes/+layout.svelte:213-220。
企业级与协作
- 基于角色的访问控制(RBAC):为用户和组提供细粒度权限,确保对模型和管理功能的安全访问
README.md:34-35, 60-61。 - 身份验证:完全支持 LDAP/Active Directory、SCIM 2.0 配置,以及通过 OAuth 或受信任标头的 SSO
README.md:66-67。可配置CUSTOM_API_KEY_HEADER以兼容反向代理CHANGELOG.md:15。 - 笔记与频道:基于 TipTap 的全面富文本编辑系统
package.json:67-85,以及频道中用于群组消息的实时通信src/lib/stores/index.ts:58-59。
来源:README.md:1-80,CHANGELOG.md:12-45,package.json:54-162,src/lib/apis/index.ts:9-40
---
系统架构
Open WebUI 采用现代全栈架构,旨在实现高响应性和水平可扩展性。
高层组件交互
下图将逻辑组件映射到其特定的代码实体。
graph TB
subgraph "前端 (SvelteKit SPA)"
Layout["+layout.svelte<br/>(Socket & Worker 初始化)"]
RichText["RichTextInput.svelte<br/>(TipTap & Turndown)"]
About["About.svelte<br/>(版本与更新)"]
end
subgraph "状态管理 (Svelte Stores)"
Stores["lib/stores/index.ts<br/>(chats, models, user, socket)"]
end
subgraph "后端 (FastAPI)"
CoreAPI["main.py<br/>(FastAPI 应用核心)"]
SocketServer["Socket.IO 服务器<br/>(实时通信)"]
AuthAPI["lib/apis/auths.ts<br/>(会话 & JWT)"]
end
subgraph "持久化与服务"
DB["SQLite / PostgreSQL<br/>(psycopg v3 异步驱动)"]
VectorDB["Chroma / Qdrant / 等<br/>(向量存储层)"]
Redis["Redis<br/>(分布式发布/订阅与同步)"]
end
Layout --> Stores
Layout --> RichText
RichText -- "turndownService" --> Layout
Layout -- "io()" --> SocketServer
CoreAPI --> AuthAPI
CoreAPI --> DB
CoreAPI --> VectorDB
SocketServer --> Redis
来源:src/routes/+layout.svelte:115-125,src/lib/components/common/RichTextInput.svelte:34-50,src/lib/stores/index.ts:13-41,CHANGELOG.md:30, 45,src/lib/apis/auths.ts:55
---
技术栈
按层级划分的核心技术
| 层级 | 技术 | 关键代码实体 |
|---|---|---|
| 前端 | Svelte 5 / Tailwind CSS 4 | package.json:44, 47,src/app.css:1 |
| 实时通信 | Socket.IO | lib/stores/index.ts:31 中的 socket store,package.json:140 中的 socket.io-client |
| 后端驱动 | psycopg (v3) | CHANGELOG.md:30, 49 |
| 编辑器 | TipTap / Prosemirror | RichTextInput.svelte,package.json:67-85 |
| Markdown | Marked / Turndown | package.json:121, 145,RichTextInput.svelte:2, 32 |
| RAG | ChromaDB, Weaviate, 等 | README.md:64-65 |
| 执行引擎 | Pyodide (Wasm Python) | package.json:138,src/routes/+layout.svelte:4 |
代码实体空间:数据流与连接
前端通过反向代理设计与后端通信,以处理 CORS 和安全问题。
graph LR
subgraph "客户端 (浏览器)"
UI["Svelte 组件"]
LStore["localStorage.token"]
end
subgraph "Open WebUI 后端 (FastAPI)"
Proxy["反向代理路由<br/>(/ollama, /api)"]
Auth["认证中间件<br/>(JWT 验证)"]
PConfig["PersistentConfig<br/>(数据库设置)"]
end
subgraph "外部提供商"
Ollama["Ollama API<br/>(OLLAMA_BASE_URL)"]
OpenAI["OpenAI 兼容 API"]
end
UI -- "fetch() 携带认证头" --> Proxy
Proxy -- "验证 JWT" --> Auth
Auth -- "检查设置" --> PConfig
Proxy -- "转发请求" --> Ollama
Proxy -- "转发请求" --> OpenAI
来源:TROUBLESHOOTING.md:7-9,src/lib/apis/index.ts:21-30,src/routes/+layout.svelte:123, 179
---
用户配置与个性化
用户通过全面的设置系统管理其体验:
- 界面自定义:控制 UI 缩放(
--app-text-scale)、聊天方向和高对比度模式src/app.css:33-42, 226。 - 富文本偏好:使用
TurndownService将 TipTap HTML 转换回 Markdown 的自定义规则,包括针对任务列表和提及的特定规则src/lib/components/common/RichTextInput.svelte:97-119。 - 性能稳定性:流式响应使用高效的清理机制,防止 Markdown 更新期间的内存泄漏
CHANGELOG.md:21。 - 浏览器原生虚拟化:长对话使用 CSS
content-visibility: auto实现高效渲染,无需销毁组件树CHANGELOG.md:44。
来源:src/app.css:33-42,src/lib/components/common/RichTextInput.svelte:97-119,CHANGELOG.md:21, 44
---
部署与可扩展性
Open WebUI 专为灵活的部署场景而构建:
- 容器化:使用 Docker 或 Kubernetes(kubectl、kustomize 或 helm)无缝安装
README.md:30。 - 可扩展性:基于 Redis 的会话管理和 WebSocket 支持,适用于多工作线程和多节点部署
README.md:72-73。 - 数据库迁移:近期迁移至
psycopg(v3),改进了 SSL 参数处理并原生支持 libpq 连接字符串CHANGELOG.md:30。 - Docker 可靠性:在 Dockerfile 中使用
UV_LINK_MODE=copy,确保在 ARM64 架构上可靠安装文件CHANGELOG.md:31。
来源:README.md:30, 72-73,CHANGELOG.md:30-31