Windows中使用Docker安装Anythingllm,基于deepseek构建自己的本地知识库问答大模型,可局域网内多用户访问、离线运行

news2025/2/13 14:26:30

文章目录

      • 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 的文档目录,可以按以下步骤操作,逐行运行如下命令,如下图,这三行可以从如下面代码行中复制。
请添加图片描述

  1. 打开 CMD(管理员模式)。

  2. 设置存储目录(你可以自定义这个路径,下面是一个示例):
    第一行代码

    set STORAGE_LOCATION=%USERPROFILE%\Documents\anythingllm
    

3. 创建存储目录和 .env 文件

确保存储目录存在,并且 .env 文件已经创建。使用以下命令来确保这些文件存在:

  1. 创建存储目录(如果目录不存在):
    第二行代码

    if not exist "%STORAGE_LOCATION%" mkdir "%STORAGE_LOCATION%"
    
  2. 创建 .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 容器,以下是对该命令中每个字段的详细解释:

各部分的含义

  1. docker run -d
    docker run 命令用于启动一个新的容器,-d 表示容器将以“分离模式”(后台运行)启动。这样,命令执行完后,你可以继续在终端中操作。
  2. --name anythingllm
    给容器指定一个名字 anythingllm。这个名字用来唯一标识容器,可以方便地进行容器管理(例如,停止、重启、删除容器等)。
  3. --add-host=host.docker.internal:host-gateway
    添加一个额外的主机名解析。在 Docker 容器内,通过 host.docker.internal 可以访问宿主机的网络接口,这对于需要连接到宿主机的服务(比如本地运行的 ollama 服务)非常有用。host-gateway 是指容器访问宿主机的网关地址。
  4. --env STORAGE_DIR=/app/server/storage
    设置容器内部的环境变量。STORAGE_DIR=/app/server/storage 会将容器内部的存储目录设置为 /app/server/storage。该目录用于存储 AnythingLLM 的数据,如模型、日志等。
  5. --health-cmd "/bin/bash /usr/local/bin/docker-healthcheck.sh || exit 1"
    设置容器的健康检查命令。docker-healthcheck.sh 是一个用于检查容器健康状态的脚本。它会定期运行,确保容器的正常工作。如果健康检查失败(即返回非零退出状态),则 Docker 会认为容器不可用。
  6. --health-interval 60s
    设置健康检查命令的执行间隔为 60 秒。即每 60 秒 Docker 会运行一次健康检查命令。
  7. --health-start-period 60s
    设置容器启动后的健康检查延迟时间。即容器启动后,Docker 会等待 60 秒再开始执行健康检查。
  8. --health-timeout 10s
    设置健康检查命令的超时时间为 10 秒。如果健康检查命令在 10 秒内没有返回结果,则认为健康检查失败。
  9. -p 3001:3001/tcp
    映射容器内部的端口 3001 到宿主机的端口 30013001AnythingLLM Web 界面的默认端口。在启动容器后,你可以通过访问 http://localhost:3001 来访问 AnythingLLM
  10. --restart=always
    设置容器的重启策略。always 表示当容器停止运行时,Docker 会自动重启该容器,确保容器始终在后台运行。
  11. --user anythingllm
    以指定的用户 anythingllm 来运行容器内的程序。此选项确保容器内的进程以指定的用户身份执行,而不是使用默认的 root 用户。
  12. -v %STORAGE_LOCATION%:/app/server/storage
    将宿主机的目录 %STORAGE_LOCATION% 挂载到容器内部的 /app/server/storage 目录。%STORAGE_LOCATION% 是之前在 CMD 中设置的环境变量,指向容器存储数据的路径。这样,容器内的数据会存储到宿主机的指定路径上,容器重启后数据仍然保留。
  13. -v %STORAGE_LOCATION%\.env:/app/server/.env
    将宿主机的 .env 文件(位于 %STORAGE_LOCATION% 路径下)挂载到容器内的 /app/server/.env 文件。.env 文件通常用于存储配置参数,如 API 密钥、数据库配置等。这样,容器启动时可以加载这些配置。
  14. -w /app
    设置容器内的工作目录为 /app。这意味着容器内的程序将以这个目录作为默认工作目录。
  15. 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_PORTOPEN_AI_KEY 等。

