开源新宠:RAG2SQL工具,超越Text2SQL的7K Star之作

news2024/12/28 3:19:41

查询数据库离不开SQL,那如何快速构建符合自己期望的SQL呢?AI发展带来了Text2SQL的能力,众多产品纷纷提供了很好的支持。

今天我们分享一个开源项目,它在Text2SQL的基础上还要继续提高,通过加入RAG的能力进一步增强,它就是:Vanna

Vanna 是什么

从本质上讲,Vanna 是一个 Python 包,它使用检索增强来帮助您使用 LLM 为数据库生成准确的 SQL 查询。

Vanna 的工作过程分为两个简单步骤 - 在您的数据上训练 RAG“模型”,然后提出问题,这些问题将返回 SQL 查询,这些查询可以设置为在您的数据库上自动运行。

Vanna有三种模式,适应不同的需求。

第一种,开源模式。

你可以用它来集成任何你喜欢的语言模型,完全自定义。

就像自己搭积木,想怎么玩就怎么玩。

第二种,免费模式。

这里有日限额的模型使用,还有免费的存储服务。

用GPT 3.5,你可以不花一分钱就开始探索数据。

第三种,付费模式。

如果你需要更多,这里有无限制的使用,GPT-4的支持,还有服务保障。

想象一下,不管你是开发者还是分析师,都能用Vanna来发现数据的秘密。

使用 Vanna

你可以从Jupyter Notebook、Slackbot、网页应用或Streamlit等开始使用Vanna。当然也可以将Vanna集成到你的网页应用里。

如果你只是想简单体验一下Vanna,可以使用已经训练好的在线大模型和Vanna 提供的向量数据库,最简单的方式是通过Colab notebook。

!pip install vanna
import vanna
from vanna.remote import VannaDefault
vn = VannaDefault(model='chinook', api_key=vanna.get_api_key('my-email@example.com'))
vn.connect_to_sqlite('<https://vanna.ai/Chinook.sqlite>')
vn.ask("What are the top 10 albums by sales?")
from vanna.flask import VannaFlaskApp
VannaFlaskApp(vn).run()

这里需要使用到vanna 的apikey,所以需要注册vanna 的账号。

AI 数据库机器人

可以通过Streamlit 和 Vanna的组合来快速创建一个数据库的SQL聊天机器人,首先,我们将导入我们将使用的 2 个 Python 包:Streamlit 和 Vanna。

  • Streamlit提供用户界面
  • Vanna 提供Text2SQL的能力
import vanna as vn
import streamlit as st

设置

在这里,我们将使用 Vanna API 密钥,将 Vanna 检索增强模型设置为“chinook”,它具有该数据库的元数据,并且我们将连接到 SQLite 数据库,这将允许我们运行生成的 SQL。

vn.set_api_key(st.secrets[ "vanna_api_key" ]) 
vn.set_model( 'chinook' ) 
vn.connect_to_sqlite( '<https://vanna.ai/Chinook.sqlite>' )

对话框

my_question = st.text_input( "问我一个可以转化为 SQL 的问题" , key= "my_question" )

使用 AI 生成 SQL

sql  = vn.generate_sql(my_question) 
st.code( sql , language = 'sql' )

显示表格

df = vn.run_sql(sql)     
st.dataframe(df, use_container_width= True )

使用AI生成图表并显示

fig = vn.get_plotly_figure(plotly_code=vn.generate_plotly_code(question=my_question, sql=sql, df=df), df=df)
st.plotly_chart(fig, use_container_width=True)

整合

接下来我们将几部分内容最终整合成一个完整的示例。如下所示:

import vanna as vn
import streamlit as st

vn.set_api_key(st.secrets["vanna_api_key"])
vn.set_model('chinook')
vn.connect_to_sqlite('<https://vanna.ai/Chinook.sqlite>')

my_question = st.session_state.get("my_question", default=None)
if my_question is None:
    st.image("chinook-schema.png", use_column_width=True)
    my_question = st.text_input("Ask me a question that I can turn into SQL", key="my_question")
else:
    st.title(my_question)
    sql = vn.generate_sql(my_question)
    st.code(sql, language='sql')
    df = vn.run_sql(sql)    
    st.dataframe(df, use_container_width=True)
    fig = vn.get_plotly_figure(plotly_code=vn.generate_plotly_code(question=my_question, sql=sql, df=df), df=df)
    st.plotly_chart(fig, use_container_width=True)
    st.button("Ask another question", on_click=lambda: st.session_state.clear())

总结

