AI大模型探索之路-实战篇4:DB-GPT数据应用开发框架调研实践

目录

  • 前言
  • 一、DB-GPT总体概述
  • 二、DB-GPT关键特性
    • 1、私域问答&数据处理&RAG
    • 2、多数据源&GBI
    • 3、多模型管理
    • 4、自动化微调
    • 5、Data-Driven Multi-Agents&Plugins
    • 6、隐私安全
  • 三、服务器资源准备
    • 1、创建实例
    • 2、打开jupyterLab
  • 四、DB-GPT启动
    • 1、激活 conda 环境
    • 2、切换到 DB-GPT 目录
    • 3、导入 SQLite 样例数据
  • 五、DB-GPT运行
    • 1、使用命令行工具启动
    • 2、访问 DB-GPT 页面
  • 六、DB-GPT数据对话
    • 1、安装数据库
    • 2、添加数据源
    • 3、绑定数据库
    • 4、对话体验
      • 1)选择数据对话
      • 2)开始数据对话
      • 3)错误处理
      • 4)数据对话1
      • 5)数据对话2
  • 总结


前言

在当今的人工智能时代,大模型技术的迅猛发展为各行各业带来了前所未有的变革。这些大模型,以其强大的语言理解和生成能力,正在逐步成为智能化应用的核心。然而,如何高效地利用这些大模型,构建出满足各种需求的应用,仍然是一个具有挑战性的问题。DB-GPT,作为一个开源的AI原生数据应用开发框架,应运而生,旨在简化大模型应用的开发过程,让构建智能化应用变得触手可及。本文将深入介绍DB-GPT的核心功能、关键特性,并通过实战操作,展示如何利用DB-GPT进行数据应用开发。

一、DB-GPT总体概述

在这里插入图片描述
DB-GPT是一个开源的AI原生数据应用开发框架。目的是构建大模型领域的基础设施,通过开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单,更方便。
在这里插入图片描述

核心能力主要有以下几个部分:
RAG(Retrieval Augmented Generation),RAG是当下落地实践最多,也是最迫切的领域,DB-GPT目前已经实现了一套基于RAG的框架,用户可以基于DB-GPT的RAG能力构建知识类应用。

  • GBI:生成式BI是DB-GPT项目的核心能力之一,为构建企业报表分析、业务洞察提供基础的数智化技术保障。
  • 微调框架: 模型微调是任何一个企业在垂直、细分领域落地不可或缺的能力,DB-GPT提供了完整的微调框架,实现与DB-GPT项目的无缝打通,在最近的微调中,基于spider的准确率已经做到了82.5%
  • 数据驱动的Multi-Agents框架: DB-GPT提供了数据驱动的自进化Multi-Agents框架,目标是可以持续基于数据做决策与执行。
  • 数据工厂: 数据工厂主要是在大模型时代,做可信知识、数据的清洗加工。
  • 数据源: 对接各类数据源,实现生产业务数据无缝对接到DB-GPT核心能力。

二、DB-GPT关键特性

1、私域问答&数据处理&RAG

DB-GPT支持通过内置、多文件格式上传、插件自抓取等方式自定义构建知识库,能够对海量结构化和非结构化数据进行统一向量存储与检索,实现高效的知识管理。此外,DB-GPT还实现了基于RAG的框架,用户可以基于DB-GPT的RAG能力构建知识类应用,为用户提供更加智能的问答体验。

2、多数据源&GBI

DB-GPT支持与多种数据源进行交互,包括但不限于Excel、各类数据库和数仓,同时支持生成分析报告,为用户提供深入的业务洞察。GBI,即生成式BI,是DB-GPT项目的核心能力之一,可以为构建企业报表分析、业务洞察提供基础的数智化技术保障。

3、多模型管理

DB-GPT支持海量模型,包括多种开源和API代理的大语言模型,如LLaMA/LLaMA2、Baichuan、ChatGLM、文心、通义、智谱、星火等。用户可以根据需求选择合适的模型进行应用开发,极大地提高了开发的灵活性和便捷性。
在这里插入图片描述

4、自动化微调

围绕大语言模型、Text2SQL数据集、LoRA/QLoRA/Pturning等微调方法构建的自动化微调轻量框架, 让TextSQL微调像流水线一样方便。
在这里插入图片描述

