vanna

其他源码 2025-08-04
github PYPI文档gurubase

vanna

vanna是MIT许可的开源Python Rag(检索型生成),用于SQL生成和相关功能。

0802.MP4

vanna工作原理

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

  1. 在您的数据上训练抹布“模型”
  2. 问问题

如果您不知道抹布是什么,请不要担心 - 您不需要知道在引擎盖下如何使用它来使用它。您只需要知道您“训练”了一个模型,该模型存储了一些元数据,然后使用它来“问”问题。

有关在引擎盖下如何工作的更多详细信息,请参见基础类。

用户界面

这些是我们使用vanna构建的一些用户界面。您可以将这些原样或自定义接口的起点使用。

  • Jupyter笔记本
  • vanna -ai/ vanna -StreamLit
  • vanna -ai/ vanna -flask
  • vanna -ai/ vanna -slack

支持的LLM

  • Openai
  • 人类
  • 双子座
  • 拥抱面
  • AWS Bedrock
  • 霍拉马
  • Qianwen
  • Qianfan
  • Zhipu

支持的矢量店

  • Azuresearch
  • OpenSearch
  • PGVECTOR
  • 松果
  • Chromadb
  • faiss
  • 马克
  • 米尔维斯
  • QDRANT
  • 编织
  • Oracle

支持的数据库

  • Postgresql
  • mysql
  • Prestodb
  • Apache Hive
  • Clickhouse
  • 雪花
  • Oracle
  • Microsoft SQL Server
  • Bigquery
  • sqlite
  • DuckdB

入门

有关所需数据库,LLM等的详细信息,请参见文档。

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

安装

pip install vanna

可以安装许多可选软件包,因此请参阅文档以获取更多详细信息。

进口

如果您要自定义LLM或Vector数据库,请参见文档。

vanna.openai.openai_chat import OpenAI_Chat from vanna .chromadb.chromadb_vector import ChromaDB_VectorStore class My vanna (ChromaDB_VectorStore, OpenAI_Chat): def __init__(self, config=None): ChromaDB_VectorStore.__init__(self, config=config) OpenAI_Chat.__init__(self, config=config) vn = My vanna (config={'api_key': 'sk-...', 'model': 'gpt-4-...'}) # See the documentation for other options ">
 # The import statement will vary depending on your LLM and vector database. This is an example for OpenAI + ChromaDB

from vanna . openai . openai_chat import OpenAI_Chat
from vanna . chromadb . chromadb_vector import ChromaDB_VectorStore

class My vanna ( ChromaDB_VectorStore , OpenAI_Chat ):
    def __init__ ( self , config = None ):
        ChromaDB_VectorStore . __init__ ( self , config = config )
        OpenAI_Chat . __init__ ( self , config = config )

vn = My vanna ( config = { 'api_key' : 'sk-...' , 'model' : 'gpt-4-...' })

# See the documentation for other options 

训练

您可能需要或不需要运行这些VN.TRAIN命令,具体取决于您的用例。有关更多详细信息,请参见文档。

这些陈述显示为您如何工作。

用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?" )

您将获得SQL

 SELECT c . c_name as customer_name,
        sum ( l . l_extendedprice * ( 1 - l . l_discount )) as total_sales
FROM   snowflake_sample_data . tpch_sf1 .lineitem l join snowflake_sample_data . tpch_sf1 .orders o
        ON l . l_orderkey = o . o_orderkey join snowflake_sample_data . tpch_sf1 .customer c
        ON o . o_custkey = c . c_custkey
GROUP BY customer_name
ORDER BY total_sales desc limit 10 ;

如果您已连接到数据库,则可以获得表:

customer_name total_sales
0客户#000143500 6757566.0218
1客户#000095257 6294115.3340
2客户#000087115 6184649.5176
3客户#000131113 6080943.8305
4客户#000134380 6075141.9635
5客户#000103834 6059770.3232
6客户#000069682 6057779.0348
7客户#000102022 6039653.6335
8客户#000098587 6027021.5855
9客户#000064660 5905659.6159

您还将获得一个自动图表:

抹布与微调

抹布

  • 跨LLM的便携式
  • 易于删除培训数据(如果有任何一个都过时)
  • 跑步比微调便宜得多
  • 更多的未来 - 如果更好的LLM出现,您可以将其交换

微调

  • 如果您需要在提示中最大程度地减少令牌
  • 开始慢
  • 训练和跑步昂贵(通常)

为什么要vanna ?

  1. 复杂数据集的高精度。
    • vanna的功能与您提供的培训数据有关
    • 更多的培训数据意味着大型和复杂数据集的精度
  2. 安全而私密。
    • 您的数据库内容永远不会发送到LLM或矢量数据库
    • SQL执行发生在您的本地环境中
  3. 自我学习。
    • 如果使用jupyter,您可以在成功执行的查询中选择“自动训练”它
    • 如果通过其他接口使用,则可以使接口提示用户提供有关结果的反馈
    • 存储对SQL对的正确问题以供将来参考,并使未来的结果更加准确
  4. 支持任何SQL数据库。
    • 该软件包允许您连接到任何可以与Python连接的SQL数据库
  5. 选择您的前端。
    • 大多数人都从jupyter笔记本中开始。
    • 通过SlackBot,Web应用程序,简化应用程序或自定义前端暴露于最终用户。

扩展vanna

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

vanna 100秒

更多资源

  • 完整的文档
  • 网站
  • 支持小组支持
下载源码

通过命令行克隆项目:

git clone https://github.com/vanna-ai/vanna.git