2024/03 作者:ihunter 0 次 0
基础软件
基础软件 | 功能说明 |
mongo:5.0.18 | fastGPT使用的数据库存储页面数据和知识库数据 |
pgvector:v0.5.0 | 使用pg的向量数据库模块 |
one-api | 做模型的管理和api的提供 |
chatglm3-6b | 本地大模型 |
m3e-large-api | Embedding 模型提供分词并转成向量数据 |
fastGPT | 知识库问答系统 |
环境配置:
一、电脑内存至少32G, GPU 8G以上、cpu指令集要支持AVX (二代或以后的i3、i5、i7都支持)
二、无GPU。内存最好64G、cpu指令集要支持AVX
数据库部署
pgvector:v0.5.0+mongo:5.0.18 这里使用dockercompose方式进行部署。这里部署在另外一台机器上。后面也会给出官方的方式
# 非 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 environment: # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果 - POSTGRES_USER=username - POSTGRES_PASSWORD=password - POSTGRES_DB=postgres volumes: - /app/fastgpt/pg:/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 environment: # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果 - MONGO_INITDB_ROOT_USERNAME=username - MONGO_INITDB_ROOT_PASSWORD=password volumes: - /app/fastgpt/mongo:/data/db
启动命令
拉取镜像:docker-compose pull
在后台运行容器:docker-compose up -d
启动完成后等待fastgpt链接即可
官方的方式参考
# 非 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=sk-xxxx - 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: # host 版本, 不推荐。 # version: '3.3' # services: # pg: # image: ankane/pgvector:v0.5.0 # dockerhub # # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.5.0 # 阿里云 # container_name: pg # restart: always # ports: # 生产环境建议不要暴露 # - 5432:5432 # 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 # environment: # # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果 # - MONGO_INITDB_ROOT_USERNAME=username # - MONGO_INITDB_ROOT_PASSWORD=password # volumes: # - ./mongo/data:/data/db # - ./mongo/logs:/var/log/mongodb # fastgpt: # # image: ghcr.io/labring/fastgpt:latest # github # image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:latest # 阿里云 # network_mode: host # restart: always # container_name: fastgpt # environment: # # root 密码,用户名为: root # - DEFAULT_ROOT_PSW=1234 # # 中转地址,如果是用官方号,不需要管 # - OPENAI_BASE_URL=https://api.openai.com/v1 # - CHAT_API_KEY=sk-xxxx # - DB_MAX_LINK=5 # database max link # # token加密凭证(随便填,作为登录凭证) # - TOKEN_KEY=any # # root key, 最高权限,可以内部接口互相调用 # - ROOT_KEY=root_key # # mongo 配置,不需要改 # - MONGODB_URI=mongodb://username:password@0.0.0.0:27017/fastgpt?authSource=admin # # pg配置. 不需要改 # - PG_URL=postgresql://username:password@0.0.0.0:5432/postgres
chatglm3-6b部署
使用chatglm3-6b的一键启动包
m3e-large-api 部署
用docker部署m3e模型,默认用CPU运行:
docker run -d -p 6008:6008 --name=m3e-large-api
registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest
使用GPU运行: docker run -d -p 6008:6008 --gpus all --name=m3e-large-api registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest
原镜像:
docker run -d -p 6200:6008 --name=m3e-large-api stawky/m3e-large-api:latest
启动完成后测试m3e是否启动成功
测试m3e的api:
curl --location --request POST '
https://localhost:6008/v1/embeddings' \ --header 'Authorization: Bearer sk-aaabbbcccdddeeefffggghhhiiijjjkkk' \ --header 'Content-Type: application/json' \ --data-raw '{ "model": "m3e", "input": ["laf是什么"] }'
启动oneAPI并配置
oneAPI的启动方式有好多种,可以
使用docker部署
源码部署
exe启动
我这里使用exe的方式启动
配置模型渠道
chatglm
m3e
配置令牌
启动fastGPT
配置文件修改
fastgpt 我使用源码的方式启动。这里需要修改几点配置文件
以下文件均在 projects/app 路径下。
环境变量
复制.env.template文件,在同级目录下生成一个.env.local 文件,修改.env.local 里内容才是有效的变量。变量说明见 .env.template
config 配置文件
复制 data/config.json 文件,生成一个 data/config.local.json 配置文件
修改config文件ChatModels: { "model": "chatglm3", "name": "chatglm3", "maxContext": 4000, "maxResponse": 4000, "quoteMaxToken": 2000, "maxTemperature": 1, "vision": false, "defaultSystemChatPrompt": "" }, ChatGLM3-6B支持的上下文长度为8k,你可以将maxContext和maxResponse改为8000 可以在defaultSystemChatPrompt里设置你的系统默认提示词 修改config文件QAModels: { "model": "chatglm3", "name": "chatglm3", "maxContext": 4000, "maxResponse": 4000, "price": 0 } 修改config文件VectorModels: { "model": "m3e", "name": "m3e", "price": 0.1, "defaultToken": 500, "maxToken": 1800 } QAModels和VectorModels都添加好后,记得在括号的前面加个英文逗号,不然config文件无法生效
具体文件参考
.env.local文件
LOG_DEPTH=3 # 默认用户密码,用户名为 root,每次重启时会自动更新。 DEFAULT_ROOT_PSW=123456 # 数据库最大连接数 DB_MAX_LINK=5 # token TOKEN_KEY=dfdasfdas # 文件阅读时的秘钥 FILE_TOKEN_KEY=filetokenkey # root key, 最高权限 ROOT_KEY=fdafasd # openai 基本地址,可用作中转。 OPENAI_BASE_URL=http://localhost:3000/v1 # oneapi 地址,可以使用 oneapi 来实现多模型接入 # ONEAPI_URL=https://xxxx.cloud.sealos.io/openai/v1 # 通用key。可以是 openai 的也可以是 oneapi 的。 # 此处逻辑:优先走 ONEAPI_URL,如果填写了 ONEAPI_URL,key 也需要是 ONEAPI 的 key CHAT_API_KEY=sk-2Vbi3QisXYDzQyE6D5EfF27f0d08407b868dF6845a7bD9C5 # mongo 数据库连接参数 MONGODB_URI=mongodb://username:password@10.10.0.10:27017/fastgpt?authSource=admin # PG 数据库连接参数 PG_URL=postgresql://username:password@10.10.0.10:5432/postgres # 首页路径 HOME_URL=/ # Loki Log Path # LOKI_LOG_URL=
config.local.json
{ "systemEnv": { "pluginBaseUrl": "", "vectorMaxProcess": 15, "qaMaxProcess": 15, "pgHNSWEfSearch": 100 }, "chatModels": [ { "model": "gpt-3.5-turbo", "name": "GPT35", "price": 0, "maxContext": 4000, "maxResponse": 4000, "quoteMaxToken": 2000, "maxTemperature": 1.2, "censor": false, "vision": false, "defaultSystemChatPrompt": "" }, { "model": "chatglm3", "name": "chatglm3", "maxContext": 4000, "maxResponse": 4000, "quoteMaxToken": 2000, "maxTemperature": 1, "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 }, { "model": "chatglm3", "name": "chatglm3", "maxContext": 4000, "maxResponse": 4000, "price": 0 } ], "cqModels": [ { "model": "gpt-3.5-turbo", "name": "GPT35", "maxContext": 4000, "maxResponse": 4000, "price": 0, "toolChoice": true, "functionPrompt": "" }, { "model": "gpt-4", "name": "GPT4-8k", "maxContext": 8000, "maxResponse": 8000, "price": 0, "toolChoice": true, "functionPrompt": "" } ], "extractModels": [ { "model": "gpt-3.5-turbo-1106", "name": "GPT35-1106", "maxContext": 16000, "maxResponse": 4000, "price": 0, "toolChoice": 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, "weight": 100 }, { "model": "m3e", "name": "m3e", "price": 0.1, "defaultToken": 500, "maxToken": 1800 } ], "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 } }
程序启动
环境要求
Node.js v18.x (LTS) 以上
pnpm 版本 8.x.x 以上
进入到projects/app 目录下
# 代码根目录下执行,会安装根 package、projects 和 packages 内所有依赖 pnpm i # 切换到应用目录 cd projects/app # 开发模式运行 pnpm dev
访问http://localhost:3001/ 进行登录 用户 root 密码是123456
创建知识库
导入文件
开始对话
收工
上篇:
fastgpt+oneapi实现大模型整合
下篇:
使用 Docker 快速上手官方版 LLaMA2 开源大模型