5、Data-Driven Multi-Agents&Plugins

DB-GPT支持自定义插件执行任务,并且原生支持Auto-GPT插件模型,通过Agents协议采用Agent Protocol标准,实现智能体之间的协作和任务的高效执行。这种数据驱动的自进化Multi-Agents框架,可以持续基于数据做决策与执行,大大提高了应用的智能化水平。

6、隐私安全

DB-GPT注重数据隐私和安全,通过私有化大模型、代理脱敏等多种技术保障数据的隐私安全。这一点在当今这个数据安全日益受到重视的时代,显得尤为重要。
在这里插入图片描述

三、服务器资源准备

DB-GPT刚好有支持AutoDL的镜像,因此直接在AutoDL 云平台时进行实践操作;在AutoDL云平台上,选择一台4090 GPU24G的服务器,为DB-GPT的运行提供必要的计算资源。打开jupyterLab,选择“终端”启动项,打开终端页面,后续所有操作都基于终端进行操作。

1、创建实例

选择一台4090 GPU24G的服务器,进行创建实例。
在这里插入图片描述

2、打开jupyterLab

选择”终端“启动项,打开终端页面,后续所有操作都基于终端进行操作。
在这里插入图片描述

四、DB-GPT启动

1、激活 conda 环境

conda activate dbgpt

2、切换到 DB-GPT 目录

cd /root/DB-GPT/	

3、导入 SQLite 样例数据

bash ./scripts/examples/load_examples.sh

在这里插入图片描述

五、DB-GPT运行

1、使用命令行工具启动

dbgpt start webserver --port 6006

dbgpt 是 DB-GPT 项目的命令行工具,这里利用命令行工具来启动(当然,你也可以使用命令 python dbgpt/app/dbgpt_server.py --port 6006 来启动)。
这里使用 6006 端口来启动服务,这个端口方便在 AutoDL 中开启公网访问。
镜像中默认准备好了 Qwen-1_8B-Chat 和 text2vec-large-chinese 模型文件。
在这里插入图片描述

2、访问 DB-GPT 页面

在服务器示例列表中,找到自定义服务,点击。
在这里插入图片描述

点击 “访问” 后自动打开的页面如下:

在这里插入图片描述

六、DB-GPT数据对话

数据对话能力是通过自然语言与数据进行对话,主要是结构化与半结构化数据的对话,可以辅助做数据分析与洞察。在开始数据对话之前,我们首先需要添加数据源

1、安装数据库

步骤1:安装MySQL数据库

sudo apt-get update
sudo apt-get install mysql-server
sudo service mysql start

安装启动mysql完成之后,登录mysql(默认无密码)
mysql -u root -p
在这里插入图片描述

步骤2:创建数据库用户

CREATE USER 'gpt'@'localhost' IDENTIFIED BY 'gpt';

步骤3:给数据库用户赋权限

GRANT ALL PRIVILEGES ON *.* TO 'gpt'@'localhost';
FLUSH PRIVILEGES;

2、添加数据源

1)数据准备
目前DB-GPT支持多种数据库类型。 选择对应的数据库类型添加即可。这里我们选择的是MySQL作为演示,演示的测试数据:case_1_student_manager_mysql.sql

create database case_1_student_manager character set utf8;
use case_1_student_manager;

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    student_name VARCHAR(100) COMMENT '学生姓名',
    major VARCHAR(100) COMMENT '专业',
    year_of_enrollment INT COMMENT '入学年份',
    student_age INT COMMENT '学生年龄'
) COMMENT '学生信息表';

CREATE TABLE courses (
    course_id INT PRIMARY KEY,
    course_name VARCHAR(100) COMMENT '课程名称',
    credit FLOAT COMMENT '学分'
) COMMENT '课程信息表';

CREATE TABLE scores (
    student_id INT,
    course_id INT,
    score INT COMMENT '得分',
    semester VARCHAR(50) COMMENT '学期',
    PRIMARY KEY (student_id, course_id),
    FOREIGN KEY (student_id) REFERENCES students(student_id),
    FOREIGN KEY (course_id) REFERENCES courses(course_id)
) COMMENT '学生成绩表';


