其他教程

其他教程

Products

当前位置:首页 > 其他教程 >

Docker Compose 快速部署FastGPT 手把手教你基于 FastGPT搭建个人知识库

GG网络技术分享 2025-03-18 16:16 11


一、安装 Docker 和 docker-compose 

二、创建目录并下载 docker-compose.yml 

依次执行下面命令,创建 FastGPT 文件并拉取docker-compose.ymlconfig.json,执行完后目录下会有 2 个文件。

非 Linux 环境或无法访问外网环境,可手动创建一个目录,并下载下面2个链接的文件: docker-compose.yml,config.json注意: docker-compose.yml 配置文件中 Mongo 为 5.x,部分服务器不支持,需手动更改其镜像版本为 4.4.24

mkdir fastgpt

cd fastgpt

curl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.yml

curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json

三、修改 docker-compose.yml 的环境变量 

修改docker-compose.yml中的OPENAI_BASE_URL(API 接口的地址,需要加/v1)和CHAT_API_KEY(API 接口的凭证)。

使用 OneAPI 的话,OPENAI_BASE_URL=OneAPI访问地址/v1;CHAT_API_KEY=令牌

四、启动容器 

在 docker-compose.yml 同级目录下执行

# 进入项目目录

cd 项目目录

# 启动容器

docker-compose pull

docker-compose up -d

五、初始化 Mongo 副本集(4.6.8以前可忽略) 

FastGPT 4.6.8 后使用了 MongoDB 的事务,需要运行在副本集上。副本集没法自动化初始化,需手动操作。

# 查看 mongo 容器是否正常运行docker ps# 进入容器docker exec -it mongo bash# 连接数据库(这里要填Mongo的用户名和密码)

mongo -u myusername -p mypassword --authenticationDatabase admin

# 初始化副本集。如果需要外网访问,mongo:27017 可以改成 ip:27017。但是需要同时修改 FastGPT 连接的参数(MONGODB_URI=mongodb://myname:mypassword@mongo:27017/fastgpt?authSource=admin => MONGODB_URI=mongodb://myname:mypassword@ip:27017/fastgpt?authSource=admin)rs.initiate({

_id: "rs0",

members: [ { _id: 0, host: "mongo:27017" } ]})# 检查状态。如果提示 rs0 状态,则代表运行成功rs.status()
关于 host: “mongo:27017” 说明
  1. mongo:27017 代表指向同一个 docker 网络的 mongo 容器的 27017 服务。因此,如果使用该参数,外网是无法访问到数据库的。
  2. ip:27017 (ip替换成公网IP):代表通过你的公网IP进行访问。如果用该方法,同时需要修改 docker-compose 中 mongo 的连接参数,因为默认是用 mongo:27017 进行连接。

五、访问 FastGPT 

目前可以通过 ip:3000 直接访问(注意防火墙)。登录用户名为 root,密码为docker-compose.yml环境变量里设置的 DEFAULT_ROOT_PSW

如果需要域名访问,请自行安装并配置 Nginx。

FAQ 

Mongo 启动失败 

docker-compose 示例优化 Mongo 副本集参数,不需要手动创建再挂载。如果无法启动,可以尝试更换下面的脚本:

  1. 终端中执行:

openssl rand -base64 756 > ./mongodb.key

chmod 600 ./mongodb.key

chown 999:root ./mongodb.key
  1. 修改 docker-compose.yml:
mongo:#  image: mongo:5.0.18# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云

container_name: mongo

ports: - 27017:27017networks:

- fastgpt

command: mongod --keyFile /data/mongodb.key --replSet rs0

environment: # 默认的用户名和密码,只有首次允许有效

- MONGO_INITDB_ROOT_USERNAME=myusername

- MONGO_INITDB_ROOT_PASSWORD=mypassword

volumes:

- ./mongo/data:/data/db

- ./mongodb.key:/data/mongodb.key
  1. 重启服务

docker-compose down

docker-compose up -d
  1. 进入容器执行副本集合初始化(看上方)

官方文档:https://doc.fastgpt.in/docs/development/docker/

 

安装并使用 FastGPT。

FastGPT

官方简介

❝ FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!

知识库核心流程图

一,安装 FastGPT

  1. 安装 Docker

      2. 创建配置文件

  • 创建 docker-compose.yml

# 非 host 版本, 不使用本机代理

# (不懂 Docker 的,只需要关心 OPENAI_BASE_URL 和 CHAT_API_KEY 即可!)

version: '3.3'

services:

pg:

image: ankane/pgvector:v0.5.0 # git

# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.5.0 # 阿里云

container_name: pg

restart: always

ports: # 生产环境建议不要暴露

- 5432:5432

networks:

- fastgpt

environment:

# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果

- POSTGRES_USER=username

- POSTGRES_PASSWORD=password

- POSTGRES_DB=postgres

volumes:

- ./pg/data:/var/lib/postgresql/data

mongo:

image: mongo:5.0.18

# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云

container_name: mongo

restart: always

ports: # 生产环境建议不要暴露

- 27017:27017

networks:

- fastgpt

environment:

# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果

- MONGO_INITDB_ROOT_USERNAME=username

- MONGO_INITDB_ROOT_PASSWORD=password

volumes:

- ./mongo/data:/data/db

fastgpt:

container_name: fastgpt

image: ghcr.io/labring/fastgpt:latest # git

# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云

ports:

- 3000:3000

networks:

- fastgpt

depends_on:

- mongo

- pg

restart: always

environment:

