基于FastGPT搭建知识库问答系统

2024-04-27 16:44

本文主要是介绍基于FastGPT搭建知识库问答系统,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

什么是 FastGPT ?

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

FastGPT 允许用户构建本地知识库,以提高 AI 的理解能力和应用场景的适应性。该系统的设计旨在让 AI 更好地理解用户需求并提供更准确的回答。

FastGPT 功能演示

本文假设你已经安装了 One APIM3E,如果还没有的话,建议你先阅读👇两篇

文章传送门:

  • 大模型接口管理和分发系统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-8kmoonshot-v1-32kmoonshot-v1-128k

vectorModels

FastGPT 默认使用了 openaiembedding 向量模型

  "vectorModels": [{"model": "text-embedding-ada-002", // 模型名(与OneAPI对应)"name": "Embedding-2", // 模型展示名"avatar": "/imgs/model/openai.svg", // logo"charsPointsPrice": 0, // n积分/1k token"defaultToken": 700, // 默认文本分割时候的 token"maxToken": 3000, // 最大 token"weight": 100, // 优先训练权重"defaultConfig":{},  // 自定义额外参数。例如,如果希望使用 embedding3-large 的话,可以传入 dimensions:1024,来返回1024维度的向量。(目前必须小于1536维度)"dbConfig": {}, // 存储时的额外参数(非对称向量模型时候需要用到)"queryConfig": {} // 参训时的额外参数}],

老苏改用了 M3E 向量模型进行替换

  "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

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: fastgpt-pgrestart: always#ports:#  - 5432:5432volumes:- ./pdata:/var/lib/postgresql/dataenvironment:# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果- POSTGRES_USER=username- POSTGRES_PASSWORD=password- POSTGRES_DB=postgresmongo:image: mongo:5.0.18#image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18container_name: fastgpt-mongorestart: always#ports:#  - 27017:27017volumes:- ./mdata:/data/dbenvironment:- MONGO_INITDB_ROOT_USERNAME=myusername- MONGO_INITDB_ROOT_PASSWORD=mypasswordcommand: mongod --keyFile /data/mongodb.key --replSet rs0entrypoint:- bash- -c- |openssl rand -base64 128 > /data/mongodb.keychmod 400 /data/mongodb.keychown 999:999 /data/mongodb.keyecho 'const isInited = rs.status().ok === 1if(!isInited){rs.initiate({_id: "rs0",members: [{ _id: 0, host: "mongo:27017" }]})}' > /data/initReplicaSet.js# 启动MongoDB服务exec docker-entrypoint.sh "$$@" &# 等待MongoDB服务启动until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; doecho "Waiting for MongoDB to start..."sleep 2done# 执行初始化副本集的脚本mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js# 等待docker-entrypoint.sh脚本执行的MongoDB服务进程wait $$!fastgpt:image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.7 # git#image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.7 # 阿里云container_name: fastgpt-webrestart: alwaysdepends_on:- mongo- pgports:- 3155:3000volumes:- ./config.json:/app/data/config.json- ./tmp:/app/tmpenvironment:# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。- DEFAULT_ROOT_PSW=1234# AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。- OPENAI_BASE_URL=http://192.168.0.197:3033/v1# AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改)- CHAT_API_KEY=sk-bn6M52bOfdxYB3n2Ee717eA2C66b45318f1c95E4D9553d94# 数据库最大连接数- DB_MAX_LINK=30# 登录凭证密钥- TOKEN_KEY=any# root的密钥,常用于升级时候的初始化请求- ROOT_KEY=root_key# 文件阅读加密- FILE_TOKEN_KEY=filetoken# MongoDB 连接参数. 用户名myusername,密码mypassword。- MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin# pg 连接参数- PG_URL=postgresql://username:password@pg:5432/postgres

docker-compose.yml 可以在这里下载☞,https://raw.githubusercontent.com/wbsu2003/synology/main/FastGPT/docker-compose.yml

然后执行下面的命令

# 新建文件夹 fastgpt 和 子目录
mkdir -p /volume1/docker/fastgpt/{pg,mongo,tmp}# 进入 fastgpt 目录
cd /volume1/docker/fastgpt# 将 docker-compose.yml 放入当前目录# 一键启动
docker-compose up -d# 如果修改了 config.sys 文件,需要重启 FastGPT
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/

这篇关于基于FastGPT搭建知识库问答系统的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/941012

相关文章

基于Springboot的校园招聘系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园招聘系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring + SpringBoot + Mybatis+Vue+Maven+Layui+Elementui来实现。MySQL数据库作为系统数据储存平台,实现了基于B/S结构的W

[附源码]秦时明月6.2魔改版_搭建架设教程_附GM工具_安卓苹果

本教程仅限学习使用,禁止商用,一切后果与本人无关,此声明具有法律效应!!!! 教程是本人亲自搭建成功的,绝对是完整可运行的,踩过的坑都给你们填上了 一. 演示视频 秦时明月6.2魔改版_搭建架设教程 二. 环境 联网环境: centos7.6 , 放开所有端口 单机环境: VM虚拟机 centos7.6 源码贡献 https://githubs.xyz/boot?app

Redis(主从复制搭建)

文章目录 1.主从复制示意图2.搭建一主多从1.搭建规划三台机器(一主二从)2.将两台从Redis服务都按照同样的方式配置(可以理解为Redis初始化)1.安装Redis1.yum安装gcc2.查看gcc版本3.将redis6.2.6上传到/opt目录下4.进入/opt目录下然后解压5.进入 redis-6.2.6目录6.编译并安装7.进入 /usr/local/bin 查看是否有redis

MAC XAMPP搭建php开发环境 mysql 中文乱码

查看该表的属性,在“操作”->”表选项”中看见”整理”这个下拉框中显示”latin1_swedish_ci”,发现不对,应该使用unicode码,于是将其改成” utf8_general_ci “。再次向表中插入数据,发现中文还是乱码。 查看“表结构”,发现每个字段后面的“整理”都为”latin1_swedish_ci”,于是将其更改成”utf8_general_ci“,再向表

MAC XAMPP搭建php开发环境,上传图片 move_uploaded_file出现错误 failed to open stream: Permission denied

1、daemon 改为apache 在电脑-设置-用户与群组中,新增Apache群组 与Apache用户。 并将etc-http.conf中的user 和group 改为Apache。 然后,在终端中  $ sudo chown Apache /Applications/XAMPP/xamppfiles/temp  $ sudo chown Apache /Users/hu/Zend/w

数据分析体系是什么?该怎么搭建?

搭建数据分析体系的常见错误 (1)罗列指标,没有重点 很多文章一讲数据分析体系,就铺陈了大量指标。先看哪个,后看哪个,根本没说明。光把几百个指标理解一遍都要半天,业务啥也不用干了,每天就在这瞅数好了。 (2)陷入细节,没有目标 很多同学习惯性列了指标,就开始按时间、渠道、区域、用户等级拆分,拆来拆去,标出一堆涨了跌了。问题是没个具体标准。每天纠结:1%的变化到底是不是问题?百分之几是问题?

MQTT服务搭建及python使用示例

1、MQTT协议 1.1、MQTT介绍         MQTT(Message Queuing Telemetry Transport)是一种轻量级的、基于发布/订阅模式的通信协议,通常用于物联网设备之间的通讯。它具有低带宽、低功耗和开放性等特点,适合在网络带宽有限或者网络连接不稳定的环境下使用。MQTT协议使用TCP/IP协议栈进行通讯,支持多种编程语言和平台,并且能够提供可靠的消息传递机

crmeb知识付费系统正式上线,分屏录制网课用什么软件?教程有啥?

现在很多人为了提升自己知识储备,都会选择线上课程来提升自己,因为线上课程不受时间、地点的限制,大家可以在家就学习,也有很多人想做自己的网络课程,那分屏录制网课用什么软件好?   目前市面上有很多可以录屏软件,都是有很多功能的,录制网课主要是要保证视频没有杂音,qve屏幕录制是很不错的选择,打开QVE录屏软件,在主界面点击【设置】按钮,声音来源选择全部,同时录入系统和麦克风声音。   录

威客网上招标系统(五)

目录 5 详细设计 5.1 系统首页 5.1.1系统首页(网站首页index.jsp) 5.1.2 下沙派威客网首页界面说明 5.2 站内新闻信息 5.2.1站内新闻操作界面 5.2.2系统主操作界面说明 5.3威客在线操作界面 5.3.1 威客在线操作界面 5.3.2威客在线说明 5.4系统后台登录界面 5.4.1系统后台登录界面 5.4.2系统后台登录界面说明 5.

STM32系统架构

以下是STM32系统架构中的各个重要组件和功能: 组件描述Cortex-M内核ARM Cortex-M系列内核,如M0、M0+、M3、M4、M7等Flash存储器存储程序代码和数据SRAM存储程序运行时数据和堆栈外设接口GPIO、SPI、I2C、UART、TIM、ADC、DAC、USB、CAN、Ethernet等时钟和电源管理单元管理时钟源和功耗,包括内部时钟源、PLL等DMA控制器直接内存访问