INSERT INTO students (student_id, student_name, major, year_of_enrollment, student_age) VALUES
(1, '张三', '计算机科学', 2020, 20),
(2, '李四', '计算机科学', 2021, 19),
(3, '王五', '物理学', 2020, 21),
(4, '赵六', '数学', 2021, 19),
(5, '周七', '计算机科学', 2022, 18),
(6, '吴八', '物理学', 2020, 21),
(7, '郑九', '数学', 2021, 19),
(8, '孙十', '计算机科学', 2022, 18),
(9, '刘十一', '物理学', 2020, 21),
(10, '陈十二', '数学', 2021, 19);

INSERT INTO courses (course_id, course_name, credit) VALUES
(1, '计算机基础', 3),
(2, '数据结构', 4),
(3, '高等物理', 3),
(4, '线性代数', 4),
(5, '微积分', 5),
(6, '编程语言', 4),
(7, '量子力学', 3),
(8, '概率论', 4),
(9, '数据库系统', 4),
(10, '计算机网络', 4);

INSERT INTO scores (student_id, course_id, score, semester) VALUES
(1, 1, 90, '2020年秋季'),
(1, 2, 85, '2021年春季'),
(2, 1, 88, '2021年秋季'),
(2, 2, 90, '2022年春季'),
(3, 3, 92, '2020年秋季'),
(3, 4, 85, '2021年春季'),
(4, 3, 88, '2021年秋季'),
(4, 4, 86, '2022年春季'),
(5, 1, 90, '2022年秋季'),
(5, 2, 87, '2023年春季');

执行SQL,创建数据库,创建数据表、添加数据
在这里插入图片描述

2)数据检查
查看SQL之后,数据是否正常入库
在这里插入图片描述

3、绑定数据库

将我们创建的MySQL数据库设置为数据源
在这里插入图片描述

配置好数据库连接信息
在这里插入图片描述

4、对话体验

用户可以通过自然语言提问,DB-GPT会根据问题的语义理解,生成相应的SQL查询语句,并将查询结果以图表、表格或数据的形式返回给用户。这样的交互方式极大地简化了数据分析的复杂性,使得非技术用户也能够轻松地进行数据查询和分析。

1)选择数据对话

在这里插入图片描述

2)开始数据对话

此时界面上数据库已经默认设置为我们前面绑定的数据库了,也可以手动选择
在这里插入图片描述

3)错误处理

在数据对话的过程中,可能会遇到一些问题,比如缺少必要的Python库或者模型对某些查询的处理不够准确。例如,如果在提问咨询时遇到“RuntimeError: ‘cryptography’ package is required for sha256_password or caching_sha2_password auth methods”的错误,就需要安装相应的Python库来解决问题。通过pip install cryptography命令安装缺少的库后,需要重新启动DB-GPT以使更改生效。
pip install cryptography
在这里插入图片描述

安装后重新启动DB-GPT

4)数据对话1

问题:请帮我查询总共有多少学生?
可以看到数据查询成功,而且还分3中方式返回Chart、SQL、Data
在这里插入图片描述

返回SQL语句,可以检查相关的SQL是否正确
在这里插入图片描述

Data页签返回执行结果
在这里插入图片描述

SQL执行
还可以点击上面的Editor按钮,复制SQL,直接在页面上执行,查看结果
在这里插入图片描述

5)数据对话2

后门连接问了两次稍微比第一次复杂一点的请求,就搞不定了。
在这里插入图片描述

数据对话的体验展示了DB-GPT在处理结构化和半结构化数据方面的能力,它能够理解用户的自然语言查询,并准确地转换成SQL语句,执行查询并返回结果。用户可以通过简单的问答形式,获取到他们需要的数据洞察,这对于数据分析和业务决策来说是非常有价值的。

总结

经过实战测试,DB-GPT展现了其强大的功能、对多种模型的支持以及良好的界面体验。但是在交互体验和复杂任务处理方面存在一定的不足,如果模型的稳定性和任务拆解能力的进一步提升,DB-GPT有望成为大模型应用开发领域的优秀工具。

