Skip to content

🚀 使用 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.环境要求 * 确保您的系统已安装 DockerDocker Compose。 * 系统内存:建议至少 4核CPU16GB内存,如需处理大量文档或使用较大模型,则需要更高配置。 * 确保计划使用的端口(例如配置文件中的 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,但在生产环境中建议使用更严格的权限管理。

🚀 启动与验证

  1. 启动服务docker-compose.yml 文件所在目录执行: bash docker-compose up -d 此命令会拉取镜像并在后台启动容器。

  2. 检查服务状态 bash docker-compose ps 如果看到 anythingllm 容器的状态为 Up,就表示部署成功了。

  3. 查看实时日志(可选) 如果遇到问题,例如服务启动失败,可以通过以下命令查看容器日志来排查: bash docker-compose logs -f anythingllm

  4. 访问 Web 界面 打开浏览器,访问 http://你的服务器IP:3003

    • 如果一切正常,你将看到 AnythingLLM 的初始化界面。

⚙️ 基础配置与使用

成功访问 Web 界面后,你需要进行一些基础配置才能开始使用 AnythingLLM。

  1. 初始设置

    • 首次访问,系统会引导你创建管理员账户,请务必使用强密码并妥善保管。
    • 完成账户创建后,你将进入主界面。
  2. 配置大语言模型

    • 进入 "Settings" 菜单。
    • "LLM Preference" 中,选择你偏好使用的大语言模型。AnythingLLM 支持多种模型,包括:
      • 本地模型:如果你也部署了 Ollama,可以选择 Ollama 并配置其 API 地址(例如 http://你的Ollama服务IP:11434)。
      • 商业 API 模型:如 OpenAI GPT 系列、Google Gemini Pro 等。选择后需要输入对应的 API Key。
    • 保存设置。
  3. 配置向量数据库

    • "Settings" 中,找到 "Vector Database" 设置。
    • AnythingLLM 内置了 LanceDB 作为默认的向量数据库,对于刚接触的用户,可以直接使用此内置选项,无需额外配置。
  4. 创建工作区并上传文档

    • 点击侧边栏的 "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 助手之旅!