选择部署版本
Aivory 提供两套官方 Docker Compose 部署。二者运行同一套产品能力,差异主要在基础设施拓扑、运维边界与扩展方式,而不是聊天、工作区、知识库或管理员功能的可见性。
| 对比项 | 个人版 | 完整版 |
|---|---|---|
| 默认容器 | 仅 app | app、PostgreSQL、Redis、Qdrant、沙盒与镜像保活服务 |
| 业务数据 | 单个 SQLite 数据库 | PostgreSQL |
| 向量检索 | SQLite 内嵌向量、进程内精确检索 | Qdrant |
| 缓存与队列 | 进程内 | Redis + 应用队列 |
| Python 沙盒 | 默认关闭,可选本机 profile 或外部沙盒 | 默认内置,但仍可按后台策略关闭 |
| 扩展方式 | 单个 app 实例 | 适合独立服务运维与后续扩展 |
| 备份重点 | 一个数据目录 | 数据卷与数据目录整体一致备份 |
| 典型场景 | 个人、自托管小团队、演示与低并发 | 多用户、长期生产、较高并发、组织部署 |
个人版的边界
个人版默认使用 SQLite、SQLite 内嵌向量和进程内缓存,因此无需额外部署 Redis 或 Qdrant。向量仍然可用,知识库、RAG、持久文件、工作区、模型渠道、MCP 和后台管理并不会被移除。
它应保持单实例:不要同时启动多个 app 副本,不要把 SQLite 数据库放到 NFS/SMB 等网络文件系统,也不要用共享数据库文件模拟多机高可用。单一 DATA_DIR 是它的数据根目录,应整体备份。
个人版默认不使用 Docker socket,不拉取两张沙盒镜像。需要 Python 时,可选择可信外部沙盒,或显式启用本地 sandbox profile;后者会挂载 Docker socket,风险和资源需求都应由管理员承担。
完整版的边界
完整版将关系数据、缓存、向量和沙盒拆成独立服务。官方 Compose 将这些服务留在内部网络,只有 app 暴露给用户或反向代理。它更适合多人长期使用、持续索引文档、较多并发会话,以及需要独立备份 PostgreSQL/Qdrant 数据的场景。
完整版本也需要更多运维:所有密码必须设置为不同随机值;PostgreSQL、Redis、Qdrant、沙盒归档卷以及 DATA_DIR 要作为一个恢复单元保护;内置沙盒需要 Docker socket,只能在受控主机上使用。
如何选择
从个人版开始的条件:
- 你希望维护量最低,并且能接受单机单实例。
- 使用者和文档规模暂时有限。
- 不需要跨多个应用副本共享 Redis、Qdrant 或沙盒工作区。
- 愿意把完整数据目录纳入备份。
直接选择完整版的条件:
- 这是面向真实用户的长期服务,或已经有多个管理员和持续运营需求。
- 你需要更明确的数据库、缓存、向量服务隔离与恢复边界。
- 预计会有更高并发、更多用户、更多 RAG 文档或更复杂的统计、支付与权限管理。
- 你可以负责多个持久化服务和内置沙盒的安全运维。
从个人版迁移到完整版
不建议直接复制一个正在使用中的 SQLite 文件到完整版容器,也不要同时让两个部署写入同一数据目录。正确流程是:
- 在个人版后台创建最新的完整备份,并另外复制整个
DATA_DIR。 - 在新主机或独立目录启动一个空的完整版,先完成健康检查。
- 使用后台的备份导入功能恢复,并按提示处理文件与向量数据。
- 验证管理员登录、普通对话、附件、知识库检索、工作区和需要的 Python 功能。
- 在确认数据完整前,不要把旧实例下线或删除。
完整的更新、恢复和回滚程序见升级、备份与恢复。