DB-GPT的开发团队持续在优化其功能和性能,用户社区的反馈和贡献也是推动其进步的重要力量。随着大模型技术的成熟和应用的普及,我们可以期待DB-GPT在未来能够提供更加完善和强大的服务,帮助开发者轻松构建出智能、高效的应用,推动人工智能技术在各行各业的应用和发展。

在这里插入图片描述

🎯🔖更多专栏系列文章:AIGC-AI大模型探索之路

如果文章内容对您有所触动,别忘了点赞、⭐关注,收藏!加入我,让我们携手同行AI的探索之旅,一起开启智能时代的大门!

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

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

相关文章

使用VUE3+TS+elementplus创建一个增加按钮

一、前言 在上一篇文章中分享了创建table的过程&#xff0c;详见&#xff08;VUE3TSelementplus创建table&#xff0c;纯前端的table&#xff09;&#xff0c;本文在创建好的table的基础上&#xff0c;再创建一个增加按钮。 二、程序展示 1、前面创建table的程序 <templ…

Springboot+Vue项目-基于Java+MySQL的游戏交易系统(附源码+演示视频+LW)

大家好&#xff01;我是程序猿老A&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。 &#x1f49e;当前专栏&#xff1a;Java毕业设计 精彩专栏推荐&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb;&#x1f447;&#x1f3fb; &#x1f380; Python毕业设计 &…

关于智慧校园安全用电监测系统的设计

人生人身安全是大家关注的话题&#xff0c;2019年12月中国消防统计近五年发生在全国学生宿舍的火灾2314起&#xff08;中国消防2019.12.应急管理部消防救援局官方微博&#xff09;&#xff0c;违规电器是引发火灾的主因。如果在各寝室安装智能用电监测器实时监督线路参数&#…

足球走地数据分析之大小球策略及工具介绍

在足球走地数据分析中&#xff0c;大小球策略是一种非常实用的投注方式。以下是一些关于大小球策略的分析和建议&#xff1a; 理解大小球概念&#xff1a;大小球是足球走地投注中的一种玩法&#xff0c;主要预测的是一场比赛中的总进球数是否超过或低于一个预设的数值。例如&a…

浏览器API与协议

现代浏览器是一个囊括了数百个组件的操作系统&#xff0c;包括进程管理、安全沙箱、分层的优化缓存、JavaScript虚拟机、图形渲染和GPU管道、存储系统、传感器、音频和视频&#xff0c;网络机制等等。 在浏览器上运行的应用的性能。&#xff0c;取决于多个组件&#xff1a;解析…

C#利用WinForm实现可以查看指定目录文件下所有图片

目录 一、关于Winform 二、创建应用 三、功能实现 四、代码部分 一、关于Winform Windows 窗体是用于生成 Windows 桌面应用的 UI 框架。 它提供了一种基于 Visual Studio 中提供的可视化设计器创建桌面应用的高效方法。 利用视觉对象控件的拖放放置等功能&#xff0c;可…

适用于 Windows 7/8/10/11 的 6 款最佳免费分区软件

分区软件程序旨在帮助您创建、缩小、删除、扩展、合并或拆分硬盘和其他存储设备的分区。虽然可以在 Windows 中对硬盘进行分区而无需使用其他软件&#xff0c;但您可以执行的活动范围有限。例如&#xff0c;如果没有外部工具&#xff0c;您无法调整分区大小或合并分区。在这篇文…

Stable Diffusion|黑白老照片修复

在这个时代&#xff0c;我们习惯于拥有高清、色彩丰富的照片&#xff0c;然而&#xff0c;那些古老的黑白色老照片由于年代的久远&#xff0c;往往会出现模糊、破损等现象。 关于AI绘画技术储备 学好 AI绘画 不论是就业还是做副业赚钱都不错&#xff0c;但要学会 AI绘画 还是要…

解决 fatal: Not a git repository (or any of the parent directories): .git 问题

解决方法&#xff1a;在命令行 输入 git init 然后回车就好了

一些常见的程序设计问题

秒杀 redis缓存库存 1.判断库存名额是否充足&#xff0c;2.进行扣减 为了防止超卖&#xff0c;必须保证这两部的原子性 库存扣减后发送mq消息&#xff0c;去异步执行创建订单流程&#xff0c;创建订单失败会造成少卖。可加重试机制&#xff0c;对多次重试依旧失败的&#xff…

