| github | PYPI | 文档 | gurubase |
|---|---|---|---|
vanna
vanna是MIT许可的开源Python Rag(检索型生成),用于SQL生成和相关功能。
0802.MP4
vanna工作原理
vanna在两个简单的步骤中工作 – 在数据上训练抹布“模型”,然后提出问题,这些问题将返回可以设置可以在数据库上自动运行的SQL查询。
- 在您的数据上训练抹布“模型” 。
- 问问题。
如果您不知道抹布是什么,请不要担心 – 您不需要知道在引擎盖下如何使用它来使用它。您只需要知道您“训练”了一个模型,该模型存储了一些元数据,然后使用它来“问”问题。
有关在引擎盖下如何工作的更多详细信息,请参见基础类。
用户界面
这些是我们使用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 ?
- 复杂数据集的高精度。
- vanna的功能与您提供的培训数据有关
- 更多的培训数据意味着大型和复杂数据集的精度
- 安全而私密。
- 您的数据库内容永远不会发送到LLM或矢量数据库
- SQL执行发生在您的本地环境中
- 自我学习。
- 如果使用jupyter,您可以在成功执行的查询中选择“自动训练”它
- 如果通过其他接口使用,则可以使接口提示用户提供有关结果的反馈
- 存储对SQL对的正确问题以供将来参考,并使未来的结果更加准确
- 支持任何SQL数据库。
- 该软件包允许您连接到任何可以与Python连接的SQL数据库
- 选择您的前端。
- 大多数人都从jupyter笔记本中开始。
- 通过SlackBot,Web应用程序,简化应用程序或自定义前端暴露于最终用户。
扩展vanna
vanna旨在连接到任何数据库,LLM和向量数据库。有一个vanna基础抽象基类,可以定义一些基本功能。该软件包提供了与OpenAI和Chromadb一起使用的实现。您可以轻松地扩展vanna以使用自己的LLM或Vector数据库。有关更多详细信息,请参见文档。
vanna 100秒
<span aria-label=\"Video description vanna -in-100秒-480.mov“ class =” M-1“> vanna -in-100秒-480.mov
更多资源
- 完整的文档
- 网站
- 支持小组支持
