llm+rag本地化部署手册

llm+rag本地化部署手册

1.linux 环境搭建

a.基础实验环境搭建

官网安装 docker desktop 即可,详情见下方 Docker 一节

b.使用 WSL2 进行搭建或者使用原生 linux 进行搭建

在管理员模式下打开 PowerShell 或 Windows 命令提示符,方法是右键单击并选择“以管理员身份运行”,输入 wsl --install 命令,然后重启计算机。或是到 Microsoft Store 搜索 Ubuntu,进行下载

下载后可以用这句命令检查:

image

命令行内输入 wsl 即可进入 wsl 系统

image

2.依赖环境安装

a. docker

Docker 是一个用于开发、发布和运行应用程序的开放平台。通过 Docker,您可以将应用程序与基础架构分开,从而快速交付软件。使用 Docker,您可以用管理应用程序的相同方式管理基础架构。通过利用 Docker 的发布、测试和部署代码方法,您可以大大减少编写代码与在生产中运行代码之间的延迟。

安装包部署:linux 通过包管理命令,比如 debian 家族 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin​,centos 家族 sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin​,windows 直接从官网下载 docker desktop 安装包,特点是方便快捷。

二进制部署:从 Docker 官网下载二进制文件并手动安装。适用于没有包管理器的环境或需要定制安装的情况。

Dockerfile 是一个文本文件,其中包含了一系列指令,用于构建一个 Docker 镜像。这些指令定义了如何设置环境、安装软件、复制文件等,以便创建一个完整的运行环境。常用的命令:FROM 指令指定基础镜像,RUN 指令执行命令,CMD 指令指定容器创建时的默认命令,ENTRYPOINT 指令设置主要命令且不易被覆盖,COPY 和 ADD 指令用于文件复制等。docker 在构建镜像时,上下文路径用于告知 docker 引擎本机需打包的文件所在位置,默认是 Dockerfile 所在位置。EXPOSE 声明端口,WORKDIR 指定工作目录,USER 指定执行后续命令的用户和用户组,HEALTHCHECK 监控容器服务运行状态,ONBUILD 延迟构建命令执行,LABEL 为镜像添加元数据

下载完成后,Windows 需要启动 docker desktop 客户端,linux 可以直接在命令行中启动

检查安装是否正确

image

docker 换源

由于众所周知的原因, 局域网内访问 docker 的速度和稳定性都是比较抽象的,需要进行换源.一个优质的镜像源是阿里云为个人开发者提供的 docker 源

配置镜像加速器_容器镜像服务(ACR)-阿里云帮助中心 (aliyun.com)

配置完成后需要重启服务才能生效:(linux 下)

systemctl daemon-reload
systemctl restart docker

Windows 下 docker desktop 配置镜像的方法:

在 docker desktop 内打开设置-docker engine,在 json 文件中添加

"registry-mirrors": ["url"] ​后,点击下方应用&重启按钮即可

离线导入镜像:

本文档提供了一个镜像,您可以通过离线方式导入镜像,或是通过 docker pull ​命令在线导入镜像

镜像可以从本地加载, 比如

docker load -i ollama_latest.tar
docker load -i labring_fastgpt_v4.8.8-fix2.tar
docker load -i labring_fastgpt_sandbox_latest.tar
docker load -i songquanpeng_one-api_v0.6.7.tar
docker load -i pgvector_0.7.0-pg15.tar
docker load -i mysql_8.0.36.tar
docker load -i mongo_5.0.18.tar

将镜像打包为压缩文件,可以用这种方式:

docker save -o ollama_latest.tar ollama/ollama:latest
docker save -o labring_fastgpt_v4.8.8-fix2.tar ghcr.io/labring/fastgpt:v4.8.8-fix2
docker save -o labring_fastgpt_sandbox_latest.tar ghcr.io/labring/fastgpt-sandbox:latest
docker save -o songquanpeng_one-api_v0.6.7.tar ghcr.io/songquanpeng/one-api:v0.6.7
docker save -o pgvector_0.7.0-pg15.tar pgvector/pgvector:0.7.0-pg15
docker save -o mysql_8.0.36.tar mysql:8.0.36
docker save -o mongo_5.0.18.tar mongo:5.0.18

3.FastGPT 部署

a. 如何使用 docker-compose.yml 进行安装

tldr,在 docker-compsoe.yml 同级目录下运行这行命令

