首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用开源大语言模型私有化部署打造数据库专家系统

使用开源大语言模型私有化部署打造数据库专家系统

原创
作者头像
成江东
修改2023-06-05 19:02:49
3.2K0
修改2023-06-05 19:02:49
举报

最近在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自动执行,获取查询结果
      • 自动爬取学习知识
  • 知识库统一向量存储/索引
    • 非结构化数据支持包括PDF、MarkDown、CSV、WebURL
  • 多模型支持
    • 支持多种大语言模型, 当前已支持Vicuna(7b,13b), ChatGLM-6b(int4, int8)
    • TODO: codet5p, codegen2

3 架构

DB-GPT的架构如下图所示:

下面对每个模块也做一些简要的介绍:

3.1 知识库能力

知识库作为当前用户需求最大的场景,原生支持知识库的构建与处理。同时在本项目当中,也提供了多种知识库的管理策略。 如:

  1. 默认内置知识库
  2. 自定义新增知识库
  3. 通过插件能力自抓取构建知识库等多种使用场景。

用户只需要整理好知识文档,即可用现有的能力构建大模型所需要的知识库能力。

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 依赖的相关开源组件

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
conda activate dbgpt_env
pip install -r requirements.txt

4.7 启动服务端

nohup python pilot/server/llmserver.py > server.log 2>&1 &

4.8 启动客户端

nohup python pilot/server/webserver.py > logs/client.log 2>&1 &

4.9 访问地址 http://ip:7860/

界面如下图所示:

5 能力测试

5.1 通用对话测试

常识:

逻辑:

对比GPT3.5,差距明显:

对比GPT4,差距更大:

5.2 数据库知识测试

对比GPT3.5,差距明显:

5.3 生成SQL并与DB交互能力测试

如上图所示,选择库名后,输入自然语言的查询需求,就能生成对应的SQL并执行返回结果!

不过返回结果的速度很慢,有时候甚至超过1分钟。

下面测试下组合查询,发现它进行了表关联查询,其实不需要,而且关联查询里面引用了不存在的字段,比较奇怪。

5.4 知识库能力测试

https://blog.51cto.com/imysql/3250683 [MySQL FAQ]系列 — 线上环境到底要不要开启query cache

我们把老叶这篇关于query cache文章转为PDF上传:

生成了向量文件/data/download/DB-GPT/pilot/data/.vectordb

提文档里面的相关问题,看看回答是否能使用文档里面的内容:

整体效果还行。

6 总结

这个开源项目,功能全面,集成了开源的大模型、私人知识库能力、数据库SQL生成能力、与DB的交互查询能力,如果这些能力都能做到90分,那这个项目非常值得在生产环境中使用,因为它解决了代码泄露的安全问题。

但它有几个问题: 1. 速度比较慢,尤其在生成SQL与DB交互的时候,有时要等1分钟以上。 2. 推理能力较弱,达不到3.5的水平。 3. 因为2导致有时生成的SQL不是用户需要的。

但方向是对的,未来大模型在公司生产环境某个领域落地,应该就是这种方式。

期待开源的大模型早日追上3.5的能力!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 什么是DB-GPT
  • 2 DB-GPT能力
  • 3 架构
    • 3.1 知识库能力
      • 3.2 大模型管理能力
        • 3.3 统一的数据向量化存储与索引
          • 3.4 连接模块
            • 3.5 Agent与插件
              • 3.7 多端产品界面
                • 3.8 依赖的相关开源组件
                • 4 安装部署
                  • 4.1 硬件要求
                    • 4.2 购买云服务器
                      • 4.3 安装依赖包
                        • 4.4 下载模型
                          • 4.5 启动MySQL
                            • 4.6 安装环境和依赖
                              • 4.7 启动服务端
                                • 4.8 启动客户端
                                  • 4.9 访问地址 http://ip:7860/
                                  • 5 能力测试
                                    • 5.1 通用对话测试
                                      • 5.2 数据库知识测试
                                        • 5.3 生成SQL并与DB交互能力测试
                                          • 5.4 知识库能力测试
                                          • 6 总结
                                          相关产品与服务
                                          云数据库 MySQL
                                          腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                                          领券
                                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档