链载Ai

标题: RAG做SQL生成处理表格,一个10.1k※的开源工具vanna [打印本页]

作者: 链载Ai    时间: 5 小时前
标题: RAG做SQL生成处理表格,一个10.1k※的开源工具vanna

我们在日常的工作中除了非结构化数据外,总会有一些表格数据感到很棘手不好拆分,做问答准确率也不高;例外还有一些结构化的数据需要处理,这个时候如果大模型能输出结构化的查询语句,那就很妙了。今天介绍一款在GitHub上面10.1k star的项目,感觉用起来很简单。

这个仓库名为Vanna,是一个开源项目,它是一个基于Python的RAG(Retrieval-Augmented Generation,检索增强型生成)框架,专门用于SQL生成和相关功能。以下是该项目的主要特点和功能:

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-left: 4px solid rgb(248, 57, 41);">项目介绍

开源许可:Vanna是在MIT许可下发布的,这意味着它可以自由地被用于商业和非商业项目。
框架目的:它旨在通过使用大型语言模型(LLMs)来生成准确的SQL查询,这些查询可以自动运行在用户的数据库上。

运行流程图
工作原理:Vanna的工作分为两个简单的步骤:

用户界面:项目提供了一些使用Vanna构建的用户界面示例,包括Jupyter Notebook、Streamlit、Flask和Slack集成,用户可以按原样使用或作为自定义界面的起点。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-left: 4px solid rgb(248, 57, 41);">环境搭建

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);text-align: left;">运行所需要的依赖环境:

pipinstallvanna

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-left: 4px solid rgb(248, 57, 41);">模型加载

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;letter-spacing: 0.544px;background-color: rgb(255, 255, 255);text-align: left;">配置模型也非常简单:

# The import statement will vary depending on your LLM and vector database. This is an example for OpenAI + ChromaDB
fromvanna.openai.openai_chatimportOpenAI_Chatfromvanna.chromadb.chromadb_vectorimportChromaDB_VectorStore
class MyVanna(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-...'})#使用自己的模型# vn = MyVanna(config={'path': '/path/to/chromadb'})

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-left: 4px solid rgb(248, 57, 41);">模型训练


添加参考数据向量化和入库,用于检索混合加入prompt. Vanna可以通过DDL语句、文档和SQL查询来训练,这有助于模型理解数据库的结构和业务术语。
添加DDL语句:
vn.train(ddl="""CREATETABLEIFNOTEXISTSmy-table(idINTPRIMARYKEY,nameVARCHAR(100),ageINT)""")
添加文档:
vn.train(documentation="OurbusinessdefinesXYZas...")
添加SQL语句:
vn.train(sql="SELECTname,ageFROMmy-tableWHEREname='JohnDoe'")
提问和生成SQL:用户可以向训练好的模型提问,模型将生成相应的SQL查询代码。
vn.ask("Whatarethetop10customersbysales?")
RAG与微调(Fine-Tuning):Vanna使用RAG技术而不是传统的微调,这使得它在跨不同LLMs的可移植性、数据更新的便捷性、运行成本和未来适应性方面具有优势。

ingFang SC", "Hiragino Sans GB", "Microsoft YaHei UI", "Microsoft YaHei", Arial, sans-serif;border-left: 4px solid rgb(248, 57, 41);">为什么选择Vanna

  1. 在复杂数据集上具有高精度。






欢迎光临 链载Ai (https://www.lianzai.com/) Powered by Discuz! X3.5