AnythingLLM 完整教程:从 0 到第一个文档问答,Docker 一条命令起步
【免费下载链接】anything-llmStop renting your intelligence. Own it with AnythingLLM. Everything you need for a powerful local-first agent experience项目地址: https://gitcode.com/GitHub_Trending/an/anything-llm
AnythingLLM 是一个把本地文档变成可聊天上下文的全栈应用:导入 PDF、网页、视频字幕后,它调用你指定的 LLM(本地 Ollama 或 OpenAI 等)生成带出处的回答。下面带你用 Docker 或源码两种方式把它跑起来,并完成第一次文档问答。
部署前先确认环境
| 项目 | 最低要求 | 说明 |
|---|---|---|
| 内存 | 2 GB | 云主机(AWS/GCP/Azure)建议不低于此值 |
| 磁盘 | 10 GB | 实际占用随文档、向量、模型文件增长 |
| Docker 路径 | 已安装 Docker | 推荐,一条命令拉镜像即可 |
| 源码路径 | Node.js ≥ 18 + Yarn | package.json中engines写的是>=18,比部分旧文档的 14/16 要求更高 |
另外你需要有一个可用的 LLM:本地跑一个 Ollama,或手上有一个 OpenAI / Gemini 之类的 API Key,两者任选其一即可。向量数据库无需额外安装——AnythingLLM 默认内置 LanceDB,嵌入(Embedding)模型默认使用内置的本地模型,全程不出网也能工作。
Docker 一条命令快速部署 AnythingLLM
在终端执行(Linux/macOS):
export STORAGE_LOCATION=$HOME/anythingllm && \ mkdir -p $STORAGE_LOCATION && \ touch "$STORAGE_LOCATION/.env" && \ docker run -d --rm -p 3001:3001 \ --cap-add SYS_ADMIN \ -v ${STORAGE_LOCATION}:/app/server/storage \ -v ${STORAGE_LOCATION}/.env:/app/server/.env \ -e STORAGE_DIR="/app/server/storage" \ mintplexlabs/anythingllmWindows PowerShell 版本:
$env:STORAGE_LOCATION="$HOME\Documents\anythingllm" If(!(Test-Path $env:STORAGE_LOCATION)) {New-Item $env:STORAGE_LOCATION -ItemType Directory} If(!(Test-Path "$env:STORAGE_LOCATION\.env")) {New-Item "$env:STORAGE_LOCATION\.env" -ItemType File} docker run -d --rm -p 3001:3001 ` --cap-add SYS_ADMIN ` -v "$env:STORAGE_LOCATION`:/app/server/storage" ` -v "$env:STORAGE_LOCATION\.env:/app/server/.env" ` -e STORAGE_DIR="/app/server/storage" ` mintplexlabs/anythingllm两个细节值得注意:
STORAGE_LOCATION是宿主机目录,容器里的文档、向量库都落在这里,升级镜像不丢数据。- 需要写入
.env的敏感项(如SIG_KEY、JWT_SECRET)在首次启动后会自动补全,不用手动填。
不想用docker run的话,仓库里的 docker-compose 文件 和 Docker 使用文档 提供了等价配置,可直接docker-compose up -d启动。
源码方式运行 AnythingLLM 开发环境
适合想改代码或不想装 Docker 的场景。克隆仓库:
git clone https://gitcode.com/GitHub_Trending/an/anything-llm cd anything-llm yarn setupyarn setup会依次安装server、collector、frontend三个子模块的依赖、生成.env文件并完成 Prisma 数据库初始化。完成后按提示,分三个终端分别启动(在仓库根目录执行):
yarn dev:server # 主服务,监听 3001 yarn dev:collector # 文档收集器,负责解析上传的文件 yarn dev:frontend # 前端界面生产环境(不用 Docker 长期运行)的完整流程见 BARE_METAL.md:构建前端、拷贝产物到server/public、执行 Prisma 迁移,然后分别以NODE_ENV=production node index.js拉起server和collector。官方对该模式不承诺支持,建议仅作参考。
确认服务启动成功:看 3001 端口
启动后打开http://localhost:3001,判断信号如下:
- 出现 AnythingLLM 登录/引导页,说明后端已就绪。首次访问会让你设置管理员账号,设置完成后进入工作区列表,这就是完整的可用状态。
- 浏览器一直转圈但终端无报错?检查 3001 端口是否被其他进程占用——
lsof -i :3001(Linux/macOS)或netstat -ano | findstr 3001(Windows)可定位占用者,改SERVER_PORT后重新映射即可。 - 如果部署在远程机器,通过公网 IP 访问却提示 API 不通:这是前端打包时写死了
localhost的 API 地址。按 Docker 文档 说明,在frontend/.env.production里把VITE_API_BASE改成http://<你的可达IP>:3001/api再重新构建。
接入模型:配置 LLM 提供商与向量库
登录后进入Settings → LLM Preference,这一步决定"谁在回答问题":
- 云端 API:选 OpenAI、Anthropic、Gemini 等,填入 API Key 和模型名(如
gpt-4.1-nano),保存即可。 - 本地模型:选 Ollama / LM Studio / LocalAI,填入模型服务地址和模型名。本地路线完全免费且数据不出网,是"私有化"的核心卖点。
⚠️容器内连宿主机服务的坑:如果 Ollama 跑在宿主机127.0.0.1:11434,在 AnythingLLM 容器里不能填localhost,而要填http://host.docker.internal:11434(Linux 需给docker run加--add-host=host.docker.internal:host-gateway,或改用172.17.0.1)。看到ECONNREFUSED 172.17.0.1:11434基本就是这个原因。
向量数据库默认 LanceDB(本地、零配置)。需要更大规模或团队协作时,可在 Vector DB Preference 里切换到 PGVector、Pinecone、Chroma、Qdrant、Milvus 等。嵌入模型默认用内置本地嵌入器;若要换 OpenAI / Ollama 的嵌入模型,注意嵌入模型一旦更换,已有文档需要重新导入才能被检索到。
让第一份文档变成可问答的上下文
配置好模型后,进入任意 Workspace(没有就新建一个),用左侧Add Documents导入内容,支持三种方式:
- 上传文件:PDF、DOCX、TXT、EPUB、XLSX、音频等直接拖入;
- 粘贴链接:网页、GitBook、YouTube 视频(自动提取字幕转成文本);
- 批量导入:粘贴多行链接或目录链接一次导入。
导入后文档会经过切块、嵌入、写入向量库的流程,列表状态变为"已嵌入"即完成。此时向聊天框提问,回答下方会出现来源引用(哪份文档、哪个片段),这就是 RAG 在起作用——你可以点开引用核对原文。
如果回答"不知道文档里有什么",先确认:模型配置是否保存成功、嵌入模型是否在导入后被更换过(更换后需重新导入)。
进阶用法:多用户、云部署与反向代理
- 多用户与权限:Docker 版支持多用户,管理员在 User Management 里创建账号、按工作区分配权限,每个用户看到的内容互相隔离。
- 云端一键部署:仓库内置 AWS CloudFormation、GCP、DigitalOcean Terraform 模板,见 cloud-deployments。以 AWS 为例,按模板创建 Stack 并上传配置文件即可完成部署:
- 反向代理:用 Nginx 前置 HTTPS 时,除常规代理配置外,必须开启 WebSocket 升级(聊天流式输出依赖它)并关闭
proxy_buffering,BARE_METAL.md 里有一份可直接套用的 Nginx 示例。 - 嵌入 Widget:Docker 版可通过 Embed 功能把聊天框嵌进自己的网站;此外还有 MCP 兼容、定时任务、AI Agent 工作流等能力,可在设置中按需开启。
下一步你可以做什么
- 用 Ollama 拉一个本地模型(如
llama3.2),把 LLM Preference 切过去,体验完全离线的文档问答; - 把团队知识库按主题拆成多个 Workspace,逐个分配成员权限;
- 给服务套上 Nginx + HTTPS,让
http://localhost:3001变成团队可访问的正式地址。
【免费下载链接】anything-llmStop renting your intelligence. Own it with AnythingLLM. Everything you need for a powerful local-first agent experience项目地址: https://gitcode.com/GitHub_Trending/an/anything-llm
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考