docker-compose up -d

如果修改了这个文件的内容,需要重启容器才能生效

docker-compose down
docker-compose up -d

安装完成后会自动启动

下面是详细的解释

什么是 docker-compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose 可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

参考 Docker 教程 | 菜鸟教程 (runoob.com)

如何编写 docker-compose 文件
  1. docker-compose 文件由三个主要部分组成:services、networks 和 volumes。
  2. services 部分定义了应用程序中的各个服务,每个服务都可以是一个 Docker 容器。
  3. networks 部分定义了容器之间的网络连接。
  4. volumes 部分定义了容器可以使用的存储卷。
如何阅读 docker-compose 配置文件
  1. 了解 docker-compose 文件的基本结构,包括 services、networks 和 volumes 部分。确定每个部分的作用和相互关系。
  2. 分析服务定义,了解每个服务使用的镜像、端口映射、环境变量等配置。确定服务之间的依赖关系和启动顺序。
  3. 检查 networks 部分,了解容器之间的网络连接方式。确定是否需要创建自定义网络,以及网络的驱动和其他属性。
  4. 查看 volumes 部分,了解容器可以使用的存储卷。确定卷的来源和挂载方式。
  5. 注意服务定义中的 environment ,command、depends_on 等选项,了解设置的环境变量对服务的影响。

以下是 docker-compose 文件中各部分的含义

PostgreSQL (pg)
  • 功能: PostgreSQL 是一个强大的开源关系型数据库管理系统,支持多种数据类型和复杂的查询。

  • 配置项:

    • image​: 指定使用的 PostgreSQL 镜像。
    • container_name​: 容器的名称。
    • ports​: 将容器的 5432 端口映射到宿主机的 5432 端口。
    • environment​: 设置环境变量,包括数据库用户名、密码和默认数据库。
    • volumes​: 使用宿主机上的目录作为数据卷,持久化数据。
  • 如果需要修改:

    • 修改用户名和密码需要更改 POSTGRES_USER​ 和 POSTGRES_PASSWORD​ 环境变量。这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果.
    • 若要修改数据库名称,需要更改 POSTGRES_DB​ 环境变量。
    • 若要更改数据持久化的目录,需要修改 volumes​ 中的宿主机目录。
MongoDB (mongo)
  • 功能: MongoDB 是一个基于分布式文件系统的 NoSQL 数据库管理系统。

  • 配置项:

    • image​: 指定使用的 MongoDB 镜像。
    • container_name​: 容器的名称。
    • command​: 指定了启动 MongoDB 时的一些额外命令,如创建复制集等。
    • ports​: 将容器的 27017 端口映射到宿主机的 27017 端口。
    • environment​: 设置环境变量,包括管理员用户的用户名和密码。
    • volumes​: 使用宿主机上的目录作为数据卷,持久化数据。
  • 如果需要修改:

    • 修改管理员用户名和密码需要更改 MONGO_INITDB_ROOT_USERNAME​ 和 MONGO_INITDB_ROOT_PASSWORD​ 环境变量。
    • 若要修改数据持久化的目录,需要修改 volumes​ 中的宿主机目录。
FastGPT Sandbox (sandbox)
  • 功能: 提供一个沙盒环境用于测试和开发 FastGPT 相关的功能。

  • 配置项:

    • image​: 指定使用的 FastGPT 沙盒镜像。
    • container_name​: 容器的名称
FastGPT (fastgpt)
  • 功能: 主要的 FastGPT 服务应用,提供人工智能相关的服务。

  • 配置项:

    • image​: 指定使用的 FastGPT 镜像。
    • container_name​: 容器的名称。
    • ports​: 将容器的 3000 端口映射到宿主机的 3000 端口。
    • depends_on​: 指定 FastGPT 依赖的其他服务。
    • environment​: 设置环境变量,包括默认的 root 密码、API URL、API 密钥、数据库连接字符串等。
    • volumes​: 使用宿主机上的目录作为数据卷,加载配置文件。
  • 如果需要修改:

    • 若要更新镜像版本,需要修改 image​ 字段中的镜像标签。
    • 若要更改 API URL 或密钥,需要修改相应的环境变量。
    • 若要更改数据库连接字符串,需要修改 MONGODB_URI​ 和 PG_URL​ 环境变量。
    • 若要修改配置文件的位置,需要修改 volumes​ 中的宿主机目录。
