Windows中使用Docker安装Anythingllm,基于deepseek构建自己的本地知识库问答大模型,可局域网内多用户访问、离线运行
文章目录
- Windows中使用Docker安装Anythingllm,基于deepseek构建自己的知识库问答大模型
- 1. 安装 Docker Desktop
- 2. 使用Docker拉取Anythingllm镜像
- 2. 设置 `STORAGE_LOCATION` 路径
- 3. 创建存储目录和 `.env` 文件
- `.env` 文件的作用
- 关键配置项
- 4. 运行 Docker 命令
- `docker run` 命令详细解析
- 各部分的含义
- 5. 访问应用
- 6. 配置环境
- 聊天设置
- 向量数据库
- 嵌入首选项
- 添加知识库
- 成员管理
- 局域网内其他用户访问
- 7. 总结
Windows中使用Docker安装Anythingllm,基于deepseek构建自己的知识库问答大模型
我习惯在CMD中运行命令,我看一些教程使用Docker安装Anythingllm时在Power Shell中。
该教程在 Windows CMD 中运行这个 docker
命令,以下是从头到尾的步骤,包括如何在 CMD 中正确设置和运行该命令。
电脑配置:Win11+wsl2+4070tis+内存48G
大模型:ollama-deepseek-r1:14b
所用软件:ollama+docker+anythingllm
4070tis使用anythingllm,在deepseek-r1:14b下的生成tocken速度大概是:52toc/s
备注:ollama需要自己首先安装,去官网下载,然后拉取对应大模型即可。
1. 安装 Docker Desktop
确保你已经安装并启动了 Docker Desktop。如果还没有安装,可以从 Docker 官网 下载并安装。
Docker官方网址:https://www.docker.com/products/docker-desktop/
记得开启电脑wsl2,如果没有安装过wsl,可以看如下:
微软官方教程:https://learn.microsoft.com/en-us/windows/wsl/setup/environment
2. 使用Docker拉取Anythingllm镜像
拉取镜像命令如下:
docker pull mintplexlabs/anythingllm
之后查看是否有该镜像,使用命令:
docker images
可以看到电脑中存在Anythingllm这个镜像了
2. 设置 STORAGE_LOCATION
路径
在 CMD 中,你可以使用 set
命令来设置环境变量。假设你希望将 STORAGE_LOCATION
设置为 Windows 的文档目录,可以按以下步骤操作,逐行运行如下命令,如下图,这三行可以从如下面代码行中复制。
-
打开 CMD(管理员模式)。
-
设置存储目录(你可以自定义这个路径,下面是一个示例):
第一行代码set STORAGE_LOCATION=%USERPROFILE%\Documents\anythingllm
3. 创建存储目录和 .env
文件
确保存储目录存在,并且 .env
文件已经创建。使用以下命令来确保这些文件存在:
-
创建存储目录(如果目录不存在):
第二行代码if not exist "%STORAGE_LOCATION%" mkdir "%STORAGE_LOCATION%"
-
创建
.env
文件(如果文件不存在):
第三行代码if not exist "%STORAGE_LOCATION%\.env" echo. > "%STORAGE_LOCATION%\.env"
此时会在电脑文档的文件夹下,存在一个anythingllm文件夹,如下所示:
该文件夹下存在一个.env文件,存放一些配置。
.env
文件的作用
.env
文件是用于存储容器配置的环境文件,通常包含敏感信息和应用的配置参数。例如,配置大语言模型(LLM)、API 密钥、数据库连接等。容器运行时,它会读取 .env
文件并使用其中的配置信息。
关键配置项
在 .env
文件中,常见的配置项包括:
SERVER_PORT
:指定服务器运行的端口。JWT_SECRET
:用于生成和验证 JWT(JSON Web Token)的密钥。STORAGE_DIR
:指定存储数据的路径。LLM_PROVIDER
:配置大语言模型提供者。OLLAMA_BASE_PATH
:配置 Ollama 服务的基础 URL 地址。OPEN_AI_KEY
:用于访问 OpenAI API 的密钥。
.env
文件中配置的内容会根据你的需求和使用的服务不同而有所变化。
4. 运行 Docker 命令
在 CMD 中,你可以使用单行命令运行 Docker。这里是调整后的命令,适合在 Windows CMD 中运行:
docker run -d --name anythingllm --add-host=host.docker.internal:host-gateway --env STORAGE_DIR=/app/server/storage --health-cmd "/bin/bash /usr/local/bin/docker-healthcheck.sh || exit 1" --health-interval 60s --health-start-period 60s --health-timeout 10s -p 3001:3001/tcp --restart=always --user anythingllm -v %STORAGE_LOCATION%:/app/server/storage -v %STORAGE_LOCATION%\.env:/app/server/.env -w /app mintplexlabs/anythingllm
运行之后如下图,会启动一个容器,用一大串字母表示,该字母是Docker 为该容器分配一个唯一的 ID,这个 ID 主要用于在 Docker 系统中管理容器。你可以用这个 ID 来执行不同的 Docker 命令,比如停止容器、查看容器日志、查看容器状态等。
查看当前所有的容器,命令如下:
docker ps
可以看到我们已经成功启动一个容器
docker run
命令详细解析
给出的命令用于启动 AnythingLLM Docker 容器,以下是对该命令中每个字段的详细解释:
各部分的含义
docker run -d
docker run
命令用于启动一个新的容器,-d
表示容器将以“分离模式”(后台运行)启动。这样,命令执行完后,你可以继续在终端中操作。--name anythingllm
给容器指定一个名字anythingllm
。这个名字用来唯一标识容器,可以方便地进行容器管理(例如,停止、重启、删除容器等)。--add-host=host.docker.internal:host-gateway
添加一个额外的主机名解析。在 Docker 容器内,通过host.docker.internal
可以访问宿主机的网络接口,这对于需要连接到宿主机的服务(比如本地运行的ollama
服务)非常有用。host-gateway
是指容器访问宿主机的网关地址。--env STORAGE_DIR=/app/server/storage
设置容器内部的环境变量。STORAGE_DIR=/app/server/storage
会将容器内部的存储目录设置为/app/server/storage
。该目录用于存储 AnythingLLM 的数据,如模型、日志等。--health-cmd "/bin/bash /usr/local/bin/docker-healthcheck.sh || exit 1"
设置容器的健康检查命令。docker-healthcheck.sh
是一个用于检查容器健康状态的脚本。它会定期运行,确保容器的正常工作。如果健康检查失败(即返回非零退出状态),则 Docker 会认为容器不可用。--health-interval 60s
设置健康检查命令的执行间隔为 60 秒。即每 60 秒 Docker 会运行一次健康检查命令。--health-start-period 60s
设置容器启动后的健康检查延迟时间。即容器启动后,Docker 会等待 60 秒再开始执行健康检查。--health-timeout 10s
设置健康检查命令的超时时间为 10 秒。如果健康检查命令在 10 秒内没有返回结果,则认为健康检查失败。-p 3001:3001/tcp
映射容器内部的端口3001
到宿主机的端口3001
。3001
是 AnythingLLM Web 界面的默认端口。在启动容器后,你可以通过访问http://localhost:3001
来访问 AnythingLLM。--restart=always
设置容器的重启策略。always
表示当容器停止运行时,Docker 会自动重启该容器,确保容器始终在后台运行。--user anythingllm
以指定的用户anythingllm
来运行容器内的程序。此选项确保容器内的进程以指定的用户身份执行,而不是使用默认的 root 用户。-v %STORAGE_LOCATION%:/app/server/storage
将宿主机的目录%STORAGE_LOCATION%
挂载到容器内部的/app/server/storage
目录。%STORAGE_LOCATION%
是之前在 CMD 中设置的环境变量,指向容器存储数据的路径。这样,容器内的数据会存储到宿主机的指定路径上,容器重启后数据仍然保留。-v %STORAGE_LOCATION%\.env:/app/server/.env
将宿主机的.env
文件(位于%STORAGE_LOCATION%
路径下)挂载到容器内的/app/server/.env
文件。.env
文件通常用于存储配置参数,如 API 密钥、数据库配置等。这样,容器启动时可以加载这些配置。-w /app
设置容器内的工作目录为/app
。这意味着容器内的程序将以这个目录作为默认工作目录。mintplexlabs/anythingllm
指定要运行的 Docker 镜像,这里是mintplexlabs/anythingllm
,它包含了 AnythingLLM 的所有必要文件和配置。
这条 Docker 命令启动了一个 AnythingLLM 容器,并通过挂载宿主机的存储目录和 .env
文件,使得容器能够持续存储数据并加载配置。容器以后台运行,并提供 Web 服务,可以通过 http://localhost:3001
访问应用。
5. 访问应用
成功运行该命令后,你可以通过浏览器访问 http://localhost:3001
来进行初始配置。
http://localhost:3001
选择ollama,然后选择对应的大模型
选择team,可以设置多用户登录
6. 配置环境
访问 http://localhost:3001
后,进行相关配置,如配置大语言模型(LLM)、向量数据库等。根据需要更新 .env
文件中的配置参数,如 SERVER_PORT
、OPEN_AI_KEY
等。
聊天设置
新建一个空间区,然后聊天设置改为对应的模型,到最下面,进行确认
向量数据库
如果默认的效果不好,向量数据库可以选择 精度优化
嵌入首选项
默认的也可以,如果默认的解析知识库有问题,也可以使用ollama提供的nomic-embed-text
添加知识库
点击工作区的上传按钮:
打开如下界面,然后上传对应的文档
移动到工作区,然后进行保存和嵌入
成员管理
设置里面,找到管理员-用户,然后在右上角添加用户
可以为用户选择不同的角色。不同角色持有的权限是不同的
局域网内其他用户访问
首先查看部署本机的IPv4地址,例如1.1.1.1
局域网内其他用户浏览器访问:1.1.1.1:3001即可
如下图所示
这应该是几个常用的内容,其他东西,请自行研究
7. 总结
在 Windows CMD 中运行 Docker 命令的步骤如下:
- 设置环境变量
STORAGE_LOCATION
,并确保该路径存在。 - 创建必要的存储目录和
.env
文件。 - 使用单行命令在 CMD 中运行 Docker 容器。
- 通过浏览器访问
http://localhost:3001
进行初始化配置。
相关文章:

