LLMs之Vanna:Vanna(利用自然语言查询数据库的SQL工具+底层基于RAG)的简介、安装、使用方法之详细攻略

LLMs之Vanna:Vanna(利用自然语言查询数据库的SQL工具+底层基于RAG)的简介、安装、使用方法之详细攻略

目录

Vanna的简介

1、用户界面

2、RAG vs. Fine-Tuning

3、为什么选择Vanna?

4、扩展Vanna

Vanna的安装和使用方法

1、安装

2、训练

(1)、使用DDL语句训练

(2)、使用文档训练

(3)、使用SQL训练

3、提问问题

Vanna的应用案例

1、基础用法


Vanna的简介

Vanna是一个基于MIT许可的开源Python RAG(检索增强生成)框架,用于SQL生成和相关功能。

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

如果您不知道什么是RAG,不用担心 - 您不需要知道在底层如何工作就能使用它。您只需要知道您需要“训练”一个模型,它会存储一些元数据,然后用它来“提问”问题。

查看基类以获取有关底层工作原理的更多详细信息。

Vanna.AI是一个基于语言模型的SQL代理,允许用户通过简单的自然语言问题获得数据库中的洞察信息。它提供开源的Python包以及各种前端集成方式,可以部署在自己的基础设施上运行。
>> 系统的准确性取决于提供的训练数据量和质量,更多的数据可以支持复杂数据集提高准确率。
>> 用户数据库内容不会发送到语言模型,只有架构、文档和查询信息存储在元数据层中,从保障数据安全性。
>> 使用越多,模型通过不断增加训练数据会持续提升,实现自我学习效果。
>> 支持许多常见数据库如Snowflake、BigQuery、Postgres,也可以通过连接器支持任意数据库。
>> 提供免费版和付费版两种计划,区别在于查询限制和语言模型版本的不同。
>> 该系统强调以开源方式提供,保障数据安全并支持定制化部署是其一大卖点。

GitHub地址:https://github.com/vanna-ai/vanna

文档地址:Vanna Docs: How It Works

1、用户界面

这是我们使用Vanna构建的一些用户界面。您可以直接使用它们,或将它们作为自定义界面的起点。

2、RAG vs. Fine-Tuning

RAG

微调

可在LLMs之间移植

如果数据变得过时,可以轻松删除训练数据

比微调更便宜

更具未来性 - 如果有更好的LLM出现,可以轻松替换

如果需要最小化提示中的标记,可以选择微调

启动较慢

训练和运行费用昂贵(一般情况下)

3、为什么选择Vanna?

在复杂数据集上具有高准确性

Vanna的能力与您提供的训练数据密切相关。

更多的训练数据对于大型和复杂数据集的准确性更有帮助。

安全和私密

您的数据库内容永远不会发送到LLM或向量数据库。

SQL执行发生在您的本地环境中。

自学习

如果通过Jupyter使用,您可以选择在成功执行的查询上“自动训练”它。

如果通过其他界面使用,您可以要求界面提示用户对结果提供反馈。

正确的问题和SQL对存储供将来参考,使未来的结果更准确。

支持任何SQL数据库

该软件包允许您连接到您可以使用Python连接的任何SQL数据库。

选择您的前端

大多数人从Jupyter Notebook开始。

通过Slackbot、Web应用程序、Streamlit应用程序或自定义前端向最终用户公开。

4、扩展Vanna

Vanna旨在连接到任何数据库、LLM和向量数据库。有一个VannaBase抽象基类定义了一些基本功能。该软件包提供了与OpenAI和ChromaDB一起使用的实现。您可以轻松扩展Vanna以使用自己的LLM或向量数据库。详细信息请参阅文档。

Vanna的安装和使用方法

查看文档以获取有关您所需数据库、LLM等的具体信息。

如果您想在训练后了解其工作方式,可以尝试此Colab笔记本。

1、安装

pip install vanna
有一些可选包可以安装,详细信息请参阅文档。导入
如果您要自定义LLM或向量数据库,请参阅文档。
import vanna as vn

2、训练

根据您的用例,您可能需要或不需要运行这些vn.train命令。详细信息请参阅文档。