MySQL (mysql)
  • 功能: MySQL 是一个流行的开源关系型数据库管理系统。

  • 配置项:

    • image​: 指定使用的 MySQL 镜像。
    • container_name​: 容器的名称。
    • ports​: 将容器的 3309 端口映射到宿主机的 3309 端口。
    • command​: 设置 MySQL 的启动选项。
    • environment​: 设置环境变量,包括 root 密码和默认数据库。
    • volumes​: 使用宿主机上的目录作为数据卷,持久化数据。
  • 如果需要修改:

    • 修改 root 密码需要更改 MYSQL_ROOT_PASSWORD​ 环境变量。
    • 修改数据库需要更改 MYSQL_DATABASE ​环境变量。
    • 若要更改数据持久化的目录,需要修改 volumes​ 中的宿主机目录。
OneAPI (oneapi)
  • 功能: 提供了一个 API 接口层,用于整合和管理不同的 AI 模型和服务。

  • 配置项:

    • image​: 指定使用的 OneAPI 镜像。
    • container_name​: 容器的名称。
    • ports​: 将容器的 3001 端口映射到宿主机的 3001 端口。
    • depends_on​: 指定 OneAPI 依赖的其他服务。
    • environment​: 设置环境变量,包括数据库连接字符串、加密密钥等。
    • volumes​: 使用宿主机上的目录作为数据卷,加载数据。
  • 如果需要修改:

    • 若要更新镜像版本,需要修改 image​ 字段中的镜像标签。
    • 若数据库配置修改,此处需要同步修改 SQL_DSN​ 环境变量。
    • 若要更改加密密钥,需要修改 SESSION_SECRET​ 环境变量。
    • 若要修改数据持久化的目录,需要修改 volumes​ 中的宿主机目录。
Ollama (ollama)
  • 功能: 提供了一个平台来运行和管理各种大型语言模型。

  • 配置项:

    • image​: 指定使用的 Ollama 镜像。
    • container_name​: 容器的名称。
    • ports​: 将容器的 11434 端口映射到宿主机的 11434 端口。
    • volumes​: 使用宿主机上的目录作为数据卷,加载模型文件。
    • restart​: 设置容器的重启策略。
  • 如果需要修改:

    • 若要更新镜像版本,需要修改 image​ 字段中的镜像标签。
    • 若要更改模型文件的位置,需要修改 volumes​ 中的宿主机目录。
    • 若要更改容器的重启策略,需要修改 restart​ 字段。
网络定义 (networks)
  • 功能: 定义了一个名为 fastgpt​ 的网络,使服务之间能够通信。

  • 配置项:

    • networks​: 定义了一个名为 fastgpt​ 的网络。

b. 部署完成后验证每个模块正常

检查容器列表 docker ps​:列出所有运行中的容器。需要七个容器都出现

image

i. docker 日志查看每个服务是否正常

命令为 docker logs <container_id>​,容器 id 可以通过 docker ps ​获取。比如这里调取了 fastgpt 的 log

image

ii. 验证每个数据库是否能够连接成功

这个项目用到了三个数据库:MySQL 与 oneapi 连接,存储 api 数据;PostgreSQL 存储向量化索引数据;MongoDB 存储对话信息,知识库内容等。

以下是连接方法:

1.首先通过命令行接入容器,以 mongodb 为例

docker-desktop 应用内点击 fastgpt 容器:

image

点击左侧的容器

image

点击 exec

image

linux 下,输入 docker exec -it <container_id/container_name> /usr/bin/bash​,获取 container_id 方式为输入 docker ps

例如

image

2.通过下面的命令接入对应数据库并查看表内容。如果数据库名称/用户名称/密码有过修改,这里应当同步修改

mongo -u myusername -p mypassword --authenticationDatabase admin
show dbs
use fastgpt
show collections
db.<collection_name>.find({}).toArray()
psql -d postgres -U username
\dt
\d modeldata
mysql -u root -p  #oneapimmysql
USE oneapi;
SHOW TABLES;
DESCRIBE users;
SELECT * FROM users;

iii. 验证有页面的每个服务是否能进行登录

fastgpthttp://localhost:3000/,初始用户 root,密码 1234

image

**oneapi:**​One API:初始用户名为 root,初始密码为 123456,第一次登录需要修改密码

image

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值