基于OneAPI+ChatGLM3-6B+FastGPT搭建LLM大语言模型知识库问答系统

搭建大语言模型知识库问答系统

    • 部署OneAPI
    • 部署一个LLM模型
    • 部署嵌入模型
    • 部署FastGPT
    • 新建FastGPT对话应用
    • 新建 FastGPT 知识库应用

部署OneAPI

拉取镜像

docker pull justsong/one-api

创建挂载目录

mkdir -p /usr/local/docker/oneapi

启动容器

docker run --name one-api -d --restart always -p 3001:3000 -e TZ=Asia/Shanghai -v /usr/local/docker/oneapi:/data justsong/one-api

访问IP:3001
在这里插入图片描述
注意:

用户默认root 密码默认123456,首次登录后务必修改密码

在这里插入图片描述
创建接口令牌API Key备用

根据需要配置,这里点击“永不过期”+“设为无限额度”

在这里插入图片描述

项目地址: One API

部署一个LLM模型

下载ChatGLM3项目

git clone https://github.com/THUDM/ChatGLM3

创建conda环境

cd /work/ChatGLM3conda create -n ChatGLM3 python=3.10conda activate ChatGLM3

编辑ChatGLM3/openai_api_demo/api_server.py文件,指定LLM模型、嵌入模型位置

相关模型可以从huggingface下载

# set LLM path
MODEL_PATH = os.environ.get('MODEL_PATH', '/root/work/models/chatglm3-6b')
TOKENIZER_PATH = os.environ.get("TOKENIZER_PATH", MODEL_PATH)# set Embedding Model path
EMBEDDING_PATH = os.environ.get('EMBEDDING_PATH', '/root/work/models/bge-large-zh')

启动项目

(ChatGLM3) root@master:~/work/ChatGLM3/openai_api_demo# python api_server.py 
Setting eos_token is not supported, use the default one.
Setting pad_token is not supported, use the default one.
Setting unk_token is not supported, use the default one.
Loading checkpoint shards: 100%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [00:04<00:00,  1.07it/s]
INFO:     Started server process [517231]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

在OneAPI中创建一个渠道,并使用事先创建的API Key
在这里插入图片描述
注意:

当完成下面部署FastGPT操作后,可以测试对接是否成功。前提:这里配置的模型名称ChatGLM3-6B需要与在部署FastGPT中的fastgpt/config.json文件中配置模型名称一致。具体参考下面新建FastGPT对话应用操作。

在这里插入图片描述

部署嵌入模型

这里使用m3e嵌入模型

docker pull registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest

在运行容器的时候调用GPU,直接使用--gpus all参数指定即可

 docker run -d -p 6008:6008 --name m3e --gpus all registry.cn-hangzhou.aliyuncs.com/fastgpt_docker/m3e-large-api:latest

接入One API,添加一个渠道,根据官方参数说明如下:

设置安全凭证默认值:sk-aaabbbcccdddeeefffggghhhiiijjjkkk也可以通过环境变量引入:sk-key

注意:渠道对应鉴权密匙一定是sk-aaabbbcccdddeeefffggghhhiiijjjkkk

在这里插入图片描述

测试服务

这里将出现404异常,原因:由于不是对话生成模型(/v1/chat/completions)所以会404

在这里插入图片描述
进一步验证,查看容器内部运行日志信息

root@master:~/work/# docker logs -f friendly_feistel
No sentence-transformers model found with name ./moka-ai_m3e-large. Creating a new one with MEAN pooling.
INFO:     Started server process [1]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://0.0.0.0:6008 (Press CTRL+C to quit)
本次加载模型的设备为GPU:  Tesla V100S-PCIE-32GB
INFO:     172.17.0.1:59468 - "POST /v1/chat/completions HTTP/1.1" 404 Not Found

到这里,嵌入模型准备完毕,在接下来接入FastGPT即可。

部署FastGPT

具体部署可参考官方文档:FastGPT

创建挂载目录