# root 密码,用户名为: root

- DEFAULT_ROOT_PSW=1234

# 中转地址,如果是用官方号,不需要管。务必加 /v1

- OPENAI_BASE_URL=https://api.openai.com/v1

- CHAT_API_KEY=替换成你的OPENAI-KEY

- DB_MAX_LINK=5 # database max link

- TOKEN_KEY=any

- ROOT_KEY=root_key

- FILE_TOKEN_KEY=filetoken

# mongo 配置,不需要改. 如果连不上,可能需要去掉 ?authSource=admin

- MONGODB_URI=mongodb://username:password@mongo:27017/fastgpt?authSource=admin

# pg配置. 不需要改

- PG_URL=postgresql://username:password@pg:5432/postgres

volumes:

- ./config.json:/app/data/config.json

networks:

fastgpt:

「注意:需要将 CHAT_API_KEY 的值换成自己 openai key。」

  • 再创建 config.json

{

"SystemParams": {

"pluginBaseUrl": "",

"vectorMaxProcess": 15,

"qaMaxProcess": 15,

"pgHNSWEfSearch": 100

},

"ChatModels": [

{

"model": "gpt-3.5-turbo-1106",

"name": "GPT35-1106",

"price": 0,

"maxContext": 16000,

"maxResponse": 4000,

"quoteMaxToken": 2000,

"maxTemperature": 1.2,

"censor": false,

"vision": false,

"defaultSystemChatPrompt": ""

},

{

"model": "gpt-3.5-turbo-16k",

"name": "GPT35-16k",

"maxContext": 16000,

"maxResponse": 16000,

"price": 0,

"quoteMaxToken": 8000,

"maxTemperature": 1.2,

"censor": false,

"vision": false,

"defaultSystemChatPrompt": ""

},

{

"model": "gpt-4",

"name": "GPT4-8k",

"maxContext": 8000,

"maxResponse": 8000,

"price": 0,

"quoteMaxToken": 4000,

"maxTemperature": 1.2,

"censor": false,

"vision": false,

"defaultSystemChatPrompt": ""

},

{

"model": "gpt-4-vision-preview",

"name": "GPT4-Vision",

"maxContext": 128000,

"maxResponse": 4000,

"price": 0,

"quoteMaxToken": 100000,

"maxTemperature": 1.2,

"censor": false,

"vision": true,

"defaultSystemChatPrompt": ""

}

],

"QAModels": [

{

"model": "gpt-3.5-turbo-16k",

"name": "GPT35-16k",

"maxContext": 16000,

"maxResponse": 16000,

"price": 0

}

],

"CQModels": [

{

"model": "gpt-3.5-turbo",

"name": "GPT35",

"maxContext": 4000,

"maxResponse": 4000,

"price": 0,

"functionCall": true,

"functionPrompt": ""

},

{

"model": "gpt-4",

"name": "GPT4-8k",

"maxContext": 8000,

"maxResponse": 8000,

"price": 0,

"functionCall": true,

"functionPrompt": ""

}

],

"ExtractModels": [

{

"model": "gpt-3.5-turbo-1106",

"name": "GPT35-1106",

"maxContext": 16000,

"maxResponse": 4000,

"price": 0,

"functionCall": true,

"functionPrompt": ""

}

],

"QGModels": [

{

"model": "gpt-3.5-turbo-1106",

"name": "GPT35-1106",

"maxContext": 1600,

"maxResponse": 4000,

"price": 0

}

],

"VectorModels": [

{

"model": "text-embedding-ada-002",

"name": "Embedding-2",

"price": 0.2,

"defaultToken": 700,

"maxToken": 3000

}

],

"ReRankModels": [],

"AudioSpeechModels": [

{

"model": "tts-1",

"name": "OpenAI TTS1",

"price": 0,

"voices": [

{ "label": "Alloy", "value": "alloy", "bufferId": "openai-Alloy" },

{ "label": "Echo", "value": "echo", "bufferId": "openai-Echo" },

{ "label": "Fable", "value": "fable", "bufferId": "openai-Fable" },

{ "label": "Onyx", "value": "onyx", "bufferId": "openai-Onyx" },

{ "label": "Nova", "value": "nova", "bufferId": "openai-Nova" },

{ "label": "Shimmer", "value": "shimmer", "bufferId": "openai-Shimmer" }

]

}

],

"WhisperModel": {

"model": "whisper-1",

"name": "Whisper1",

"price": 0

}

}

  1. 启动

在 docker-compose.yml 同级目录下执行

  1. 拉取镜像

docker-compose pull

  1. 运行容器

docker-compose up -d

二,使用 FastGPT

  1. 访问

浏览器通过http://localhost:3000/进行访问

登录用户名为 root,密码为 docker-compose.yml 环境变量里设置的 DEFAULT ROOT PSW,默认是 1234.

  1. 新建知识库

新建一个知识库,这里我是专门的存储酷壳网站上的文章,所以就命名为酷壳。

  1. 导入文档

通过文件导入已经下载好的文章

确认后就开始将当前数据转化为向量数据

这两篇文章字数可能破完了,完全导入好,所花费的时间可能会有半个小时乃至一个小时.....,由于文本限制问题,按照固定字数拆分若干个数据集

这是已经拆分好的,还有 5 个在排队,先测试一下。

  1. 使用知识库

新建一个应用

  1. 绑定刚刚的知识库
  1. 开始对话,效果展示如下:

这里有个小问题,

标签:

提交需求或反馈

Demand feedback