(1)、使用DDL语句训练

DDL语句包含有关数据库中表名、列、数据类型和关系的信息。

vn.train(ddl="""CREATE TABLE IF NOT EXISTS my-table (id INT PRIMARY KEY,name VARCHAR(100),age INT)
""")

(2)、使用文档训练

有时您可能希望添加关于业务术语或定义的文档。

vn.train(documentation="Our business defines XYZ as ...")

(3)、使用SQL训练

您还可以将SQL查询添加到训练数据中。如果您已经有一些查询可用,只需从编辑器中复制并粘贴它们即可开始生成新的SQL。

vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")

3、提问问题

vn.ask("What are the top 10 customers by sales?")

您将得到SQL查询结果,以及连接到数据库时的表格和自动生成的Plotly图表。

Vanna的应用案例

更新中……

1、基础用法

!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 artists by sales?')from vanna.flask import VannaFlaskApp
VannaFlaskApp(vn).run()

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

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

相关文章

c#中使用UTF-8编码处理多语言文本的有效策略

使用UTF-8编码处理多语言文本的有效策略 在当今的全球化时代,软件开发者常常需要处理包含多种语言的文本。这不仅涉及英文和其他西方语言,还包括中文、日文、韩文等多字节字符系统。在这篇博客中,我将探讨如何有效地使用UTF-8编码来处理混合语…

项目管理认证 | 什么是PMP项目管理?PMP证书有什么用?

01 什么是项目管理? 项目管理?听起来似乎离我们很遥远。其实不然, 学习了项目管理知识后,你会发现,“一切都是项目,一切也将成为项目”。 你可以把港珠澳大桥的建设、开发一款新型手机、开发一个好用的C…

HarmonyOS 发送http网络请求

好 本文 我们来说 http请求 首先 我们要操作网络内容 需要申请权限 项目中找到 main目录下的module.json5 最下面加上 "requestPermissions": [{"name": "ohos.permission.INTERNET"} ]这里 我在本地写了一个get接口 大家可以想办法 弄一个后…

为什么两个向量的内积等于模长乘夹角?

为什么两个向量的内积等于模长乘夹角? 已知两个向量 a = [ a 1 , a 2 ] a=[a_1,a_2] a=[a1​,a2​]和 b = [ b 1 , b 2 ] b=[b_1,b_2] b=[b1​,b2​],他们的内积为 a b = a 1 b 1 + a 2 b 2 ab=a_1b_1+a_2b_2 ab=a1​b1​+a2​b2​,看书上的定义该内积的值是一个标量,并且等…

RabbitMQ交换机

目录 交换机类型 直连交换机:Direct exchange 主题交换机:Topic exchange 扇形交换机:Fanout exchange 首部交换机:Headers exchange 死信交换机:Dead Letter Exchange 交换机的属性 代码实战 直连&#…

x-cmd pkg | frp - 内网穿透工具

简介 frp(Fast Reverse Proxy)是一个专注于内网穿透的高性能反向代理应用,可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。 它采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部…

使用torch实现RNN

在实验室的项目遇到了困难,弄不明白LSTM的原理。到网上搜索,发现LSTM是RNN的变种,那就从RNN开始学吧。 带隐藏状态的RNN可以用下面两个公式来表示: 可以看出,一个RNN的参数有W_xh,W_hh,b_h&am…

[AutoSar]BSW_OS 06 Autosar OS_Alarms

一、 目录 一、关键词平台说明一、Timer1.1 配置1.2Periodical Interrupt Timer (PIT)和High Resolution Timer (HRT) 二、Alarm 工作机制三、Code3.1创建一个15ms的runnable3.2mapping到basic task3.3生成代码 关键词 嵌入式、C语言、autosar、OS、BSW 平台说明 项目ValueO…

HJ8 合并表记录【C语言】

【华为机试题 HJ8】合并表记录 描述输入描述:输出描述:示例1示例2参考代码1描述 数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。 提示: 0 <= index <= 11…

写一段圆弧插补算法程序

