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

MySQLService Mesh
Vanna

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

picture.image

picture.image

vannaquadrants

如何使用 Vanna

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

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

picture.image

如果你不知道什么是 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]。

安装


        
            

          pip install vanna
        
      

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

导入

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


        
            

          import vanna as vn
        
      

picture.image

训练

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

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

使用 DDL 语句训练

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


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

使用文档训练

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


        
            

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

使用 SQL 训练

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


        
            

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

提问


        
            

          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]

picture.image

RAG 与精调 (Fine-Tuning) 对比

RAG:

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

精调 (Fine-Tuning):

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

为什么选择 Vanna?

在复杂数据集上的高准确性。 •Vanna 的能力与你提供的训练数据相关 •更多的训练数据意味着在大型和复杂的数据集上有更好的准确性

安全且私密。 •你的数据库内容永远不会发送给 LLM 或向量数据库 •SQL 执行发生在你的本地环境中

自我学习。 •如果通过 Jupyter 使用,你可以选择在成功执行的查询上“自动训练” •如果通过其他界面使用,你可以让界面提示用户对结果提供反馈 •正确的问题到 SQL 对会被存储以供将来参考,使未来的结果更加准确

支持任何 SQL 数据库。 •该包允许你连接到任何你可以通过 Python 连接的 SQL 数据库

选择你的前端。 •大多数人从 Jupyter 笔记本开始。 •通过 Slackbot、Web 应用、Streamlit 应用或自定义前端向你的最终用户展示。

扩展 Vanna

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

更多资源

• 完整文档[11]

• 网站[12]

• 支持用的 Discord 群组[13]

引用

更多信息请参考: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

0
0
0
0
关于作者
关于作者

文章

0

获赞

0

收藏

0

相关资源
CV 技术在视频创作中的应用
本次演讲将介绍在拍摄、编辑等场景,我们如何利用 AI 技术赋能创作者;以及基于这些场景,字节跳动积累的领先技术能力。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论