使用开源大语言模型私有化部署打造数据库专家系统
原创最近在github上发现一个很好的项目: https://github.com/csunny/DB-GPT
这个项目利用开源大语言模型如Vicuna-13b打造了一个数据库专家系统,上线1个半月已经获得3400星。
1 什么是DB-GPT
一个开源的以数据库为基础的GPT实验项目,使用本地化的GPT大模型与您的数据和环境进行交互,无数据泄露风险,让大模型的能力绝对私有、安全、可控。
2 DB-GPT能力
当前具体以下能力:
-
SQL 语言能力
- SQL生成
- SQL诊断
-
私域问答与数据处理
- 数据库知识问答
- 数据处理
-
插件模型
-
支持自定义插件执行任务,原生支持Auto-GPT插件。如:
- SQL自动执行,获取查询结果
- 自动爬取学习知识
-
支持自定义插件执行任务,原生支持Auto-GPT插件。如:
-
知识库统一向量存储/索引
- 非结构化数据支持包括PDF、MarkDown、CSV、WebURL
-
多模型支持
- 支持多种大语言模型, 当前已支持Vicuna(7b,13b), ChatGLM-6b(int4, int8)
- TODO: codet5p, codegen2
3 架构
DB-GPT的架构如下图所示:
下面对每个模块也做一些简要的介绍:
3.1 知识库能力
知识库作为当前用户需求最大的场景,原生支持知识库的构建与处理。同时在本项目当中,也提供了多种知识库的管理策略。 如:
- 默认内置知识库
- 自定义新增知识库
- 通过插件能力自抓取构建知识库等多种使用场景。
用户只需要整理好知识文档,即可用现有的能力构建大模型所需要的知识库能力。
3.2 大模型管理能力
在底层大模型接入中,设计了开放的接口,支持对接多种大模型。同时对于接入模型的效果,有非常严格的把控与评审机制。对大模型能力上与ChatGPT对比,在准确率上需要满足85%以上的能力对齐。项目用更高的标准筛选模型,是期望在用户使用过程中,可以省去前面繁琐的测试评估环节。
3.3 统一的数据向量化存储与索引
为了方便对知识向量化之后的管理,内置了多种向量存储引擎,从基于内存的Chroma到分布式的Milvus, 可以根据自己的场景需求,选择不同的存储引擎,整个知识向量存储是AI能力增强的基石,向量作为人与大语言模型交互的中间语言,在本项目中的作用非常重要。
3.4 连接模块
为了能够更方便的与用户的私有环境进行交互,项目设计了连接模块,连接模块可以支持连接到数据库、Excel、知识库等等多种环境当中,实现信息与数据交互。
3.5 Agent与插件
Agent与插件能力是大模型能否自动化的核心,在本的项目中,原生支持插件模式,大模型可以自动化完成目标。 同时为了充分发挥社区的优势,本项目中所用的插件原生支持Auto-GPT插件生态,即Auto-GPT的插件可以直接在我们的项目中运行。
3.6 Prompt自动生成与优化
Prompt是与大模型交互过程中非常重要的部分,一定程度上Prompt决定了大模型生成答案的质量与准确性,在本的项目中,我们会根据用户输入与使用场景,自动优化对应的Prompt,让用户使用大语言模型变得更简单、更高效。
3.7 多端产品界面
TODO: 在终端展示上,我们将提供多端产品界面。包括PC、手机、命令行、Slack等多种模式。
3.8 依赖的相关开源组件
- FastChat 提供 chat 服务
- vicuna-13b 作为基础模型
- langchain 工具链
- Auto-GPT 通用的插件模版
- Hugging Face 大模型管理
- Chroma 向量存储
- Milvus 分布式向量存储
- ChatGLM 基础模型
- llama-index 基于现有知识库进行 In-Context Learning 来对其进行数据库相关知识的增强。
4 安装部署
4.1 硬件要求
项目在效果上具备ChatGPT 85%以上的能力,因此对硬件有一定的要求。 但总体来说,在消费级的显卡上即可完成项目的部署使用,具体部署的硬件说明如下:
GPU型号 |
显存大小 |
性能 |
---|---|---|
RTX4090 |
24G |
可以流畅的进行对话推理,无卡顿 |
RTX3090 |
24G |
可以流畅进行对话推理,有卡顿感,但好于V100 |
V100 |
16G |
可以进行对话推理,有明显卡顿 |
4.2 购买云服务器
要部署这个项目,首先要购买GPU资源。目前腾讯云有个GPU 云服务器 · 限时秒杀活动:
https://cloud.tencent.com/act/pro/gpu-study
选择下面这个型号,有32G显存,足够部署使用(吐槽下,还是很贵,相对于传统CPU型服务器):
4.3 安装依赖包
yum -y install git
yum install git-lfs
yum install g++
yum install docker
4.4 下载模型
git clone https://github.com/csunny/DB-GPT.git
git clone https://huggingface.co/Tribbiani/vicuna-13b
git clone https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2
模型文件需要防止到代码路径下:
cd DB-GPT
mkdir models
cp all-MiniLM-L6-v2 models/
cp vicuna-13b models/
4.5 启动MySQL
docker run --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=aa12345678 -dit mysql:latest
4.6 安装环境和依赖
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