史上最全PMP学习资料、项目管理资料、备考经验包,3A一次通过

你是否也有过类似的经历&#xff1f; 为了获取备考资料&#xff0c;有的同学在论坛、知乎或者相关垂直类网站下载了很多的资料&#xff0c;这些资料大部分是机构进行获客引流的资料&#xff0c;没有真正的干货。 经常会看到10G、20G的资料包&#xff0c;感觉内容很丰富&#xf…

2024中青杯A题数学建模成品文章数据代码分享

人工智能视域下养老辅助系统的构建 摘要 随着全球人口老龄化的加剧&#xff0c;养老问题已经成为一个世界性的社会问题&#xff0c;对社会各个方面产生了深远影响&#xff0c;包括劳动力市场、医疗保健和养老金制度等。人口结构变化对养老服务的质量和覆盖面提出了更高要求。特…

OpenHarmony集成OCR三方库实现文字提取

1. 简介 Tesseract(Apache 2.0 License)是一个可以进行图像OCR识别的C库&#xff0c;可以跨平台运行 。本样例基于Tesseract库进行适配&#xff0c;使其可以运行在OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;上&#xff0c;并新增N-API接口供上层应…

第198题|很精彩的一道题|函数强化训练(五)|武忠祥老师每日一题

解题思路&#xff1a;解决这道题有两种方法&#xff1a;第一种直接法排除法&#xff0c;第二种秒杀法 直接法排除法 (A) 要证明f(x)是以2为周期的函数&#xff1a;则要证明f(x2)f(x); 证明过程如下&#xff1a; A得证。 (B) 变上限积分关于周期的结论&#xff1a; f(x)连…

dubbo复习: (6)和springboot集成时的条件路由

根据指定的条件&#xff0c;对不满足条件的请求进行拦截。 比如拦截ip地址为192.168.31.227的请求。只需要在dubbo admin中的条件路由菜单创建相应的规则 enabled: true force: true runtime: true conditions:- host ! 192.168.31.227

安装petalinux工具

petalinux 并不是一个特殊 Linux 内核&#xff0c;而是一套开发环境配置的工具&#xff0c;降低 uboot、内核、 根文件系统的配置的工作量&#xff0c;可以从 Vivado 的导出硬件信息自动完成相关软件的配置。 petalinux 是赛灵思基于 buildroot 工具链为自家处理器方便适配 Li…

51单片机汇编语言设计流水灯

1、仿真原理图 2、汇编代码及详细注释 &#xff08;1&#xff09;、代码1 ORG 0000H ; 设置代码起始地址为0000H 熄灭发光二极管 MOV A,#0FEH ; 将数值0FEH载入A寄存器&#xff0c;熄灭所有发光二极管 MOV P1, A ; 将A寄存器的值移动到P1寄存器&#xff0c;将0FEH写入P1…

重组蛋白表达系统优缺点对比|卡梅德生物

重组蛋白是现代生物技术中不可或缺的一部分&#xff0c;它们广泛应用于药物开发、研究工具和工业酶的生产。根据目标蛋白的特性和所需的修饰&#xff0c;可以选择不同的表达系统。下文罗列一下四个主要蛋白表达系统的优缺点&#xff1a; 1. 原核表达系统&#xff08;如大肠杆菌…

MySQL学习之DQL语句(数据查询语言)

准备SQL CREATE TABLE student ( id int, -- 编号 name varchar(20), -- 姓名 age int, -- 年龄 sex varchar(5), -- 性别 address varchar(100), -- 地址 math int, -- 数学 english int -- 英语 );INSERT INTO student(id,NAME,age,sex,address,math,english) VALUES (1,…

百变大侦探秘之馆的魔术师是谁 秘之馆的魔术师怎么打真相解析

百变大侦探秘之馆的魔术师是一个6人的困难剧本&#xff0c;这次我们将来到动物世界&#xff0c;虽然参与进来的都是各种代号的动物&#xff0c;但他们每个都聪明绝顶&#xff0c;所以今天的真相解析也会比较困难&#xff0c;故事就这样开始了&#xff0c;我们来看看谁才是魔术师…