我们在日常的工作中除了非结构化数据外,总会有一些表格数据感到很棘手不好拆分,做问答准确率也不高;例外还有一些结构化的数据需要处理,这个时候如果大模型能输出结构化的查询语句,那就很妙了。今天介绍一款在GitHub上面10.1k star的项目,感觉用起来很简单。
这个仓库名为Vanna,是一个开源项目,它是一个基于Python的RAG(Retrieval-Augmented Generation,检索增强型生成)框架,专门用于SQL生成和相关功能。以下是该项目的主要特点和功能:
开源许可:Vanna是在MIT许可下发布的,这意味着它可以自由地被用于商业和非商业项目。
框架目的:它旨在通过使用大型语言模型(LLMs)来生成准确的SQL查询,这些查询可以自动运行在用户的数据库上。
图片
图片
工作原理:Vanna的工作分为两个简单的步骤:
训练训练一个RAG模型到你的数据上。
提出问题,这些问题将返回可以设置为自动运行在你的数据库上的SQL查询。
图片
用户界面:项目提供了一些使用Vanna构建的用户界面示例,包括Jupyter Notebook、Streamlit、Flask和Slack集成,用户可以按原样使用或作为自定义界面的起点。
运行所需要的依赖环境:
pip install vanna
配置模型也非常简单:
# 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 MyVanna(ChromaDB_VectorStore, OpenAI_Chat): def __init__(self, cnotallow=None): ChromaDB_VectorStore.__init__(self, cnotallow=config) OpenAI_Chat.__init__(self, cnotallow=config) vn = MyVanna(cnotallow={'api_key': 'sk-...', 'model': 'gpt-4-...'}) # 使用自己的模型 # vn = MyVanna(cnotallow={'path': '/path/to/chromadb'})
添加参考数据向量化和入库,用于检索混合加入prompt. Vanna可以通过DDL语句、文档和SQL查询来训练,这有助于模型理解数据库的结构和业务术语。
添加DDL语句:
vn.train(ddl=""" CREATE TABLE IF NOT EXISTS my-table ( id INT PRIMARY KEY, name VARCHAR(100), age INT ) """)
添加文档:
vn.train(documentatinotallow="Our business defines XYZ as ...")
添加SQL语句:
vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")
提问和生成SQL:用户可以向训练好的模型提问,模型将生成相应的SQL查询代码。
vn.ask("What are the top 10 customers by sales?")
RAG与微调(Fine-Tuning):Vanna使用RAG技术而不是传统的微调,这使得它在跨不同LLMs的可移植性、数据更新的便捷性、运行成本和未来适应性方面具有优势。
在复杂数据集上具有高精度。
Vanna 的能力与您提供给它的训练数据相关联
更多的训练数据意味着对于大型和复杂的数据集,准确性更高
安全且私密。
您的数据库内容永远不会发送到 LLM 或向量数据库
SQL 执行在本地环境中进行
自学习。
如果通过 Jupyter 使用,您可以选择在成功执行的查询上“自动训练”它
如果通过其他接口使用,您可以让接口提示用户提供有关结果的反馈
将存储对 SQL 的正确问题以供将来参考,并使未来的结果更加准确
支持任何 SQL 数据库。
该包允许您连接到任何 SQL 数据库,否则您可以使用 Python 连接到这些数据库
随意选择前端。
大多数人从 Jupyter Notebook 开始。
通过 Slackbot、Web 应用、Streamlit 应用或自定义前端向最终用户展示。
6. 扩展性:
Vanna设计用于连接任何数据库、LLM和向量数据库,项目提供了OpenAI和ChromaDB的实现,并且可以轻松扩展以使用自定义的LLM或向量数据库。
# 项目地址 https://hub.yzuu.cf/vanna-ai/vanna # 仓库文档 https://vanna.ai/docs/postgres-openai-standard-other-vectordb/