mkdir -p /usr/local/docker/fastgpt

下载文件

curl -O https://raw.githubusercontent.com/labring/FastGPT/main/files/deploy/fastgpt/docker-compose.ymlcurl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json

在项目fastgpt目录中,创建mongo密钥

openssl rand -base64 756 > ./mongodb.key
chmod 600 ./mongodb.key
chown 999:root ./mongodb.key
root@master:/usr/local/docker/fastgpt# ls
config.json  docker-compose.yml mongodb.key

执行命令拉取容器镜像

docker-compose pull

启动容器

 docker-compose up -d

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

# 查看 mongo 容器是否正常运行
docker ps# 进入容器
docker exec -it mongo bash# 连接数据库
mongo -u myname -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()

访问IP:3000
在这里插入图片描述
注意:

用户默认 root密码默认 1234密码设置修改:docker-compose.yml 文件中的 DEFAULT_ROOT_PSW
    environment:# root 密码,用户名为: root- DEFAULT_ROOT_PSW=1234

在这里插入图片描述
配置docker-compose.yml文件,使用 OneAPI接口、令牌

注意:这里地址指向OneAPI地址,令牌使用上面创建的令牌。

    environment:# root 密码,用户名为: root- DEFAULT_ROOT_PSW=1234# 中转地址,如果是用官方号,不需要管。务必加 /v1- OPENAI_BASE_URL=http://192.168.5.210:3001/v1- CHAT_API_KEY=sk-CwH3lQk0CCiUdalf3d41A405C9Ca4359991e213d0bC5B13b

重启FastGPT容器

docker-compose up -d

新建FastGPT对话应用

接下来配置FastGPT,修改fastgpt/config.json文件,复制一份gpt-3.5-turbo配置,修改为ChatGLM
在这里插入图片描述

注意:这里配置的model值ChatGLM3-6B需要与渠道中配置的模型名称一致

重启FastGP 容器

docker restart fastgpt

访问IP:3000/,新建FastGPT应用

取一个名称,从模板选择,这里选择“简单的对话”,点击“确认创建”按钮。

在这里插入图片描述
选择上面配置的ChatGLM模型,然后点击“保存并预览”
在这里插入图片描述
对话测试,输入问题,点击图标发送
在这里插入图片描述

新建 FastGPT 知识库应用

知识库需要使用嵌入模型,所以需要提前进行配置。

修改fastgpt/config.json配置文件,在vectorModels 中加入M3E模型:
在这里插入图片描述

注意:这里配置的model值m3e-large需要与渠道中配置的模型名称一致

重启FastGPT容器

docker restart fastgpt

知识库菜单栏,创建一个知识库,同时取一个名称,选择索引模型
在这里插入图片描述
demo知识库导入数据
在这里插入图片描述
根据具体需求,进行配置数据处理参数
在这里插入图片描述
当上传数据训练完毕就绪后即可使用
在这里插入图片描述

新建知识库,取个名字,从模板选择知识库+对话引导
在这里插入图片描述
配置AI模型与关联知识库后,保存并预览,然后即可开始进行知识库的对话测试
在这里插入图片描述
进行知识库问答对话时,出现一个异常
在这里插入图片描述
是因为知识库配置中,默认且只有一个文件处理模型,固定为gpt-3.5-turbo-1106,且目前没有配置该模型渠道
在这里插入图片描述

解决方案:

1.更新渠道,添加模型名称gpt-3.5-turbo-1106,意味着使用该模型的就会使用Base URL定义的模型

2.新建一个渠道,指定使用模型名称gpt-3.5-turbo-1106
在这里插入图片描述

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

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

相关文章

03 React 基础样式控制

在React中&#xff0c;有多种方式可以管理组件的样式&#xff0c;每种方式都有其优劣势。以下是一些常见的样式管理方法以及它们之间的比较&#xff1a; 内联样式&#xff08;Inline Styles&#xff09;&#xff1a; function MyComponent() {const style {color: red,backg…

粘包/半包及解决方案

