基于开源大模型Vicuna-13B构建私有制库问答系统

本教程专注在怎么使用已经开源的模型和项目,构建一个可以私有化部署的问答知识库,而且整体效果要有所保障。

主要工作包括:

  1. 选择基础模型,openAI,claude 这些商用的,或者其他的开源的,这次我们选择 Vicuna-13B;
  2. 开源有很多的知识库问答系统,这次我们选择DB-GPT,优点是支持多端的访问;
  3. 根据项目的整体的要求,尤其是基础模型的要求选择适合的硬件设备,可以选用云服务,这次我们选择阿里云的云服务
  4. 根据项目说明部署

img

  1. 该架构主要由五部分组成,依次为知识库、Embedding、向量存储、大模型(如Vicuna-13B)以及生成(Generate)。整体流程是:知识库经过Embedding处理转化为向量形式,然后这些向量存储到数据库中,大模型通过吸收这些向量化的知识,实现推理和总结的能力,最后进行生成。
  2. 该架构分为四个步骤:知识库准备、Embedding、向量存储和利用大模型的能力。这是一个面向数据库领域的GPT,它准备了主流数据库的文档,并对其进行分类。Embedding阶段将文本转换成向量进行存储,存储媒介是向量数据库。Embedding后的知识会存储在向量数据库中,以备后续检索。最后,利用大模型的能力,通过In-Context-Learning(ICL),使大模型实现基于现有知识的推理、总结。
  3. 通过这种架构,可以实现一个基于现有知识库的问答(QA)项目。

LangChain是当前最受欢迎的大型语言模型(LLM)框架,它是一个基于LLM的应用开发框架。为了使应用更强大且独特,仅依赖大模型的API是不足的。LangChain的设计理念强调数据思维,即将大模型与其他元数据连接,以及代理思维,让语言模型能与环境互动。这个简单但符合自然法则的设计理念深深吸引了我们,因此我们选择了LangChain。

简单介绍什么是langchain:langchain是一个大语言模型应用开发框架,像django是web应用框架一样,langchain也是我们后面开发基于大语言模型应用的框架。而且可以方便的在应用中集成其他工具,这些工具能够弥补LLM的缺失的能力。

购买阿里云GPU实例

参考DB-GPT官方选择硬件

GPU型号显存大小性能
RTX409024G可以流畅的进行对话推理,无卡顿
RTX309024G可以流畅进行对话推理,有卡顿感,但好于V100
V10016G可以进行对话推理,有明显卡顿

这次选择在阿里云购买GPU实例,参考如下

img

img

选择型号之后,还需要选择系统、GPU驱动、SSD存储、以及实例释放策略等选项。这里需要注意,云盘的规格不要选择太小,建议不小于200G同时去掉随实例释放的选项,这样后续我们可以只释放实例,模型数据可以保留。如果此实例,你想长期使用,建议给ECS做个快照备份。当然,考虑到价格原因,也可以挂一块NFS来存储数据
注意,这里推荐勾选不随实例释放,因为模型,显卡,环境,部署每一步都是钱堆上来的,指不定你什么时候就又要本地部署了,所以把这块盘存下来是明智的选择

网络配置

img

使用自己喜欢的SSH工具登录服务器,例如xshell

基础环境搭建

安装 git git-lfs ,下载模型需要

g++ docker docker.io,部署项目组件需要

apt-get install git git-lfs g++ docker docker.io -y

模型下载

在准备模型阶段,我们首先要下载模型。 这里我们依赖两个基础模型,分别是vicuna-13B以及sentence-transformer

git clone https://github.com/csunny/DB-GPT.git
git clone --progress https://huggingface.co/Tribbiani/vicuna-13b
git clone https://huggingface.co/sentence-transformers/all-MinilM-L6-v2
cd DB-GPT
mkdir models
cd models
mv ../../vicuna-13b/ ./

大概58G,需要一个小时才能下载完成

安装Mysql实例

直接使用官方仓库提供的命令如下:

docker run --name=mysql -p 3306:3306 -e MYSQL ROOT PASSWORD=aa12345678 -dit mysql:latest

安装python环境

python 环境我们要起是大于3.9,这里我们用3.10来进行安装首先我们需要安装conda环境,我们使用miniconda3