以下是一个简单的圆弧插补算法程序的示例&#xff1a; #include <iostream> #include <cmath>// 圆弧插补算法 void arcInterpolation(double x1, double y1, double x2, double y2, double cx, double cy, double r) {// 计算圆心到起始点和终点的向量double v1x…

k8s的helm

1、在没有helm之前&#xff0c;部署deployment、service、ingress等等 2、helm的作用&#xff1a;通过打包的方式&#xff0c;deployment、service、ingress这些打包在一块&#xff0c;一键部署服务、类似于yum功能 3、helm&#xff1a;官方提供的一种类似于仓库的功能&#…

时间轮设计

目录 基本概念 函数定义 函数实现与测试 测试1结果如下 测试2结果如下 基本概念 时间轮 是一种 实现延迟功能&#xff08;定时器&#xff09; 的 巧妙算法。如果一个系统存在大量的任务调度&#xff0c;时间轮可以高效的利用线程资源来进行批量化调度。把大批量的调度任务…

GaussDB如何创建和管理序列、定时任务

前言 GaussDB是华为自主创新研发的分布式关系型数据库&#xff0c;为企业提供功能全面、稳定可靠、扩展性强、性能优越的企业级数据库服务。在实际业务场景使用中&#xff0c;为了提高工作效率&#xff0c;数据库GaussDB提供定时任务的功能&#xff0c;本节为大家讲解GaussDB如…

React16源码: React中的resetChildExpirationTime的源码实现

resetChildExpirationTime 1 &#xff09;概述 在 completeUnitOfWork 当中&#xff0c;有一步比较重要的一个操作&#xff0c;就是重置 childExpirationTimechildExpirationTime 是非常重要的一个时间节点&#xff0c;它用来记录某一个节点的子树当中&#xff0c;目前优先级最…

git 本地分支提交远程分支

在日常开发中&#xff0c;我们常常遇到这样的场景&#xff0c;本地有个分支名字&#xff1a;developtemp&#xff0c;远程有个分支origin/develop&#xff0c;两个分支没有关联关系&#xff0c;而且分支名字不同&#xff0c;此时想提交代码。 //先拉取远程分支代码 git pull o…

html中根元素以及根元素字体的含义

在 HTML 中&#xff0c;根元素是指 <html> 标签&#xff0c;可以使用 CSS 来设置根元素的字体大小。根元素的字体大小会影响整个页面的文本内容&#xff0c;默认情况下&#xff0c;根元素的字体大小是浏览器默认的大小。 要设置根元素的字体大小&#xff0c;你可以使用 …

如何进行技术选型

关键步骤 进行技术选型时通常会考虑的几个关键步骤&#xff1a; 1. 理解项目需求 业务需求&#xff1a;明确业务目标和需求是技术选型的起点。了解项目的目标、预期成果以及业务方面的限制。技术需求&#xff1a;确定技术上的必要条件&#xff0c;比如性能、可扩展性、安全性…

大数据基础设施搭建 - Redis

一、上传压缩包 二、解压压缩包 [mallmall software]$ tar -zxvf redis-6.2.1.tar.gz -C /opt/module/三、查看gcc是否安装 redis是用c写的&#xff0c;因此安装redis需要c语言的编译环境&#xff0c;即需要安装gcc [mallmall module]$ gcc -v四、编译 [mallmall ~]$ cd /op…

C++提高编程——STL:string容器、vector容器

本专栏记录C学习过程包括C基础以及数据结构和算法&#xff0c;其中第一部分计划时间一个月&#xff0c;主要跟着黑马视频教程&#xff0c;学习路线如下&#xff0c;不定时更新&#xff0c;欢迎关注。 当前章节处于&#xff1a; ---------第1阶段-C基础入门 ---------第2阶段实战…

数据结构:堆与堆排序

目录 堆的定义&#xff1a; 堆的实现&#xff1a; 堆的元素插入&#xff1a; 堆元素删除&#xff1a; 堆初始化与销毁&#xff1a; 堆排序&#xff1a; 堆的定义&#xff1a; 堆是一种完全二叉树&#xff0c;完全二叉树定义如下&#xff1a; 一棵深度为k的有n个结点的二…