整体来说,Vanna 框架,让我们无需太多关心Prompt的构建、组装与优化,就可以快速实现一个基于Text2SQL方案的交互式数据库对话机器人,且具备更高的正确率。目前在一些使用是还是会存在正确率不够的情况,可能是RAG的信息不足的问题,但生成速度和体验上还是非常不错的。

在Text2SQL领域,Vanna引入RAG的概念是一个不错的尝试,希望将来可以发展的越来越完善。

在这里插入图片描述

大模型&AI产品经理如何学习

求大家的点赞和收藏,我花2万买的大模型学习资料免费共享给你们,来看看有哪些东西。

1.学习路线图

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

在这里插入图片描述

在这里插入图片描述

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方图片前往获取

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。
在这里插入图片描述

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。
在这里插入图片描述

👉学会后的收获:👈
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
在这里插入图片描述

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

在这里插入图片描述

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

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

相关文章

虹软科技25届校招笔试算法 A卷

目录 1. 第一题2. 第二题3. 论述题 ⏰ 时间&#xff1a;2024/08/18 &#x1f504; 输入输出&#xff1a;ACM格式 ⏳ 时长&#xff1a;2h 本试卷分为不定项选择&#xff0c;编程题&#xff0c;必做论述题和选做论述题&#xff0c;这里只展示编程题和必做论述题&#xff0c;一共三…

代码随想录算法训练营_day17

题目信息 654. 最大二叉树 题目链接: https://leetcode.cn/problems/maximum-binary-tree/题目描述: 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前…

AVI-Talking——能通过语音生成很自然的 3D 说话面孔

概述 论文地址&#xff1a;https://arxiv.org/pdf/2402.16124v1.pdf 逼真的人脸三维动画在娱乐业中至关重要&#xff0c;包括数字人物动画、电影视觉配音和虚拟化身的创建。以往的研究曾试图建立动态头部姿势与音频节奏之间的关联模型&#xff0c;或使用情感标签或视频剪辑作…

【数据结构与算法】如何构建最小堆

最小堆的定义 最小堆&#xff0c;作为一种独特且重要的数据结构&#xff0c;它是一种特殊的二叉树。在这种二叉树中&#xff0c;有一个关键的规则&#xff1a;每一个父节点所存储的值&#xff0c;都必然小于或者等于其对应的子节点的值。这一规则确保了根节点总是承载着整个堆…

机器学习(3)-- 一元线性回归

文章目录 线性回归训练模型测试模型线性回归方程测试实用性 总结 线性回归 线性回归算法是一种用于预测一个或多个自变量&#xff08;解释变量&#xff09;与因变量&#xff08;响应变量&#xff09;之间关系的统计方法。这种方法基于线性假设&#xff0c;即因变量是自变量的线…

【学习笔记】Day 16-17

一、进度概述 1、ddnet_main 相关代码学习&#xff08;预计 3-4 天&#xff09; 二、详情 1、顶层结构 关于代码顶层结构的一些思考和总结&#xff0c;其中下图为师兄代码的文件结构 总结&#xff1a; 对于一个优秀的代码&#xff0c;其文件结构一定也是清晰的&#…

随笔五、开发板连接WIFI并通过SSH连接泰山派

摘要&#xff1a;通过wifi连接内网&#xff0c;电脑通过SSH连接泰山派 1. 泰山派接入WIFI 泰山派开发板SDK已经集成wifi_start.sh脚本&#xff0c;在脚本后面直接输入wifi名字和密码就能连接wifi rootRK356X:/# wifi_start.sh wifi名字 wifi密码 查看ip地址&#xff0c;wlan0就…

洛谷 P6359 [CEOI2018] Cloud computing

题目本质&#xff1a;贪心01背包&#xff08;dp&#xff09; 题目思路&#xff1a;dp[i][j] 表示考虑前 i 台计算机&#xff0c;能够获得 j 个核心时&#xff0c;所能获得的最大价值。将其可以优化为dp[i] 表示能够获得 i 个核心时&#xff0c;所能获得的最大价值。 状态转移…

jira敏捷开发管理工具视频教程Confluence工作流协同开发(2024)

正文&#xff1a; 随着Jira敏捷开发方法论的普及&#xff0c;Jira已经成为全球软件开发团队管理项目、任务和问题的首选工具。为了帮助团队更好地掌握Jira的核心功能&#xff0c;精心准备了一套全面开发技术及案例视频教程——《Jira敏捷开发管理工具视频教程Confluenc…