wget https://repo.anaconda. com miniconda/Miniconda3-py310 23.3.1-0-Linux-x86 64.sh
sh Miniconda3-py310 23.3.1-0-Linux-x86 64.sh

安装完成之后,需要生效一下环境变量,并创建虚拟环境和激活虚拟环境

source /root/.bashrc
conda create n dbgpt env python=3.10
conda activate dbgpt env

安装依赖

在项目目录下,执行下面的语句

pip install -r requirements.txt

注意,执行如下命令,配置项目路径

echo "/root/DB-GPT”> /root/miniconda3/env/dbgpt_env/lib/python3.10/site packages/dbgpt.pth

启动服务端和客户端 web

# 服务端启动
export PYTHONPATH=SPYTHONPATH:/root/DB-GPT
python pilot/server/llmserver.py
# 客户端启动
export PYTHONPATH=SPYTHONPATH:/root/DB-GPT/
python pilot/server/webserver.py

设置阿里云安全组

配置阿里云的安全组,这些可以在自己机器访问

img

访问IP:7860,看到什么了

构建知识库

这样我们可以使用文档构建自己的问答知识库
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国金融,如何向科技要答案?

一个科技初创公司,能否凭借科创成果及时获得信贷准入? 一个农民兄弟能否在春播时,获得精准的无抵押贷款;秋收时,通过银行App找到性价比最高的买家? 一家企业,能否通过其生产及交易信息获取线上融…

React diff的原理是什么

一、是什么 跟Vue一致,React通过引入Virtual DOM的概念,极大地避免无效的Dom操作,使我们的页面的构建效率提到了极大的提升 而diff算法就是更高效地通过对比新旧Virtual DOM来找出真正的Dom变化之处 传统diff算法通过循环递归对节点进行依…

WIFI中的频段、信道、信道带宽

一、波长、波速与频率 波长波速/频率 “波速”由“介质”决定。 “频率”由“波源”决定。 “波长”由“介质”(波速V)、“波源”(频率f)共同决定。(λV/f) 波长(wavelength): 指波在一个振动周期内传播的距离。也就…

Flutter自定义系列之折线波动图,心率图,价格走势图

随着前两篇文章的学习,我今天继续给大家演示下简单的自定义之折线波动图,心率图,价格走势图。 这里,我们创建一个自定义的StatefulWidget,用于显示动态的价格线。 我们将使用CustomPaint和CustomPainter来绘制价格线…

英伟达开发板学习系列---国产【Jetson Xavier NX】系统安装及基础配置