聊天设置

新建一个空间区,然后聊天设置改为对应的模型,到最下面,进行确认

请添加图片描述

向量数据库

如果默认的效果不好,向量数据库可以选择 精度优化

请添加图片描述

嵌入首选项

默认的也可以,如果默认的解析知识库有问题,也可以使用ollama提供的nomic-embed-text

请添加图片描述

添加知识库

点击工作区的上传按钮:

请添加图片描述

打开如下界面,然后上传对应的文档

请添加图片描述

移动到工作区,然后进行保存和嵌入

请添加图片描述

成员管理

设置里面,找到管理员-用户,然后在右上角添加用户

请添加图片描述
可以为用户选择不同的角色。不同角色持有的权限是不同的请添加图片描述

局域网内其他用户访问

首先查看部署本机的IPv4地址,例如1.1.1.1
局域网内其他用户浏览器访问:1.1.1.1:3001即可
如下图所示
在这里插入图片描述

这应该是几个常用的内容,其他东西,请自行研究

7. 总结

在 Windows CMD 中运行 Docker 命令的步骤如下:

  1. 设置环境变量 STORAGE_LOCATION,并确保该路径存在。
  2. 创建必要的存储目录和 .env 文件。
  3. 使用单行命令在 CMD 中运行 Docker 容器。
  4. 通过浏览器访问 http://localhost:3001 进行初始化配置。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2297401.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[SAP ABAP] OO ALV报表练习1

销售订单明细查询报表 业务目的:根据选择屏幕的筛选条件,使用 ALV 报表,显示销售订单详情 效果展示 用户的输入条件界面 用户的查询结果界面 涉及的主要功能点: 1.当在销售订单明细查询页面取不到任何数据时,在选择…

数据库高安全—数据保护:数据动态脱敏

书接上文数据库高安全—审计追踪:传统审计&统一审计,从传统审计和统一审计两方面对高斯数据库的审计追踪技术进行解读,本篇将从数据动态脱敏方面对高斯数据库的数据保护技术进行解读。 5.1 数据动态脱敏 数据脱敏,顾名思义就…

Datawhale 数学建模导论二 2025年2月

第6章 数据处理与拟合模型 本章主要涉及到的知识点有: 数据与大数据Python数据预处理常见的统计分析模型随机过程与随机模拟数据可视化 本章内容涉及到基础的概率论与数理统计理论,如果对这部分内容不熟悉,可以参考相关概率论与数理统计的…

记录 | WPF基础学习MVVM例子讲解1

目录 前言一、NotificationObject与数据属性创建个类,声明NotificationObject 二、DelegateCommand与命令属性三、View与ViewModel的交互(难点)在ViewModel文件下创建MainWindowViewModel数据和方法绑定资源指定 代码下载四、优势体现代码下载…

PyTorch 中 `torch.cuda.amp` 相关警告的解决方法

在最近的写代码过程中,遇到了两个与 PyTorch 的混合精度训练相关的警告信息。这里随手记录一下。 警告内容 警告 1: torch.cuda.amp.autocast FutureWarning: torch.cuda.amp.autocast(args...) is deprecated. Please use torch.amp.autocast(cuda, args...) i…

实验7 路由器之间IPsec VPN配置

实验7 路由器之间IPsec VPN配置 1.实验目的 通过在两台路由器之间配置IPsec VPN连接,掌握IPsec VPN配置方法,加深对IPsec协议的理解。 2.实验内容 (1)按照实验拓扑搭建实验环境。 (2)在路由器R1和R4配置IP…

小白零基础如何搭建CNN

1.卷积层 在PyTorch中针对卷积操作的对象和使用的场景不同,如有1维卷积、2维卷积、 3维卷积与转置卷积(可以简单理解为卷积操作的逆操作),但它们的使用方法比较相似,都可以从torch.nn模块中调用,需要调用的…

【Java八股文】01-Java基础面试篇

【Java八股文】01-Java基础面试篇 概念Java特点Java为什么跨平台JVM、JDK、JRE关系 面向对象什么是面向对象,什么是封装继承多态?多态体现的方面面向对象设计原则重载重写的区别抽象类和实体类区别Java抽象类和接口的区别抽象类可以被实例化吗 深拷贝浅拷…

