🚀 使用 Docker Compose 部署 AnythingLLM
🚀 使用 Docker Compose 部署 AnythingLLM
AnythingLLM 是一个功能强大的全栈应用程序,可以将任何文档、资源或内容片段转换为上下文,以便任何大语言模型在聊天期间作为参考使用。它是由 Mintplex Labs 开发的全方位 AI 应用程序,支持与文档聊天、使用 AI 代理,且高度可配置并支持多用户管理。
📦 项目简介
AnythingLLM 是一个开源且可自我托管的应用程序,能帮助您构建专属于自己或团队的私有 LLM 聊天机器人。其核心价值在于能将您的文档(如 PDF、TXT、DOCX 等)、资源(如网址链接、音频、视频)通过检索增强生成(RAG) 技术,转换为大语言模型可以理解和参考的上下文,从而提供基于您自身知识库的、更准确的问答体验。
主要功能亮点: * 多模态与多格式文档支持:支持处理多种类型的文档和资源。 * 灵活的大模型集成:支持众多主流的大语言模型,如 OpenAI、Azure OpenAI、Google Gemini Pro、Anthropic 等,也兼容开源模型如 Llama、Mistral。 * 可定制的向量数据库:支持多种向量数据库,如 LanceDB、PGVector、Chroma 等。 * 多用户与权限管理:支持多用户实例和精细的权限管理,非常适合团队协作。 * 友好的用户界面:提供简洁的拖放式用户界面,并采用工作区来清晰、独立地管理不同文档集的上下文。
⚙️ 部署前准备
1.环境要求
* 确保您的系统已安装 Docker 和 Docker Compose。
* 系统内存:建议至少 4核CPU 和 16GB内存,如需处理大量文档或使用较大模型,则需要更高配置。
* 确保计划使用的端口(例如配置文件中的 3003)未被占用。
2.环境检查 在终端中执行以下命令,确认 Docker 环境正常:
docker --version
docker-compose --version
3.创建项目目录 创建一个独立的目录来管理所有部署文件,这有助于日后管理和备份。
mkdir -p /opt/docker/anythingllm
cd /opt/docker/anythingllm
🛠️ 配置 Docker Compose
基于你提供的配置,这里是对 docker-compose.yml 文件的解读和优化说明。
#version: '3.8'
services:
anythingllm:
container_name: anythingllm # 容器名称,便于管理
image: mintplexlabs/anythingllm:1.4.0 # 固定版本(1.4.0 稳定版),避免自动更新导致兼容问题
ports:
- "3003:3001" # 端口映射:主机 3003 端口 → 容器 3001 端口(通过 3003 访问 Web 界面) # 外部访问端口:容器内部端口
environment:
- STORAGE_DIR=/app/server/storage # 容器内数据存储路径(与卷挂载对应) # 指定内部存储目录
volumes:
# 核心:将主机存储目录挂载到容器,实现数据持久化(配置、文档、对话历史不会丢失)
- ./anythingllm_storage:/app/server/storage # 挂载宿主机目录到容器内
#restart: unless-stopped # 确保容器在意外退出时自动重启
restart: always # 核心:将主机存储目录挂载到容器,实现数据持久化(配置、文档、对话历史不会丢失)
# 以下为可选的 Ollama 集成配置(如需本地部署 LLM 模型,取消注释并配置)
#ollama:
#container_name: ollama
#image: ollama/ollama:0.5.8 # 指定版本有助于避免意外更新导致的问题 # Ollama 镜像(用于运行本地 LLM 模型)
#ports:
#- "11434:11434" # Ollama 的默认 API 端口 # Ollama API 端口(供 AnythingLLM 调用)
#tty: true
#restart: unless-stopped # 确保容器在意外退出时自动重启
# 可以考虑添加 volume 挂载来持久化模型数据,例如:
# volumes:
# - ./ollama/models:/root/.ollama/models
#所在目录赋权,以确保稳定运行 chmod 777 -R ./anythingllm_storage
关键配置说明:
| 配置项 | 说明与建议 |
|---|---|
image |
使用特定版本镜像(如 1.4.0)有助于避免自动更新导致的意外问题。 |
ports |
"3003:3001" 将容器内的 3001 端口映射到主机的 3003 端口。你可以根据需要修改主机端口(前面的3003),但容器端口(后面的3001)请保持不变。 |
volumes |
./anythingllm_storage:/app/server/storage 用于持久化存储 AnythingLLM 的所有数据,包括文档、向量索引和用户配置。务必确保此配置,防止容器重启后数据丢失。 |
environment |
STORAGE_DIR 环境变量定义了容器内应用程序存储数据的路径,必须与卷挂载的容器内路径保持一致。 |
注意:在启动容器之前,建议确保挂载的宿主机目录(
./anythingllm_storage)具有正确的写入权限,以避免应用程序因权限问题启动失败。你可以参考提示,在部署目录下执行chmod 777 -R ./anythingllm_storage,但在生产环境中建议使用更严格的权限管理。
🚀 启动与验证
-
启动服务 在
docker-compose.yml文件所在目录执行:bash docker-compose up -d此命令会拉取镜像并在后台启动容器。 -
检查服务状态
bash docker-compose ps如果看到anythingllm容器的状态为Up,就表示部署成功了。 -
查看实时日志(可选) 如果遇到问题,例如服务启动失败,可以通过以下命令查看容器日志来排查:
bash docker-compose logs -f anythingllm -
访问 Web 界面 打开浏览器,访问
http://你的服务器IP:3003。- 如果一切正常,你将看到 AnythingLLM 的初始化界面。
⚙️ 基础配置与使用
成功访问 Web 界面后,你需要进行一些基础配置才能开始使用 AnythingLLM。
-
初始设置
- 首次访问,系统会引导你创建管理员账户,请务必使用强密码并妥善保管。
- 完成账户创建后,你将进入主界面。
-
配置大语言模型
- 进入 "Settings" 菜单。
- 在 "LLM Preference" 中,选择你偏好使用的大语言模型。AnythingLLM 支持多种模型,包括:
- 本地模型:如果你也部署了 Ollama,可以选择
Ollama并配置其 API 地址(例如http://你的Ollama服务IP:11434)。 - 商业 API 模型:如 OpenAI GPT 系列、Google Gemini Pro 等。选择后需要输入对应的 API Key。
- 本地模型:如果你也部署了 Ollama,可以选择
- 保存设置。
-
配置向量数据库
- 在 "Settings" 中,找到 "Vector Database" 设置。
- AnythingLLM 内置了 LanceDB 作为默认的向量数据库,对于刚接触的用户,可以直接使用此内置选项,无需额外配置。
-
创建工作区并上传文档
- 点击侧边栏的 "Workspaces",然后点击 "New Workspace" 创建一个新的工作区。工作区可以帮助你隔离不同主题或项目的文档和对话。
- 进入创建好的工作区,点击 "Add Documents",即可上传你的本地文档(支持 PDF, TXT, DOCX 等多种格式)。
- 文档上传后,AnythingLLM 会自动对其进行处理(分块、向量化并存储到配置的向量数据库中),之后你就可以基于这些文档内容进行问答了。
🔒 维护与管理
-
服务管理:
- 停止服务:
docker-compose down - 重启服务:
docker-compose restart - 查看服务状态:
docker-compose ps
- 停止服务:
-
数据备份:
- 定期备份
docker-compose.yml文件以及anythingllm_storage目录。这个目录包含了所有上传的文档、向量数据、用户信息和系统配置,至关重要。
- 定期备份
-
版本更新: AnythingLLM 项目迭代较快,关注官方发布的重要更新和修复(例如某些API调用问题)是明智的。更新步骤如下:
# 进入 docker-compose.yml 所在目录
docker-compose down
# 修改 docker-compose.yml 中的镜像标签为新版本号
docker-compose pull
docker-compose up -d
注意:更新前,务必备份 anythingllm_storage 目录。
🐛 常见问题排查
| 问题现象 | 可能原因与解决方法 |
|---|---|
| 无法访问 Web 界面 | 1. 检查防火墙/安全组是否放行了你设置的主机端口(例如 3003)。 2. 确认容器是否正常运行: docker-compose ps。3. 查看容器日志: docker-compose logs anythingllm。 |
| 文档上传或处理失败 | 1. 检查文档格式是否在支持范围内。 2. 检查宿主机磁盘空间是否充足。 3. 查看日志确认是否有具体的处理错误信息。 |
| RAG 内存功能报错(路径参数类型错误) | 检查 STORAGE_DIR 环境变量是否已正确设置,并且与卷挂载路径一致。此环境变量缺失可能导致此类问题。 |
| API 调用流程未触发 | 这是一个在旧版本中已知的问题,确保你使用的 AnythingLLM 版本已包含相关的修复补丁。 |
希望这份教程能帮助你顺利完成 AnythingLLM 的部署,并开启你的私有知识库 AI 助手之旅!