|
Vanna[1]是一个开源 Python RAG(检索增强生成)框架,用于SQL生成和相关功能。   近期热文- 超强 OCR 新秀:支持 90 多种语言,性能超越云服务!
- 当 AI 遇上爬虫:让数据提取变得前所未有的简单!
- 2024 年最完整的 AI Agents 清单来了,涉及 13 个领域,上百个 Agents!
- 7.8K Star RAG 引擎:基于深度文档理解,最大程度降低幻觉、无限上下文快速完成 “大海捞针” 测试!
Vanna 主要特点- 开源:Vanna Python 软件包和各种前端集成都是开源的。您可以在自己的基础设施上运行 Vanna。
- 安全:您的数据库内容永远不会发送到 LLM,除非您启用了该功能。元数据存储层只能看到模式、文档和查询。
- 易集成:支持 Slackbot、Web App、Streamlit App 等多种集成方式。
- 自学习:随着您更多地使用 Vanna,您的模型会随着我们增加您的训练数据而不断改进。
- 复杂数据集的高准确性:Vanna 的能力与您提供的训练数据相关。更多的训练数据意味着大型复杂数据集的准确性更高。
- 支持多种数据库:开箱即用,支持
Snowflake、BigQuer和Postgres等数据库。还支持你自定义连接器来连接任何数据库。
 Vanna 工作流程 Vanna 只需两个简单的步骤:在数据上训练RAG 模型,然后提出问题,这些问题将返回 SQL 查询,这些查询可以设置为在数据库中自动运行。
 如果您不知道 RAG 是什么,也不要担心。您不需要知道它在幕后是如何工作的就可以使用它。您只需要知道您 “训练” 了一个模型,该模型存储一些元数据,然后用它来 “提出” 问题。 RAG vs Fine-TuningRAG- 面向未来,如果出现了更好的 LLM,你只需更换即可
Fine-Tuning- 如果您需要在提示符中尽量减少 token 消耗,它是不错的选择
Vanna 快速上手前置条件首先,需要根据Vanna 文档[2]配置数据库和使用的大语言模型。 安装 vannapipinstallvanna
使用 vanna#TheimportstatementwillvarydependingonyourLLMandvectordatabase.ThisisanexampleforOpenAI+ChromaDB
fromvanna.openai.openai_chatimportOpenAI_Chat fromvanna.chromadb.chromadb_vectorimportChromaDB_VectorStore
classMyVanna(ChromaDB_VectorStore,OpenAI_Chat): def__init__(self,config=None): ChromaDB_VectorStore.__init__(self,config=config) OpenAI_Chat.__init__(self,config=config)
vn=MyVanna(config={'api_key':'sk-...','model':'gpt-4-...'})
#Seethedocumentationforotheroptions
Vanna 模型训练使用 DDL 语句训练DDL 语句包含有关数据库中的表名、列、数据类型和关系的信息。 vn.train(ddl=""" CREATETABLEIFNOTEXISTSmy-table( idINTPRIMARYKEY, nameVARCHAR(100), ageINT ) """)
使用文档训练有些时候,您可能需要添加有关业务术语或定义的文档。 vn.train(documentation="OurbusinessdefinesXYZas...")
使用 SQL 语句训练您还可以将 SQL 查询添加到训练数据中。如果您已经有一些查询,这会很有用。您只需从编辑器中复制并粘贴这些内容即可开始生成新的 SQL。 vn.train(sql="SELECTname,ageFROMmy-tableWHEREname='JohnDoe'")
Vanna 生成 SQL你可以通过调用ask方法传入 Prompt 文本: vn.ask("Whatarethetop10customersbysales?")
之后,您将获得对应的 SQL 语句: SELECTc.c_nameascustomer_name, sum(l.l_extendedprice*(1-l.l_discount))astotal_sales FROMsnowflake_sample_data.tpch_sf1.lineitemljoinsnowflake_sample_data.tpch_sf1.orderso ONl.l_orderkey=o.o_orderkeyjoinsnowflake_sample_data.tpch_sf1.customerc ONo.o_custkey=c.c_custkey GROUPBYcustomer_name ORDERBYtotal_salesdesclimit10;
如果您已连接到 Vanna 提供的测试数据库,您将获得以下表格:  Vanna 还会自动生成绘图:  https://github.com/vanna-ai/vann
|