一、粘包/半包介绍 1&#xff1a;粘包 粘包&#xff08;Packet Concatenation&#xff09;通常发生在基于流式传输协议&#xff08;如 TCP&#xff09;的通信中&#xff0c;因为 TCP 是面向流的传输协议&#xff0c;它不保证数据包的边界&#xff0c;而是将数据视为连续的字节…

C#面:C# 中的预定义特性有哪些

常见的 C# 预定义特性&#xff1a; [Obsolete]&#xff1a;用于标记已过时的代码或方法。当使用被标记为[Obsolete]的代码时&#xff0c;编译器会发出警告或错误。 [Serializable]&#xff1a;用于标记类&#xff0c;表示该类的对象可以被序列化为字节流&#xff0c;以便在网…

机器学习:处理jira工单的分类问题

如何根据jira工单的category、reporter自动找到处理它的组呢?这是一个利用机器学习中knn算法的小实践. 目录 Knn算法 数据 示例 分割数据 选择Neighbors knn的优缺点 机器学习是一种技术,它的目的是给机器学习能力,让它们可以根据数据自己做决定,所以对于训练…

密码学及其应用1 —— 密码学概述

1 密码学的基本概念 1.1 网络安全的定义 网络安全是网络领域的一个专业领域&#xff0c;它涵盖了在基础计算机网络基础设施中所采取的措施、网络管理员为保护网络及网络可访问资源免受未授权访问而采纳的政策&#xff0c;以及对其有效性&#xff08;或无效性&#xff09;的持续…

2024年2月线上助听器综合电商(京东天猫淘宝)热销排行榜

鲸参谋监测的综合电商平台&#xff08;京东天猫淘宝&#xff09;2月份助听器品牌销量销额排行榜已揭晓&#xff01; 根据鲸参谋电商大数据显示&#xff0c;2月助听器在综合电商平台销量约为19万&#xff0c;环比上个月下滑了2%&#xff0c;同比去年下滑了25%&#xff1b;销售额…

基于nodejs+vue发艺美发店管理系统python-flask-django-php

系统根据现有的管理模块进行开发和扩展&#xff0c;采用面向对象的开发的思想和结构化的开发方法对发艺美发店管理的现状进行系统调查。采用结构化的分析设计&#xff0c;该方法要求结合一定的图表&#xff0c;在模块化的基础上进行系统的开发工作。在设计中采用“自下而上”的…

javaSwing愤怒的小鸟游戏

一、简介 游戏名称是“愤怒的小鸟”&#xff0c;英文称为“AngryBird”。 “愤怒的小鸟”是著名游戏公司Rovio偶然间开发出来的益智游戏&#xff0c;从2009年12月上市到iOS。&#xff0c;讲述了鸟类和猪因为猪偷鸟蛋反生的一系列故事。游戏的类型版本是横向版本的水平视角&…

6、运行时数据区

Java虚拟机在运行Java程序过程中管理的内存区域&#xff0c;称之为运行时数据区。《Java虚拟机规范》中规定了每一部分的作用。 3.1 程序计数器 程序计数器&#xff08;Program Counter Register&#xff09;也叫PC寄存器&#xff0c;每个线程会通过程序计数器记录当前要执行的…

opencv各个模块介绍(1)

Core 模块&#xff1a;核心模块&#xff0c;提供了基本的数据结构和功能。 常用的核心函数&#xff1a; cv::Mat&#xff1a;表示多维数组的数据结构&#xff0c;是OpenCV中最常用的类之一&#xff0c;用于存储图像数据和进行矩阵运算。 cv::Scalar&#xff1a;用于表示多通道…

网络分层协议和应用模型

分层模型 五层网络模型 MAC地址跟IP地址的区别&#xff1a;MAC地址是唯一的&#xff0c;相当于每个人的指纹&#xff0c;出生时就是唯一的&#xff1b;IP地址就相当于是你当前的住址&#xff0c;是会发生变化的&#xff0c;但是是动态唯一的。 应用层协议 URL URL&#xff…