1. 前言 最近新买了Jetson Xavier NX, 和之前英伟达原厂的NX的区别在于国产Jetson Xavier NX 是核心板使用的是英伟达的,扩展板是国产的。具体详情如下: 官方NX和国产NX详情区别 2. 设置系统从固态硬盘启动 官方NX出厂是直接将SD卡(64/12…

51单片机“密码锁”代码详解

注:此代码一经过验证,读者不必怀疑其正确性,如果烧录进去没有反应,请自行检查引脚端口配置,以及仔细分析代码实现原理。倘若能静下心来分析代码,一定能受益匪浅。 废话不多说,,直接…

网络系统安全——MS15_034漏洞利用与安全加固

Kali 192.168.124.162 Windows server 2008 192.168.124.169 检查2008服务器的IIS网站是否正常,进入2008服务器,使用ie浏览器访问本机地址 切换到kali,使用命令ping来测试他们的连通性 然后使用使用命令curl测试,测试&#x…

【每日挠头算法题(8)】最后一个单词的长度|重新排列字符串

文章目录 一、最后一个单词的长度思路1:从后往前遍历具体代码如下: 思路2:具体代码如下: 二、重新排列字符串思路具体代码如下: 一、最后一个单词的长度 点我直达~ 思路1:从后往前遍历 从后往前遍历&…

动态规划I (45、55、62、63)

按顺序刷确实效率太低了,今天开始要按顺序的同时也按标题来了,全面加油!这种应该以后会更多直接总结题解了,自我学习用,全靠大佬,贴贴!!含45、55、62、63 CP55 跳跃游戏 题目描述&…

优雅草蜻蜓T系统·专业版服务端以及后台部署说明-完整步骤-语音会议室支持多人语音,屏幕分享,导航配置,会议管理,会员管理

蜻蜓T系统专业版服务端以及后台部署 1,解压文件和基础环境配置 将源码用git工具克隆到/www/wwwroot git clone git地址 或者是由优雅草发送的商业源码文件包直接进行解压 ​ 编辑切换为居中 添加图片注释,不超过 140 字(可选)…

使用pycharm入门python的一些注意点

今儿在帮别人跑一段python代码,实际上我对python并不熟悉,只能边摸索边尝试。选择了pycharm这个工具。 一.怎么安装python使用的库文件 能用来安装python的库文件的,有很多种办法,这里只介绍pip和pip3。因为pip和pip3的优势是能…

JavaEE(系列21) -- 传输层协议UDP 和 TCP

目录 1. 应用层和传输层的联系 2. UDP协议 2.1 UDP简介 2.2 UDP格式 2.2.1 目的端口和源端口 2.2.2 报文长度 2.2.3 校验和 3. TCP协议 3.1 TCP简介 3.2 TCP格式 3.2.1 数据偏移和选项(option) 3.2.2 保留项 3.2.3 6位控制位 3.2.4 32位序号和32位确认序号…

R语言 tidyverse系列学习笔记(系列4)PlantGrowth - percentage table

本篇学习数据分析, Excel 表格制作 Task: 创建一个 行 百分比 表格 row percentage table 先看一下 PlantGrowth 数据集 library(dplyr)data("PlantGrowth") view(PlantGrowth)给数据集新加一列 weight_cat ,并用 case_when 自定…

深度学习pytorch实战五:基于ResNet34迁移学习的方法图像分类篇自建花数据集图像分类(5类)超详细代码

1.数据集简介 2.模型相关知识 3.split_data.py——训练集与测试集划分 4.model.py——定义ResNet34网络模型 5.train.py——加载数据集并训练,训练集计算损失值loss,测试集计算accuracy,保存训练好的网络参数 6.predict.py——利用训练好的网…

(三)Kafka 生产者

文章目录 1. Kafka 发送消息的主要步骤2.创建 Kafka 生产者3.发送消息到 Kafka(1)发送并忘记(2)同步发送(3)异步发送 4.生产者配置(1)client.id(2)ack&#x…

Python基础(2)——Python解释器

Python基础(2)——Python解释器 文章目录 Python基础(2)——Python解释器目标一. 解释器的作用二. 下载Python解释器三. 安装Python解释器总结 目标 解释器的作用下载Python解释器安装Python解释器 一. 解释器的作用 Python解释…

对于ChatGPT,马化腾、马斯克等科技大佬竟然这么说!

ChatGPT一夜爆火之后,国内几乎是各大互联网公司都在摩拳擦掌,跃跃欲试,从百度的文心一言,到阿里的通义千问,还有360的智脑,讯飞的星火,语言大模型如雨后春笋一般涌出,犹如2014年新能…

Android 逆向安全行业前景如何?

前言 Android 逆向是指对已经发布的 Android 应用进行分析和研究,通过逆向工程,将 Android 应用中的底层实现原理、业务逻辑、源代码以及恶意行为等等信息进行破解和掌握。逆向工程可以让研究者深入了解 Android 应用的实现细节,从而识别和修…

麒麟V10服务器 安装samba 软件,并且实现远程连接(压缩包形式)

目录 1 安装包2 实现3 如何查看安装的sambd 的版本4 使用 1 安装包 百度网盘 链接: https://pan.baidu.com/s/1l6HDAGE4_Itj-cp7XtpUNg 提取码: 100w 复制这段内容后打开百度网盘手机App,操作更方便哦2 实现 以下是在Linux系统中使用压缩包方式安装Samba服务的步…

走向实用的AI编解码

基于AI的端到端数据压缩方法受到越来越多的关注,研究对象已经包括图像、视频、点云、文本、语音和基因组等,其中AI图像压缩的研究最为活跃。图像编解码的研究和应用历史悠久,AI方法要达到实用,需要解决诸多问题才能取得相比于传统…