k8s部署logstash

1. 编写logstash.yaml配置文件 --- apiVersion: v1 kind: Service metadata:name: logstash spec:type: ClusterIPclusterIP: Noneports:- name: logstash-tcpport: 5000targetPort: 5000- name: logstash-beatsport: 5044targetPort: 5044- name: logstash-apiport: 9600targ…

Arcgis/GeoScene API for JavaScript 三维场景底图网格设为透明

项目场景: 有时候加载的地图服务白色区域会露底,导致在三维场景时,露出了三维网格,影响效果,自此,我们需要将三维场景的底图设为白色或透明。 问题描述 如图所示: 解决方案: 提示…

《qt open3d网格拉普拉斯平滑》

qt open3d网格拉普拉斯平滑 效果展示二、流程三、代码效果展示 二、流程 创建动作,链接到槽函数,并把动作放置菜单栏 参照前文 三、代码 1、槽函数实现 void on_actionFilterLaplacian_triggered();void MainWindow::on_actionFil

怎么选择免费的SEO排名工具

随着2025年互联网的迅猛发展,越来越多的企业意识到,拥有一个高排名的网站对于品牌曝光和吸引客户至关重要。尤其是通过SEO(搜索引擎优化),可以提高网站在搜索引擎中的排名,进而带来更多的自然流量&#xff…

SSH隧道+Nginx:绿色通道详解(SSH Tunnel+nginx: Green Channel Detailed Explanation)

SSH隧道Nginx:内网资源访问的绿色通道 问题背景 模拟生产环境,使用两层Nginx做反向代理,请求公网IP来访问内网服务器的网站。通过ssh隧道反向代理来实现,重点分析一下nginx反代的基础配置。 实验环境 1、启动内网服务器的tomca…

Spring 项目接入 DeepSeek,分享两种超简单的方式!

⭐自荐一个非常不错的开源 Java 面试指南:JavaGuide (Github 收获148k Star)。这是我在大三开始准备秋招面试的时候创建的,目前已经持续维护 6 年多了,累计提交了 5600 commit ,共有 550 多位贡献者共同参与…

半小时在本地部署DeepSeek的Janus Pro,进行图片分析和文生图

半小时在本地部署DeepSeek的Janus Pro,进行图片分析和文生图 下载Janus Pro源代码下载模型文件创建Python虚拟环境安装依赖包Janus Pro测试运行程序图片分析测试文生图测试使用中文提示词使用英文提示词 测试印象: 整体模型体积较小,个人可以…

急停信号的含义

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

设置mysql的主从复制模式

mysql设置主从复制模式似乎很容易,关键在于1)主库启用二进制日志,2)从库将主库设为主库。另外,主从复制,复制些什么?从我现在获得的还很少的经验来看,复制的内容有表,用户…

三角拓扑聚合优化器TTAO-Transformer-BiLSTM多变量回归预测(Maltab)

三角拓扑聚合优化器TTAO-Transformer-BiLSTM多变量回归预测(Maltab) 完整代码私信回复三角拓扑聚合优化器TTAO-Transformer-BiLSTM多变量回归预测(Maltab) 一、引言 1、研究背景和意义 在现代数据科学领域,时间序列…

ArcGIS基础知识之ArcMap基础设置——ArcMap选项:常规选项卡设置及作用

作为一名 GIS 从业者,ArcMap 是我们日常工作中不可或缺的工具。对于初学者来说,掌握 ArcMap 的基础设置是迈向 GIS 分析与制图的第一步。今天,就让我们一起深入了解 ArcMap 选项中常规选项卡的各个设置,帮助大家更好地使用这款强大的软件。 在 ArcMap 中,常规选项卡是用户…

14,.左下角的值,路径和,由序列确定树

找树左下角的值 迭代法 层序遍历 class Solution { public:int findBottomLeftValue(TreeNode* root) {queue<TreeNode*> qu;qu.push(root);TreeNode* leftqu.front();while(!qu.empty()){int szqu.size();leftqu.front();for(int i0;i<sz;i){TreeNode* curqu.fron…