本地部署 AnythingLLM:自建 AI 知识库聊天机器人

概述

AnythingLLM 是一个开源的本地 RAG(检索增强生成)平台。你可以把 PDF、Markdown、TXT 等文档丢进去,然后像聊天一样提问,AI 会基于你的文档内容回答。支持对接 Ollama 本地模型、OpenAI、Claude 等,也可以完全本地运行,数据不出你的服务器。

这篇教程教你用 Docker Compose 在一台 VPS 上搭建 AnythingLLM,5 分钟跑起来。

准备工作

你需要以下条件:

  • 一台 Linux VPS(Ubuntu 22.04+ 或 Debian 12+)
  • SSH 登录权限
  • 至少 2GB 内存、20GB 磁盘
  • Docker 和 Docker Compose 已安装
  • 一个你想对接的 AI 模型(推荐用 Ollama 跑本地模型,免费)

如果你的 VPS 还没装 Docker,先跑这几行:

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER
newgrp docker

步骤

第一步:创建项目目录

mkdir -p ~/anythingllm && cd ~/anythingllm

第二步:写好 Docker Compose 文件

cat > docker-compose.yaml << 'EOF'
services:
  anythingllm:
    image: mintplexlabs/anythingllm:latest
    container_name: anythingllm
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - ./anythingllm-data:/app/server/data
    environment:
      - STORAGE_PROVIDER=local
      - AUTH_SECRET=a_random_secret_string_change_this
      - LLM_PROVIDER=ollama
      - EMBEDDING_ENGINE=llama-cpp
      - OLLAMA_BASE_URL=http://host.docker.internal:11434
EOF

几个关键配置说明:

  • 3001:3001:AnythingLLM 默认监听 3001 端口,你可以改成别的
  • AUTH_SECRET:登录密码的加密密钥,随便写一串随机字符
  • LLM_PROVIDER=ollama:使用 Ollama 作为 AI 模型后端
  • OLLAMA_BASE_URL:Ollama 的地址。如果 AnythingLLM 和 Ollama 在同一台机器,用 http://host.docker.internal:11434

第三步:确保 Ollama 已安装并运行

AnythingLLM 需要 Ollama 提供推理能力。如果你还没装 Ollama:

curl -fsSL https://ollama.com/install.sh | sh

# 拉一个中文能力好的模型
ollama pull qwen2.5:7b

确认 Ollama 在跑:

curl http://localhost:11434/api/tags | jq '.models[] | .name'

能看到 qwen2.5:7b 就说明没问题。

第四步:启动 AnythingLLM

cd ~/anythingllm
docker compose up -d

首次启动会拉镜像,稍等几十秒:

docker compose logs -f anythingllm

看到 Server ready 字样就说明启动成功了。按 Ctrl+C 退出日志。

第五步:创建第一个工作空间

打开浏览器访问 http://你的IP:3001。

第一次进来会让你创建一个管理员账号,填好用户名密码就行。

进入主界面后,点击左上角 Create Workspace,随便起个名字比如"我的知识库"。

进入工作空间后,找到 Documents 标签,点 Upload,选你电脑里的 PDF 或 TXT 文件上传。上传后 AnythingLLM 会自动分块、向量化、存储。

然后切换到 Chat 标签,输入问题,AI 会基于你上传的文档回答。

验证

# 1. 容器是否在运行
docker ps | grep anythingllm

# 2. 端口是否监听
curl -s -o /dev/null -w "%{http_code}" http://localhost:3001

# 3. 数据目录是否生成
ls ~/anythingllm/anythingllm-data/

第一行应该看到 anythingllm 容器状态是 Up,第二行输出 200,第三行能看到 vectors、workspaces、storages 等子目录。

常见问题

问:上传文档后一直卡在处理中怎么办?

通常是 Ollama 的 embedding 模型没装。在 Ollama 所在机器上运行:

ollama pull nomic-embed-text

然后在 AnythingLLM 的 workspace 设置里确认 embedding 模型选的是 nomic-embed-text。

问:能把 Ollama 换成 OpenAI 或 Claude 吗?

可以。编辑 docker-compose.yaml,把 LLM_PROVIDER 改成 openai 或 anthropic,再加上对应的 API 密钥环境变量就行:

environment:
  - LLM_PROVIDER=openai
  - OPENAI_API_KEY=sk-xxxxxxxx
  - OPENAI_MODEL=gpt-4o-mini

问:数据存在哪里?备份方便吗?

所有数据都在 ~/anythingllm/anythingllm-data/ 目录里。直接把这个目录打包就是完整备份:

tar czf anythingllm-backup.tar.gz ~/anythingllm/anythingllm-data/

问:多个用户怎么管理?

AnythingLLM 支持多用户注册,管理员可以在 Settings 里开启注册权限,然后邀请其他人创建账号。高级版还支持角色权限控制。

问:内存不够 2GB 能跑吗?

最小配置建议 2GB 内存。如果只有 1GB,可以把 Ollama 的模型换成更小的(比如 phi3:mini),AnythingLLM 本身只占 200-300MB 内存。


AnythingLLM 是目前最简单的本地 RAG 方案,上传文档就能聊,不用写一行代码。你的服务器上有自己的文档库吗?想让它变成可对话的知识库吗?试试吧。

这篇文章对你有帮助吗?