镜像
默认镜像或小镜像、固定版本,或者自己构建镜像。
两种镜像都在 GitHub 容器镜像仓库 ghcr.io/jinyuanzhou-leo/semestra-allinone,并且都是公开的。
| 镜像 | 标签 | 平台 | 内存 | 在 .env 里选择 |
|---|---|---|---|---|
| 带本机 OCR 与 embedding(默认) | latest-local、1.2.0-local | amd64、arm64 | 约 4 GB | 不用设置 |
| 不带这两项 | latest、1.2.0 | amd64 | 约 1 GB | SEMESTRA_IMAGE_VARIANT=(留空) |
默认镜像以前的后缀是 -ocr;-ocr 标签作为别名保留到 2.0。
arm64 机器(如树莓派、Apple Silicon 上的 Docker)请用默认镜像。
本机 OCR
默认镜像在服务器上用 PaddleOCR(只用 CPU)识别扫描版 PDF 和照片,不会为此调用 AI 模型。识别时在应用本身约 1 GB 之外再占用最多 2 GB 内存,一次处理一个文档,每页约 2 秒。
每个用户在 AI 设置 → 模型的 OCR 一行里选择模型:本机的 PaddleOCR 模型,或某个服务商的模型。选择器里会显示每个本机模型的 下载大小、速度和准确程度。本机模型在第一次用到时、或用户在该行点下载时下载到数据卷,应用里会显示进度。服务器之后不能联网的话,请趁还能联网时先下载:
docker compose exec semestra semestra ocr-models --all用小镜像时,用户在 OCR 和搜索两行里选服务商的模型。改 SEMESTRA_IMAGE_VARIANT 再运行 docker compose up -d
就能来回切换,数据不受影响。
本机 embedding
默认镜像还会在服务器上计算搜索用的向量,不接 AI 服务商也能在文件里做语义搜索。它用 ONNX Runtime 跑 Hugging Face 上的 ONNX 模型,只用 CPU。用户已经有带 embedding 模型的服务商(或服务器配置了 全实例服务商)时,自动会继续用它;没有时才用本机的默认模型。用户也可以在 AI 设置 → 模型的 搜索一行里选模型:
| 模型 | 说明 |
|---|---|
multilingual-e5-small | 默认。最小最快:Apple M3 上每秒约 27 段,使用时占用约 1 GB 内存 |
bge-m3 | 均衡,中英文都好:Apple M3 上每秒约 3 段,内存约 1.6 GB |
qwen3-embedding-0.6b | 最准确,慢很多:Apple M3 上每秒约 0.7 段,内存最多约 3.3 GB |
用户也可以输入任何带 ONNX 版本(有 onnx/ 目录和 tokenizer.json)的 Hugging Face 模型名。模型和 OCR 模型一样在第一次用到时下载到数据卷;下载完成前文件只能按关键词搜索,下载后会补上向量。
换模型会在后台重建向量。提前下载:
docker compose exec semestra semestra embedding-models --all模型常驻在单独的进程里,空闲十分钟后退出。Docker 用不了 Mac 的 GPU,所以这里只用 CPU;想用 GPU,可以在宿主机上跑 Ollama,再选它的 embedding 模型。相关设置见全部设置。
释放磁盘空间
设置 → 数据 → 本地模型显示每个已下载模型占用的空间,可以删掉不需要的模型。任何账户都能删除;仍有人在用的模型下次用到时会重新下载。
固定版本
latest 会跟随每次发布。想自己决定何时升级,在 .env 里写上版本:
SEMESTRA_VERSION=1.2.0预发布版本(例如 2.0.0-beta.0,在 GitHub 上标为 Pre-release)不会成为 latest。想试用时同样写上它的版本;改回 latest 就回到正式版。试用前先备份:新版本会升级数据库,旧版本可能无法再打开它。
自己构建镜像
在仓库根目录运行:
docker build -f deploy/docker/Dockerfile --target allinone-local \
-t ghcr.io/jinyuanzhou-leo/semestra-allinone:dev-local .小镜像用 --target allinone 和标签 :dev。然后让 compose 文件使用它:
SEMESTRA_VERSION=dev升级时 git pull、重新构建,再运行 docker compose up -d(不要用 docker compose pull)。
网页应用的构建参数,会写进镜像:
| 参数 | 作用 |
|---|---|
VITE_EMAIL_DOMAINS | 登录页输入 @ 后提示的域名,例如 school.edu,gmail.com |
VITE_SENTRY_DSN | 把浏览器里的错误报告给你的 Sentry 项目 |