什么是 FastGPT ?
FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,提供开箱即用的数据处理、模型调用等能力。同时可以通过 Flow 可视化进行工作流编排,从而实现复杂的问答场景!
FastGPT 允许用户构建本地知识库,以提高 AI 的理解能力和应用场景的适应性。该系统的设计旨在让 AI 更好地理解用户需求并提供更准确的回答。
本文假设你已经安装了 One API 和 M3E,如果还没有的话,建议你先阅读👇两篇
文章传送门:
安装 在群晖上以 Docker 方式安装。
config.json 由于环境变量不利于配置复杂的内容,新版 FastGPT 采用了 ConfigMap 的形式挂载配置文件 config.json
这个配置文件中包含了系统参数和各个模型配置,使用时务必去掉注释!!!!!!!!!!!!!!
源文件的地址在这里👇:https://doc.fastai.site/docs/development/configuration/
老苏修改后的完整的 config.json 放在了这里👇:https://raw.githubusercontent.com/wbsu2003/synology/main/FastGPT/config.json
llmModels 之前尝试过私有化部署的 LLM Models,在老苏的小机器上除了 Qwen:0.5b外,其他基本上都跑不动,所以这次尝试是用 Moonshot AI,其可用的模型包括 moonshot-v1-8k 、 moonshot-v1-32k 和 moonshot-v1-128k
vectorModels FastGPT 默认使用了 openai 的 embedding 向量模型
1 2 3 4 5 6 7 8 9 10 11 12 13 14 "vectorModels" : [ { "model" : "text-embedding-ada-002" , "name" : "Embedding-2" , "avatar" : "/imgs/model/openai.svg" , "charsPointsPrice" : 0 , "defaultToken" : 700 , "maxToken" : 3000 , "weight" : 100 , "defaultConfig" : { } , "dbConfig" : { } , "queryConfig" : { } } ] ,
老苏改用了 M3E 向量模型进行替换
1 2 3 4 5 6 7 8 9 "vectorModels" : [ { "model" : "m3e" , "name" : "M3E" , "price" : 0.1 , "defaultToken" : 500 , "maxToken" : 1800 } ] ,
docker-compose.yml 下面的内容基于官方的 docker-compose.yml 修改而成,因为包含了中文注释,所以记得用 UTF-8 编码
源文件地址:https://github.com/labring/FastGPT/blob/main/files/deploy/fastgpt/docker-compose.yml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 version: '3.3' services: pg: image: ankane/pgvector:v0.5.0 container_name: fastgpt-pg restart: always volumes: - ./pdata:/var/lib/postgresql/data environment: - POSTGRES_USER=username - POSTGRES_PASSWORD=password - POSTGRES_DB=postgres mongo: image: mongo:5.0.18 container_name: fastgpt-mongo restart: always volumes: - ./mdata:/data/db environment: - MONGO_INITDB_ROOT_USERNAME=myusername - MONGO_INITDB_ROOT_PASSWORD=mypassword command: mongod --keyFile /data/mongodb.key --replSet rs0 entrypoint: - bash - -c - | openssl rand -base64 128 > /data/mongodb.key chmod 400 /data/mongodb.key chown 999:999 /data/mongodb.key echo 'const isInited = rs.status().ok === 1 if(!isInited){ rs.initiate({ _id: "rs0", members: [ { _id: 0, host: "mongo:27017" } ] }) }' > /data/initReplicaSet.js # 启动MongoDB服务 exec docker-entrypoint.sh "$$@" & until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2 >&1; do echo "Waiting for MongoDB to start..." sleep 2 done mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js wait $$! fastgpt: image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.7 container_name: fastgpt-web restart: always depends_on: - mongo - pg ports: - 3155 :3000 volumes: - ./config.json:/app/data/config.json - ./tmp:/app/tmp environment: - DEFAULT_ROOT_PSW=1234 - OPENAI_BASE_URL=http://192.168.0.197:3033/v1 - CHAT_API_KEY=sk-bn6M52bOfdxYB3n2Ee717eA2C66b45318f1c95E4D9553d94 - DB_MAX_LINK=30 - TOKEN_KEY=any - ROOT_KEY=root_key - FILE_TOKEN_KEY=filetoken - MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin - PG_URL=postgresql://username:password@pg:5432/postgres
docker-compose.yml 可以在这里下载☞,https://raw.githubusercontent.com/wbsu2003/synology/main/FastGPT/docker-compose.yml
然后执行下面的命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 mkdir -p /volume1/docker/fastgpt/{pg,mongo,tmp}cd /volume1/docker/fastgptdocker-compose up -d docker-compose down docker-compose up -d
运行 在浏览器中输入 http://群晖IP:3155 就能看到登录界面
如果你没有更改默认配置,那么用户名便是 root,密码为 1234
新建知识库 首先需要新建一个知识库
取个名字
选择 文本数据集
来源选择 本地文件
将文件拖入
上传了一个 pdf
直接用了默认设置
开始上传
多了一个数据集
等状态变成 已就绪 就可以开始建应用了
当然这个过程也很消耗资源,小机器死机了一次,好在最后还是索引成功了
可以测试下搜索
新建应用 新建一个应用
模板选择了 知识库+对话引导
进入 简易配置,关联知识库
也可以进入 高级编排
这里已经可以开始调试了
再来一条
没问题的话就可以保存、发布了
开始聊天 进入 聊天
相关接口的开发问题随便问,这给客服工作省了多大的事啊
看看 Moonshot AI 赠送的 15块 还剩下多少?
所有的请求,在 One API 的日志中都有记录
FastGPT 是支持纯本地私有化部署的,但老苏考虑了自己小机器的性能,采用了混合部署的方式,其中向量模型采用了本地私有化部署,而 LLM 模型则使用了云服务
流程跑通了,接下来就是优化了,比如 标记预期答案 等
当然,你还可以将 FastGPT 通过 OpenAPI 接口,被第三方应用调用,可以是全局 API key(可操作 FastGPT 上的相关服务和资源,无法直接调用应用对话)
也可以是应用 API key(可直接调用应用对话)
参考文档
labring/FastGPT: FastGPT is a knowledge-based platform built on the LLM, offers out-of-the-box data processing and model invocation capabilities, allows for workflow orchestration through Flow visualization! 地址:https://github.com/labring/FastGPT
FastGPT 地址:https://fastgpt.in/
快速了解 FastGPT | FastGPT 地址:https://doc.fastai.site/docs/intro/