Windows中使用Docker安装Anythingllm,基于deepseek构建自己的本地知识库问答大模型,可局域网内多用户访问、离线运行
文章目录 Windows中使用Docker安装Anythingllm,基于deepseek构建自己的知识库问答大模型1. 安装 Docker Desktop2. 使用Docker拉取Anythingllm镜像2. 设置 STORAGE_LOCATION 路径3. 创建存储目录和 .env 文件.env 文件的作用关键配置项 4. 运行 Docker 命令docker r…...

AI前端开发技能提升与ScriptEcho:拥抱AI时代的前端开发新范式
随着人工智能技术的飞速发展,AI前端开发岗位对技能的要求也水涨船高。越来越多的企业需要具备AI相关知识和高级前端开发能力的工程师,这使得传统的前端开发模式面临着巨大的挑战。如何提升开发效率,降低人力成本,成为了摆在所有前…...

【Redis存在线程安全问题吗?】
Redis存在线程安全问题吗? Redis的线程安全性概述Redis线程安全性的挑战Redis线程安全性的示例示例1:客户端并发访问导致的问题示例2:分布式环境下的问题解决Redis线程安全问题的建议总结Redis的线程安全性概述 Redis本身是一个单线程的键值存储数据库,它使用单线程模型来…...

碎碎念,再聊HyperRAM(CrosslinkNX FPGA+HyperRAM)
作者:Hello,Panda HyperRAM其实熊猫君很久以前在用了,几年前也分享了一篇实现HyperRAM控制器的博文(博文《Lattice CrossLinkNx LIFCL-40应用连载7-使用HyperRAM存储器》。近期在后台收到好几位朋友咨询一些关于HyperRAM的问题&a…...

左移架构 -- 从攒批,湖仓到使用数据流的实时数据产品
编辑导读: 这篇文章翻译自 Kai Waehner的 《The Shift Left Architecture – From Batch and Lakehouse to Real-Time Data Products with Data Streaming》。文章通过数据产品的概念引出了如何创建可重复使用的数据产品使企业能够从当前和未来的数据中获得价值。基于构建数据产…...

多模态识别和自然语言处理有什么区别
在科技飞速发展的当下,人工智能(AI)已经渗透到我们生活的方方面面。不知道大家有没有这样的经历:早上醒来,对着智能音箱说 “播放今天的新闻”,音箱不仅能识别你的语音,还能在播放新闻的同时&am…...
进阶——第十六蓝桥杯嵌入式熟练度练习(串口的小BUG补充-字符接受不完整和字符接受错误)
1.解决接受不完整问题 假如没接受完成,执行函数,就可能会把count直接清零,就会重新接受\ while (1){if(rx_count!0){uint8_t temprx_count;HAL_Delay(1);if(temprx_count)uart_proc(); }key_proc();rxclear_proc();/* USER CODE END WHILE…...

数据结构-链式二叉树
文章目录 一、链式二叉树1.1 链式二叉树的创建1.2 根、左子树、右子树1.3 二叉树的前中后序遍历1.3.1前(先)序遍历1.3.2中序遍历1.3.3后序遍历 1.4 二叉树的节点个数1.5 二叉树的叶子结点个数1.6 第K层节点个数1.7 二叉树的高度1.8 查找指定的值(val)1.9 二叉树的销毁 二、层序…...

【git-hub项目:YOLOs-CPP】本地实现01:项目构建
目录 写在前面 项目介绍 最新发布说明 Segmentation示例 功能特点 依赖项 安装 克隆代码仓库 配置 构建项目 写在前面 前面刚刚实现的系列文章: 【Windows/C++/yolo开发部署01】 【Windows/C++/yolo开发部署02】 【Windows/C++/yolo开发部署03】 【Windows/C++/yolo…...

250213-RHEL8.8-外接SSD固态硬盘
It seems that the exfat-utils package is still unavailable, even after enabling the RPM Fusion repository. This could happen if the repository metadata hasn’t been updated or if the package isn’t directly available in the RPM Fusion repository for RHEL 8…...

如何本地部署DeepSeek?
DeepSeek:智能时代的得力助手 在人工智能技术飞速发展的今天,DeepSeek 作为一款由国内顶尖团队研发的 AI 工具,凭借其卓越的性能和丰富的功能,逐渐在众多同类产品中脱颖而出,成为众多用户在工作和学习中的得力助手。 …...

leetcode:627. 变更性别(SQL解法)
难度:简单 SQL Schema > Pandas Schema > Salary 表: ----------------------- | Column Name | Type | ----------------------- | id | int | | name | varchar | | sex | ENUM | | salary | int …...

51单片机(国信长天)矩阵键盘的基本操作
在CT107D单片机综合训练平台上,首先将J5处的跳帽接到1~2引脚,使按键S4~S19按键组成4X4的矩阵键盘。在扫描按键的过程中,发现有按键触发信号后(不做去抖动),待按键松开后,在数码管的第一位显示相应的数字:从左至右&…...

封装一个sqlite3动态库
作者:小蜗牛向前冲 名言:我可以接受失败,但我不能接受放弃 如果觉的博主的文章还不错的话,还请点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 目录 一、项目案例 二…...
Transformer以及BERT阅读参考博文
Transformer以及BERT阅读参考博文 Transformer学习: 已有博主的讲解特别好了: 李沐:Transformer论文逐段精读【论文精读】_哔哩哔哩_bilibili知乎:Transformer模型详解(图解最完整版) - 知乎 个人杂想&…...

AI学习记录 - 最简单的专家模型 MOE
代码 import torch import torch.nn as nn import torch.nn.functional as F from typing import Tupleclass BasicExpert(nn.Module):# 一个 Expert 可以是一个最简单的, linear 层即可# 也可以是 MLP 层# 也可以是 更复杂的 MLP 层(active function 设…...

急停信号的含义
前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在开发C#的运动控制程序的时候,一个必要的步骤就是确认设备按钮的急停…...

单调队列queue
1.单调队列(Monotonic Queue) 单调队列是一种特殊的队列,它的元素按照单调性(递增或递减)的顺序排列。简单来说,单调队列会维护一个元素单调递增或递减的顺序,在队列中元素会根据当前队列的元素…...
【漫话机器学习系列】091.置信区间(Confidence Intervals)
置信区间(Confidence Intervals)详解 1. 引言 在统计学和数据分析中,我们通常希望通过样本数据来估计总体参数。然而,由于抽样的随机性,我们不可能得到精确的总体参数,而只能通过估计值(如均值…...
UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0x99
UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0x99 这个错误通常发生在你尝试使用 GBK 编码来解码一个包含非GBK编码字符的文件时。GBK 是一种用于简体中文的字符编码方式,它不支持所有可能的 Unicode 字符。 解决方法 明确文件的正确编码:首…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
#Uniapp篇:chrome调试unapp适配
chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill
视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...