ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AnythingLLM 私有文档问答系统部署:Docker 一键启动,再到带上自己的文档提问

AnythingLLM 私有文档问答系统部署:Docker 一键启动,再到带上自己的文档提问 AnythingLLM 私有文档问答系统部署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-llmAnythingLLM 是一个把私有文档变成可问答 AI 助手的一体化应用接入任意 LLM大语言模型负责理解问题并组织回答上传你的文档就能得到带来源引用的回答。它默认把数据存在本机也支持多用户与按用户分配权限适合想自建知识库的个人、小团队以及不想把资料交给第三方 API 的场景。下文按「先跑起来再接模型再喂数据」的顺序推进每一步都只给必须手动执行的命令。三分钟认识 AnythingLLM把一份文档变成能问答的 AI通常要自己处理文本解析、切块、向量化、相似度检索、拼装提示词这一整条链路任何一环都要自己写和维护。AnythingLLM 把这条链路打包成一个应用你只需要做三件事选一个 LLM 提供商、把文档放进工作区、开始提问。它内置了向量库存储文档向量、按语义检索的数据库和嵌入模型零额外配置就能工作也提供切换入口想换 OpenAI、Ollama 这类云端或本地模型或换 Pinecone、Qdrant 等外部向量库都可以。多个 LLM、向量库、多用户权限管理都在同一个界面上完成开箱即可使用。 环境准备跑 AnythingLLM 需要什么动手前确认机器满足以下条件基本就是一台能跑 Docker 的普通开发机项目要求操作系统Windows 10、macOS 10.14、Ubuntu 18.04Node.js18 及以上源码方式必须Docker 方式不需要装内存 / 磁盘建议 2GB 内存、10GB 以上磁盘走 Docker 路线只需装好 Docker走源码路线才需要 Node.js 与 Yarn。两条路线下面都讲任选其一。 Docker 一键部署 AnythingLLMDocker 方式是官方推荐路径不需要 Node 环境一条命令拉镜像一条命令启动数据落到你指定的本地目录升级和备份都简单。docker pull mintplexlabs/anythingllm拉取最新官方镜像同时支持 amd64 与 arm64 架构。mkdir -p ~/anythingllm touch ~/anythingllm/.env在宿主机建一个存放数据的目录并初始化一个空的环境变量文件供容器内服务读取配置。docker run -d --rm -p 3001:3001 --cap-add SYS_ADMIN \ -v ~/anythingllm:/app/server/storage \ -v ~/anythingllm/.env:/app/server/.env \ -e STORAGE_DIR/app/server/storage \ mintplexlabs/anythingllm后台启动容器把容器 3001 端口映射到宿主机并把本地目录挂载为容器内的存储目录这样文档、向量、账号等数据都会保留在宿主机上重建容器不会丢。启动完成后浏览器访问http://localhost:3001即进入 AnythingLLM。完整说明可对照仓库里的 docker/HOW_TO_USE_DOCKER.md。 备选路径从源码起三个进程想参与开发或深度定制时从源码启动更合适。前提是已安装 Node.js 18 和 Yarn在仓库根目录依次执行git clone https://gitcode.com/GitHub_Trending/an/anything-llm把仓库克隆到本地。cd anything-llm yarn setup一次性安装三个子项目frontend / server / collector的依赖并复制好各处的.env环境文件记得打开server/.env.development按需填写。yarn prisma:setup初始化 SQLite 数据库生成 Prisma 客户端、执行建表迁移并写入初始数据。然后需要三个进程分别跑起来开三个终端窗口yarn dev:server yarn dev:frontend yarn dev:collector第一条起后端 API端口 3001第二条起 React 前端界面默认 3000 端口第三条起文档收集器——所有文档的下载、解析、切块都由它完成。后端起来后访问http://localhost:3001即可使用。 首次登录创建账号并创建工作区无论哪种部署方式第一次打开http://localhost:3001都会先让你创建管理员账号。完成登录后系统会引导你走一遍初始化选择 LLM 偏好、创建第一个工作区Workspace。工作区是 AnythingLLM 的基本单元每个工作区独立绑定自己的 LLM、向量库和文档相当于一个互相隔离的知识库。完成初始化后进入工作台左侧是工作区列表右侧是聊天区。此时还没有文档提问只能用模型自身的知识下一步先解决「模型从哪来」。 第一次 LLM 配置这样做进入工作区设置或全局设置选择 LLM 提供商三种典型接法覆盖绝大多数场景云端 API选 OpenAI、Anthropic、Google Gemini 等粘贴 API 密钥、挑选模型即可几分钟内完成。本地模型选 Ollama 或 LocalAI填入服务地址和模型名。数据完全不离开机器适合有隐私要求的场景。混合同一台实例上不同工作区可以绑不同提供商按敏感度分流。两个容易踩的坑其一如果 AnythingLLM 跑在 Docker 里、模型服务跑在宿主机上地址里的localhost要换成host.docker.internalLinux 下见下文排错一节否则容器连不上。其二嵌入模型把文本转成向量的模型和向量库有内置默认值AnythingLLM Native Embedder LanceDB本地私有运行、无需任何配置。只有要迁移旧数据或对接已有向量基础设施时才需要改。另外设置页里的模型路由Model Router可以按规则把不同会话自动分派给不同模型比如轻量问题走小模型、复杂问题走大模型用于控制成本。 把自己的一份文档放进 AnythingLLM回到工作台点「添加文档」支持的内容形态比想象的多内容形态说明PDF / Word / Excel / EPUB 等文件拖拽或选择上传纯文本、Markdown直接粘贴或上传网页链接抓取正文内容入库YouTube 视频抓取字幕转文本下一节细讲Git 仓库 / 代码仓库整个仓库作为知识源提交后collector 服务接手整条流水线下载文件、解析出纯文本、按语义切块、调用嵌入模型生成向量、写入向量库。回答时系统先做相似度检索把相关片段拼进提示词交给 LLM 生成答案并在回复里标注引用来源方便核对。切块逻辑在 server/utils/TextSplitter/各格式解析器在 collector/processSingleFile/想调切分行为可以去看这里。 视频也能问YouTube 字幕入库AnythingLLM 支持直接粘贴 YouTube 视频地址作为文档源它会抓取视频字幕并转成文本走和文件完全相同的入库流程之后提问时可以引用到具体视频里的内容。没有字幕的音视频文件也能处理——系统提供内置的 Whisper 转录模型把音频直接转文字再入库相关实现在 collector/utils/WhisperProviders/。 进阶玩法多用户、记忆、定时任务跑通基本流程后这些能力可以按需要逐项打开多用户与权限Docker 版在管理后台创建用户为每个用户分配可见的工作区和权限资料和知识库按人隔离。自动记忆开启后 LLM 会从对话中自动提取关于你或工作区的重要信息并持久化后续会话能「记住」上下文。定时任务按 cron 表达式周期执行任务或提示词具备完整的 Agent 能力代码在 server/jobs/。Agent 与 Agent Flow内置可浏览网页等工具的 Agent还能用可视化流程编排无代码工作流入口在 server/utils/agentFlows/。MCP 接入通过 MCP模型上下文协议挂载外部工具扩展模型可调用能力适配层在 server/utils/MCP/。嵌入聊天组件把 AnythingLLM 以聊天小组件形式嵌进自己的网站仅 Docker 版支持相关代码在 embed/。 数据落在哪备份、端口与遥测所有数据都集中在server/storage/一个目录下SQLite 数据库、上传的原始文档、向量库数据、下载的模型文件都在这里。备份和迁移实例就是把这个目录整体拷走Docker 部署时它对应你挂载的那个本地目录。服务默认监听 3001 端口需要避开冲突时修改环境变量SERVER_PORTDocker 里相应调整-p映射即可。还有一点值得知道AnythingLLM 默认开启匿名遥测只记录「发生了哪类事件」不采集 IP 和内容。介意的人可以在侧边栏的隐私设置里一键关闭或在环境变量中设置DISABLE_TELEMETRYtrue。 常见故障对照排错现象原因与处理页面打不开3001 端口被占用换端口并同步调整-p映射文档上传后长时间不出现collector 没跑或解析卡住单独检查 collector 日志容器内连不上宿主机的 Ollama / LocalAI地址改host.docker.internalLinux 下可用172.17.0.1或给docker run加--add-hosthost.docker.internal:host-gateway用远程 IP 访问时登录异常构建前端前设置VITE_API_BASE为http://你的IP:3001/api更多细节含从源码构建镜像的完整流程见 docker/HOW_TO_USE_DOCKER.md非 Docker 生产部署参考 BARE_METAL.md。 源码速查去哪个目录找什么想改 / 看什么位置前端界面React Vitefrontend/src/后端 API 与聊天逻辑server/endpoints/、server/utils/chats/文档下载与解析collector/LLM 提供商适配30 家server/utils/AiProviders/向量库适配与配置server/utils/vectorDbProviders/多用户与工作区权限server/models/user.js、server/models/workspaceUsers.js数据库结构与迁移server/prisma/到这里你已经从空机器走到了一个能回答文档问题的私有 AI 助手。下一步自然是往工作区里灌入真正的业务资料然后按团队规模逐步打开多用户与权限管理。【免费下载链接】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),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进