前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一款热门的开源sql生成AI框架—Vanna

一款热门的开源sql生成AI框架—Vanna

作者头像
山行AI
发布2024-01-23 20:39:08
1.4K0
发布2024-01-23 20:39:08
举报
文章被收录于专栏:山行AI山行AI

Vanna

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

vannaquadrants

如何使用 Vanna

Vanna 的使用分为两个简单步骤 - 在你的数据上训练一个 RAG "模型",然后提出问题,该问题将返回可设置为自动在你的数据库上运行的 SQL 查询。

1.在你的数据上训练一个 RAG "模型"。2.提问

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

更多底层工作细节请参见基类[1]。

用户界面

这些是我们使用 Vanna 构建的一些用户界面。你可以直接使用这些界面,或者作为你自己定制界面的起点。

•Jupyter Notebook[2]•vanna-ai/vanna-streamlit[3]•vanna-ai/vanna-flask[4]•vanna-ai/vanna-slack[5]

入门

具体内容请参见文档[6],了解有关你想要的数据库、LLM 等的具体信息。

如果你想在训练后了解它是如何工作的,你可以尝试这个Colab 笔记本[7]。

安装

代码语言:javascript
复制
pip install vanna

有许多可选的包可以安装,具体请参见文档了解更多细节。

导入

如果你正在定制 LLM 或向量数据库,请参见文档。

代码语言:javascript
复制
import vanna as vn

训练

根据您的具体用例,您可能需要或不需要运行这些 vn.train 命令。更多细节请参阅文档[8]。

这些说明旨在让您了解其工作原理。

使用 DDL 语句训练

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

代码语言:javascript
复制
vn.train(ddl="""
    CREATE TABLE IF NOT EXISTS my-table (
        id INT PRIMARY KEY,
        name VARCHAR(100),
        age INT
    )
""")

使用文档训练

有时你可能想要添加有关你的业务术语或定义的文档。

代码语言:javascript
复制
vn.train(documentation="Our business defines XYZ as ...")

使用 SQL 训练

你还可以向你的训练数据中添加 SQL 查询。这在你已经有一些查询并希望直接从编辑器中复制粘贴以生成新的 SQL 时非常有用。

代码语言:javascript
复制
vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")

提问

代码语言:javascript
复制
vn.ask("What are the top 10 customers by sales?")

如果你连接到了数据库,你将得到以下表格:

CUSTOMER_NAME

TOTAL_SALES

0

Customer#000143500

6757566.0218

1

Customer#000095257

6294115.3340

2

Customer#000087115

6184649.5176

3

Customer#000131113

6080943.8305

4

Customer#000134380

6075141.9635

5

Customer#000103834

6059770.3232

6

Customer#000069682

6057779.0348

7

Customer#000102022

6039653.6335

8

Customer#000098587

6027021.5855

9

Customer#000064660

5905659.6159

你还会得到一个自动生成的 Plotly 图表:[9]

RAG 与精调 (Fine-Tuning) 对比

RAG:

•可以跨 LLM 使用•容易移除过时的训练数据•运行成本比精调低得多•更具未来性 -- 如果出现更好的 LLM,你可以直接替换

精调 (Fine-Tuning):

•如果你需要在提示中最小化令牌数量,这是个好选择•开始使用较慢•训练和运行成本较高(通常情况下)

为什么选择 Vanna?

1.在复杂数据集上的高准确性。•Vanna 的能力与你提供的训练数据相关•更多的训练数据意味着在大型和复杂的数据集上有更好的准确性2.安全且私密。•你的数据库内容永远不会发送给 LLM 或向量数据库•SQL 执行发生在你的本地环境中3.自我学习。•如果通过 Jupyter 使用,你可以选择在成功执行的查询上“自动训练”•如果通过其他界面使用,你可以让界面提示用户对结果提供反馈•正确的问题到 SQL 对会被存储以供将来参考,使未来的结果更加准确4.支持任何 SQL 数据库。•该包允许你连接到任何你可以通过 Python 连接的 SQL 数据库5.选择你的前端。•大多数人从 Jupyter 笔记本开始。•通过 Slackbot、Web 应用、Streamlit 应用或自定义前端向你的最终用户展示。

扩展 Vanna

Vanna 设计用于连接任何数据库、LLM 和向量数据库。有一个 VannaBase 抽象基类定义了一些基本功能。该包提供了与 OpenAI 和 ChromaDB 一起使用的实现。你可以轻松地扩展 Vanna 以使用你自己的 LLM 或向量数据库。更多细节请参见文档[10]。

引用

更多信息请参考:https://github.com/vanna-ai/vanna

References

[1] 基类: https://github.com/vanna-ai/vanna/blob/main/src/vanna/base/base.py [2] Jupyter Notebook: https://github.com/vanna-ai/vanna/blob/main/notebooks/getting-started.ipynb [3] vanna-ai/vanna-streamlit: https://github.com/vanna-ai/vanna-streamlit [4] vanna-ai/vanna-flask: https://github.com/vanna-ai/vanna-flask [5] vanna-ai/vanna-slack: https://github.com/vanna-ai/vanna-slack [6] 文档: https://vanna.ai/docs/ [7] Colab 笔记本: https://colab.research.google.com/github/vanna-ai/vanna/blob/main/notebooks/getting-started.ipynb [8] 文档: https://vanna.ai/docs/ [9] : https://github.com/vanna-ai/vanna/blob/main/img/top-10-customers.png [10] 文档: https://vanna.ai/docs/ [11] 完整文档: https://vanna.ai/docs/ [12] 网站: https://vanna.ai/ [13] 支持用的 Discord 群组: https://discord.gg/qUZYKHremx

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 山行AI 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Vanna
    • 如何使用 Vanna
      • 用户界面
        • 入门
          • 安装
          • 导入
          • 训练
          • 使用 DDL 语句训练
          • 使用文档训练
          • 使用 SQL 训练
        • 提问
          • RAG 与精调 (Fine-Tuning) 对比
            • 为什么选择 Vanna?
              • 扩展 Vanna
                • 引用
                  • References
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档