kotaemon Docker 部署时 lite 与 full 镜像怎么选?
【免费下载链接】kotaemonAn open-source RAG-based tool for chatting with your documents.项目地址: https://gitcode.com/GitHub_Trending/kot/kotaemon
用 Docker 部署 kotaemon(RAG 文档问答 Web 应用)时,第一步就要在main-lite与main-full两个镜像 tag 之间做选择。两者的差别不在功能开关,而在内置的文档解析能力——这决定了你的服务能摄取哪些文件类型。本文基于项目 README.md 与 Dockerfile 给出判断依据、部署命令和验证方式。
按要处理的文件类型定镜像
README 对两个版本的说明是一句话概括:full版本额外安装了unstructured包,可支持更多文件类型(.doc、.docx等),代价是镜像体积更大;"For most users, theliteimage should work well in most cases"。
选型的直接依据是 README「System requirements」中的一条约束:需要处理.pdf、.html、.mhtml、.xlsx以外的文件类型时,必须安装 Unstructured。lite 镜像不带它,full 镜像预装了unstructured[all-docs]。由此可以得出判断表:
| 你的文档范围 | 推荐镜像 |
|---|---|
只处理.pdf、.html、.mhtml、.xlsx | main-lite |
需要处理.doc、.docx等 Office 文件 | main-full |
| 想用内置 Ollama 跑本地/私有 RAG | main-ollama(基于 full 构建) |
除非确实有 Office 文档要摄取,否则不必为更大的镜像体积买单,选main-lite。
两个镜像的具体差异来自哪里
Dockerfile 中full阶段直接构建在lite阶段之上(FROM lite AS full),即 full = lite + 下列追加内容:
| 追加内容 | 作用 |
|---|---|
tesseract-ocr、tesseract-ocr-jpn、libreoffice、ffmpeg、libmagic-dev | 文档解析所需的系统级依赖(OCR、Office 文件转换等) |
torch、torchvision、torchaudio(CPU 版本 wheel) | unstructured 的运行依赖 |
libs/kotaemon[adv] | kotaemon 的可选依赖集合(elasticsearch、fastembed、llama-cpp-python、milvus/qdrant 等,定义见 libs/kotaemon/pyproject.toml) |
unstructured[all-docs] | 支持.doc/.docx等更多文件类型的解析 |
libs/kotaemon[docling] | Docling 文档解析选项 |
libs/kotaemon[lightrag],并设置环境变量USE_LIGHTRAG=true | 内置 LightRAG 检索变体 |
lite阶段本身包含:python:3.11-slim基础镜像、poppler-utils等 PDF 工具、通过uv sync安装的应用核心依赖、PDF 浏览器所需的 pdfjs 资源,以及graphrag<=0.3.6(仅amd64架构,限制见文末)。
另外注意:所有镜像的入口都是 launch.sh,它会按GRADIO_SERVER_NAME/GRADIO_SERVER_PORT启动 Web 应用;镜像仓库的.env.example会被复制为容器内的.env(见下文验证部分)。
运行 lite 镜像(默认路径)
README 给出的完整命令以full版本为例,lite版本说明为「change image name to」。下面把 lite 命令展开写全,可直接执行:
docker run \ -e GRADIO_SERVER_NAME=0.0.0.0 \ -e GRADIO_SERVER_PORT=7860 \ -v ./ktem_app_data:/app/ktem_app_data \ -p 7860:7860 -it --rm \ ghcr.io/cinnamon/kotaemon:main-lite各部分的作用:
-e GRADIO_SERVER_NAME=0.0.0.0、-e GRADIO_SERVER_PORT=7860:容器内服务监听地址与端口;-v ./ktem_app_data:/app/ktem_app_data:把本地./ktem_app_data目录挂载为应用数据目录。README 说明应用数据默认全部存放在该目录,备份或拷贝它即可把安装迁移到新机器;-p 7860:7860:端口映射到宿主机;-it --rm:前台交互运行,容器停止后容器本身被移除,数据依靠挂载卷保留。
需要 full 镜像时,只替换最后一行的 tag:
ghcr.io/cinnamon/kotaemon:main-full可选分支:arm64 平台与 Ollama 镜像
arm64:项目目前支持和测试两个平台linux/amd64与linux/arm64(适用于较新的 Mac),通过--platform指定。lite 镜像在 arm64 上的完整命令:
docker run \ -e GRADIO_SERVER_NAME=0.0.0.0 \ -e GRADIO_SERVER_PORT=7860 \ -v ./ktem_app_data:/app/ktem_app_data \ -p 7860:7860 -it --rm \ --platform linux/arm64 \ ghcr.io/cinnamon/kotaemon:main-lite内置 Ollama(本地/私有 RAG):README 建议做 local / private RAG 时改用main-ollama镜像(只改镜像名)。按 Dockerfile,该镜像基于full阶段构建,额外安装了 Ollama,并预拉取了nomic-embed-textembedding 模型。
验证部署结果
容器启动后,打开http://localhost:7860/访问 WebUI——README 以能访问该地址作为「everything is set up correctly」的判断标准。应用默认用户名和密码均为admin(用户指南建议在首次登录后立即修改该凭据)。
首次启动后还有两件事值得确认:
- 数据已写入挂载的
./ktem_app_data目录,后续重启不会丢失配置与索引。 .env只在首次运行时用于初始化模型配置(README 说明该文件「will only be used to populate the db once upon the first run」),之后的运行以 UI 中设置的模型为准,不会再读取它。若你希望通过.env预置模型,需要在首次启动前完成配置。
选镜像时的两条限制
graphrag依赖仅 amd64 安装:Dockerfile 中对graphrag<=0.3.6与future的安装包在if [ "$TARGETARCH" = "amd64" ]条件里。在linux/arm64上使用镜像时,镜像内不包含这两项 pip 依赖。- PaddleOCR 变体是独立的 GPU 镜像:Dockerfile 的
paddle阶段基于full构建并安装paddlepaddle-gpu(CUDA),属于独立 tag,不在 lite/full 的常规选择范围内,需要 GPU 才能使用。
验证通过之后,按 README 的后续步骤在 WebUI 的Resources与LLMs and Embeddings中检查api_key与默认模型是否设置正确,即可开始导入文档并提问。
【免费下载链接】kotaemonAn open-source RAG-based tool for chatting with your documents.项目地址: https://gitcode.com/GitHub_Trending/kot/kotaemon
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考