基于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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/315027.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【kettle003】kettle访问SQL Server数据库并处理数据至execl文件

一直以来想写下基于kettle的系列文章,作为较火的数据ETL工具,也是日常项目开发中常用的一款工具,最近刚好挤时间梳理、总结下这块儿的知识体系。 熟悉、梳理、总结下Microsoft SQL Server 2022关系数据库相关知识体系 kettle访问SQL Server数…

【C++ | 复合类型】结构体、共用体、枚举、引用

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 ⏰发布时间⏰: 本文未经允许…

图形化编程要怎么做

0. 简介 Scratch其实应该算得上最早做图形化编程的工程了。Scratch 是麻省理工学院的“终身幼儿园团队”在 2007 年 [5]发布的一种图形化编程工具,主要面对全球青少年开放,是图形化编程工具当中最广为人知的一种,所有人都可以在软件中创作自…

【python技术】使用akshare、pandas、mplfinance绘制红绿色K线图简单示例

python中的mplfinance库是基于matplotlib库开发的一个专门用于绘制股票数据的图表的第三方库,它提供了一系列函数和类,用于绘制各种类型的股票图表,包括K线图、成交量图和技术指标图等。 这里简单写个示例,我用的mac系统,字体采用STHeiti。…

docker部署的nacos2.2x开启鉴权功能

注意在2.2.0版本之后如果不开启鉴权,那么默认不需要登录就可以访问 所以我们需要手动开启鉴权,nacos启动好以后来到容器内部修改 docker exec -it nacos /bin/shvim conf/application.properties在第34行下面添加 nacos.core.auth.enabledtrue nacos.cor…

pytest-asyncio:协程异步测试案例

简介:pytest-asyncio是一个pytest插件。它便于测试使用异步库的代码。具体来说,pytest-asyncio提供了对作为测试函数的协同程序的支持。这允许用户在测试中等待代码。 历史攻略: asyncio并发访问websocket Python:协程 - 快速创…

数据结构——二叉树的顺序存储(堆)(C++实现)

数据结构——二叉树的顺序存储(堆)(C实现) 二叉树可以顺序存储的前提堆的定义堆的分类大根堆小根堆 整体结构把握两种调整算法向上调整算法递归版本 非递归版本向下调整算法非递归版本 向上调整算法和向下调整算法的比较 我们接着…

5、Flink事件时间之Watermark详解

1)生成 Watermark 1.Watermark 策略简介 为了使用事件时间语义,Flink 应用程序需要知道事件时间戳对应的字段,即数据流中的每个元素都需要拥有可分配的事件时间戳。 通过使用 TimestampAssigner API 从元素中的某个字段去访问/提取时间戳。…

STM32之串口中断接收丢失数据

五六年没搞STM32了,这个项目一切都挺顺利,万万没想到被串口接收中断恶心到了。遇到的问题很奇怪 HAL_UART_Receive_IT(&huart1, &rx_buffer[rx_index], LCD_UART_LEN); 这个代码中 LCD_UART_LEN1的时候,接收过来的数据,数…

CentOS 9 (stream) 安装 nginx

1.我们直接使用安装命令 dnf install nginx 2.安装完成后启动nginx服务 # 启动 systemctl start nginx # 设置开机自启动 systemctl enable nginx# 重启 systemctl restart nginx# 查看状态 systemctl status nginx# 停止服务 systemctl stop nginx 3.查看版本确认安装成功…

Taro引入echarts【兼容多端小程序(飞书/微信/支付宝小程序)】

近期接到公司新需求,开发飞书小程序,并且原型中含有大量的图表,本想使用飞书内置图表组件 —— chart-space,但官方表示已经停止维护了,无奈之下,只能另寻他路,于是乎,图表之王&…

Apollo 7周年大会:百度智能驾驶的展望与未来

本心、输入输出、结果 文章目录 Apollo 7周年大会:百度智能驾驶的展望与未来前言百度集团副总裁、智能驾驶事业群组总裁王云鹏发言 直播回放大会相关内容先了解 Apollo开放平台 9.0架构图 发布产品Apollo 定义自己对于智能化的认知百度集团副总裁 王云鹏…

Vue入门到关门之Vue介绍与使用

一、vue框架介绍 1、什么是Vue? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与…

1、Flink DataStreamAPI 概述(上)

一、DataStream API 1、概述 1)Flink程序剖析 1.Flink程序组成 a)Flink程序基本组成 获取一个执行环境(execution environment);加载/创建初始数据;指定数据相关的转换;指定计算结果的存储…

图像处理的魔法师:Pillow 库探秘

文章目录 图像处理的魔法师:Pillow 库探秘第一部分:背景介绍第二部分:库是什么?第三部分:如何安装这个库?第四部分:库函数使用方法第五部分:场景应用第六部分:常见Bug及解…

字符串类型漏洞之updatexml函数盲注

UPDATEXML 是 MySQL 数据库中的一个函数,它用于对 XML 文档数据进行修改和查询。然而,当它被不当地使用或与恶意输入结合时,它可能成为 SQL 注入攻击的一部分,从而暴露敏感信息或导致其他安全漏洞。 在 SQL 注入攻击中&#xff0…

Prompt Engineering,提示工程

什么是提示工程? 提示工程也叫【指令工程】。 Prompt发送给大模型的指令。比如[讲个笑话]、[用Python编个贪吃蛇游戏]、[给男/女朋友写情书]等看起来简单,但上手简单精通难 [Propmpt]是AGI时代的[编程语言][Propmpt]是AGI时代的[软件工程][提示工程]是…

【Unity动画系统】详解Root Motion动画在Unity中的应用(一)

Root Motion动画与普通动画的区别 普通动画:动画文件里记录的是物体的绝对坐标和方向,在播放动画时,Unity会根据Animation中记录的值,直接修改游戏对象的坐标和方向,每一帧的坐标和方向都是通过插值计算得出来的&…

网工学习云计算HCIE感受如何?

作为一名网工,我经常会在各种网络论坛里查询搜索一些网络技术资料,以及跟论坛里的网友交流讨论平时在工作、学习中遇到的问题、故障,因此也经常能在论坛的首页看到誉天的宣传信息。机缘巧合之下关注了誉天的B站号,自从关注了誉天的…

李沐64_注意力机制——自学笔记

注意力机制 1.卷积、全连接和池化层都只考虑不随意线索 2.注意力机制则显示的考虑随意线索 (1)随意线索倍称之为查询(query) (2)每个输入是一个值value,和不随意线索key的对 (3)通过注意力池…