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

本文主要是介绍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()

这篇关于LLMs之Vanna:Vanna(利用自然语言查询数据库的SQL工具+底层基于RAG)的简介、安装、使用方法之详细攻略的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/625180

相关文章

Spring Boot整合Redis注解实现增删改查功能(Redis注解使用)

《SpringBoot整合Redis注解实现增删改查功能(Redis注解使用)》文章介绍了如何使用SpringBoot整合Redis注解实现增删改查功能,包括配置、实体类、Repository、Se... 目录配置Redis连接定义实体类创建Repository接口增删改查操作示例插入数据查询数据删除数据更

Mysql数据库聚簇索引与非聚簇索引举例详解

《Mysql数据库聚簇索引与非聚簇索引举例详解》在MySQL中聚簇索引和非聚簇索引是两种常见的索引结构,它们的主要区别在于数据的存储方式和索引的组织方式,:本文主要介绍Mysql数据库聚簇索引与非... 目录前言一、核心概念与本质区别二、聚簇索引(Clustered Index)1. 实现原理(以 Inno

sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符

《sqlserver、mysql、oracle、pgsql、sqlite五大关系数据库的对象名称和转义字符》:本文主要介绍sqlserver、mysql、oracle、pgsql、sqlite五大... 目录一、转义符1.1 oracle1.2 sqlserver1.3 PostgreSQL1.4 SQLi

使用python生成固定格式序号的方法详解

《使用python生成固定格式序号的方法详解》这篇文章主要为大家详细介绍了如何使用python生成固定格式序号,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以参考一下... 目录生成结果验证完整生成代码扩展说明1. 保存到文本文件2. 转换为jsON格式3. 处理特殊序号格式(如带圈数字)4

Java使用Swing生成一个最大公约数计算器

《Java使用Swing生成一个最大公约数计算器》这篇文章主要为大家详细介绍了Java使用Swing生成一个最大公约数计算器的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下... 目录第一步:利用欧几里得算法计算最大公约数欧几里得算法的证明情形 1:b=0情形 2:b>0完成相关代码第二步:加

win10安装及配置Gradle全过程

《win10安装及配置Gradle全过程》本文详细介绍了Gradle的下载、安装、环境变量配置以及如何修改本地仓库位置,通过这些步骤,用户可以成功安装并配置Gradle,以便进行项目构建... 目录一、Gradle下载1.1、Gradle下载地址1.2、Gradle下载步骤二、Gradle安装步骤2.1、安

Java 的ArrayList集合底层实现与最佳实践

《Java的ArrayList集合底层实现与最佳实践》本文主要介绍了Java的ArrayList集合类的核心概念、底层实现、关键成员变量、初始化机制、容量演变、扩容机制、性能分析、核心方法源码解析、... 目录1. 核心概念与底层实现1.1 ArrayList 的本质1.1.1 底层数据结构JDK 1.7

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Linux join命令的使用及说明

《Linuxjoin命令的使用及说明》`join`命令用于在Linux中按字段将两个文件进行连接,类似于SQL的JOIN,它需要两个文件按用于匹配的字段排序,并且第一个文件的换行符必须是LF,`jo... 目录一. 基本语法二. 数据准备三. 指定文件的连接key四.-a输出指定文件的所有行五.-o指定输出