node.js 常用命令71条详解

一、Node.js 常用的命令包括&#xff1a; node 某个js文件&#xff1a;调用 Node.js 程序&#xff0c;运行指定的 JavaScript 文件。例如&#xff0c;如果你有一个名为 app.js 的文件&#xff0c;你可以使用 node app.js 来运行它。npm install&#xff1a;用于安装 Node.js 项…

web渗透测试漏洞流程:红队目标信息收集之资产搜索引擎收集

web渗透测试漏洞流程 渗透测试信息收集---域名信息收集1.域名信息的科普1.1 域名的概念1.2 后缀分类1.3 多重域名的关系1.4 域名收集的作用1.5 DNS解析原理1.6 域名解析记录2. 域名信息的收集的方法2.1 基础方法-搜索引擎语法2.1.1 Google搜索引擎2.1.1.1 Google语法的基本使用…

基于Colab训练的yolov4-tiny自定义数据集(可用于OpenCV For Unity)

参考资料文档和视频。 1.打开文档,点击【文件】【在云端硬盘中保存一份副本】,即将文档复制到自己云端硬盘。 2.打开该文件,按文中提示进行。 【代码执行程序】【更改运行时类型】修改运行时为GPU(免费的GPU不好用,收费的好用,某宝上几十元就可用一个月) 步骤1) !git…

如何调用occtproxy放入自己的wpf文件

1.创建一个wpf程序 2.添加项目occtproxy.vcxproj 3.把该项目配置类型设为dll 4.添加引用 5.报错显示&#xff0c;这是因为还没有生成dll 6.把occtproxy设为启动项目运行&#xff0c;设定输出目录在该目录下&#xff0c;生成dll 7.再运行&#xff0c;即可

一文整合工厂模式、模板模式、策略模式

为什么使用设计模式 今天终于有时间系统的整理一下这几个设计模式了&#xff0c; 这几个真是最常用的&#xff0c;用好了它们&#xff0c;你就在也不用一大堆的if else 了。能更好的处理大量的代码冗余问题。 在我们的实际开发中&#xff0c;肯定会有这样的场景&#xff1a;我…

2024年云仓酒庄新动态:铸就新篇章

原标题&#xff1a;刘总出席成都糖酒会&#xff1a;信任铸就云仓酒庄新篇章&#xff0c;共襄盛举展未来近日&#xff0c;备受瞩目的成都糖酒会盛大开幕&#xff0c;吸引了来自全国各地的业界精英和代表。在这场盛大的行业盛会上&#xff0c;云仓酒庄的刘总亲临现场。 现场&…

以XX大学校园为例的智慧能源管理系统建设方案【能源物联网+智能微电网数字校园、节能校园、低碳校园】

建设背景 贯彻落实《中共中央 国务院关于完整准确全面贯彻新发展理念做好碳达峰碳中和工作的意见》和《国务院关于印发2030年前碳达峰行动方案的通知》要求&#xff0c;把绿色低碳发展纳入国民教育体系。 2021年3月26日为推动信息技术与教育教学深度融合&#xff0c;教育部印…

使用SQLAlchemy库进行数据库操作的基本流程[简单示例]

SQLAlchemy ORM&#xff08;Object-Relational Mapping&#xff09;是 SQLAlchemy 库的一部分&#xff0c;它允许开发者通过对象的方式来操作数据库&#xff0c;而不需要直接编写 SQL 语句。ORM 将数据库中的表映射为 Python 类&#xff0c;表中的每一行数据则映射为相应类的对…

solr functionquery函数查询自定义函数实现

Solr是一个开源的搜索平台&#xff0c;基于Apache Lucene库构建&#xff0c;主要用于提供全文搜索的功能。它被设计为一个高度可靠、可扩展的搜索应用服务器。以下是Solr的一些主要使用场景&#xff1a; 全文搜索&#xff1a;Solr最核心的功能是提供全文搜索&#xff0c;它可以…