学习大数据DAY38 hive 安装与配置

目录 hadoop 大数据平台-hive 组件部署介绍 hadoop 大数据平台-Hive 部署步骤 教学视频 上机作业 hadoop 大数据平台-hive 组件部署介绍 metastore:保存关于表、列、分区、数据格式、存储位置等各种元数据信 Driver:负责与 Hive 服务器建立网络连接&#xff0c;使客户端能…

Unity的动画系统

目录 Unity动画系统的最新更新和改进有哪些&#xff1f; 如何在Unity中高效地使用Animator组件进行复杂动画制作&#xff1f; Unity动画系统中的动画混合和分层功能是如何工作的&#xff1f; 动画混合&#xff08; blend tree&#xff09; 动画分层 在Unity中创建和管理动…

一键运行RocketMQ5.3和Dashboard

一键运行RocketMQ5.3和Dashboard 目录 一键运行RocketMQ5.3和Dashboard通过Docker Compose 来一键启动运行的容器包括docker-compose.yml文件运行命令启动本地效果查看 参考信息 通过Docker Compose 来一键启动 运行的容器包括 NameServerBrokerProxyDashBoard docker-compo…

RabbitMQ消息队列总结(❤❤❤❤❤)

RabbitMQ那些事 参考一. `RabbitMQ`介绍1.1 Java工程师1.1.1 RabbitMQ学习目标1.1.2 消息队列介绍1.1.3 RabbitMQ介绍各自属性介绍(❤❤❤)二. `RabbitMQ`安装1. 基于Linux1.1 安装1.2 常用命令1.3 后台管理开启与面板介绍三. 客户端`SDK`操作(❤❤了解)1. 客户端依赖2. 生产者…

微信消息防撤回插件

该软件可以恢复别人撤回的消息。 版本特色&#xff1a; 1、看到对方撤回的消息 2、多账号可正常登录 修改原理&#xff0c;如下图&#xff1a; 使用说明&#xff1a; 1、需电脑登录 2、解压后&#xff0c;双击start_wechat.bat来运行软件 下载地址&#xff1a;Wechat防撤…

UE基础 —— 资产和内容包

目录 直接导入资产 使用资产 创建资产 资产引用 管理资产 移动和复制资产 删除资产 导出资产 迁移资产 资产元数据 在虚幻编辑器UI中使用元数据 使用资产元数据 自动重新导入 查找资产引用 替换引用工具 Class Viewer 全局资产选取器 Property Matrix 引擎项…

以node / link文件表征的道路网络-----基于南京公路公开数据做路径规划(下)------dijkstra算法的一些简单花样

在不改变dijkstra算法本身的情况下&#xff0c;完全可以从数据源的角度出发&#xff0c;解决我们的一些简单需求&#xff1a; 比较初级且粗暴的玩法&#xff0c;可以是强行赋予一些link极端的路段长度。 对于我们坚决不希望车辆行驶的道路、禁行区、或是危险区&#xff0c;就…

局域网基础技术详解

虽然在学校学了计算机网络&#xff0c;但还是有些东西要自己去了解。所以这篇博客也算是学校课程和我在网上查找资料总结的一些关于局域网基础技术知识。 一、傻瓜式交换机 一种即插即用、未管理的交换机&#xff0c;不需人工配置的低端交换机。只提供基本的网络连接功能&#…

koa+puppeteer爬虫实践

最近工作中遇到一个使用nodejs实现爬虫程序的任务。需求背景是这样的&#xff1a;公司运营的一个老项目运营那边最近提了SEO优化的需求&#xff0c;但是项目本身并没有做SSR(服务端渲染)&#xff0c;公司的要求是花费的人力成本最低&#xff0c;代价最小。在经过一番调研之后团…

Route路由 Vue2

1.路由的概念 2.路由的基本使用 1.安装 因为我们使用的是Vue2 所以使用的 router 是 3版本 当使用Vue3 的时候就使用 router4 npm i vue-router3 2.简单使用 /router/index.js //该文件专门创建整个应用的路由器import VueRouter from vue-router; //引入组件 import MyA…

谷粒商城实战笔记-179~183-商城业务-检索服务-SearchRequest和SearchResponse构建

文章目录 一&#xff0c;179-商城业务-检索服务-SearchRequest构建-检索1&#xff0c;Controller接口 二&#xff0c;180-商城业务-检索服务-SearchRequest构建-排序、分页、高亮&测试三&#xff0c;181-商城业务-检索服务-SearchRequest构建-聚合四&#xff0c;182-商城业…