RAG做SQL生成处理表格,一个10.1k※的开源工具Vanna

开发 前端
Vanna是一个开源项目,它是一个基于Python的RAG(Retrieval-Augmented Generation,检索增强型生成)框架,专门用于SQL生成和相关功能。

我们在日常的工作中除了非结构化数据外,总会有一些表格数据感到很棘手不好拆分,做问答准确率也不高;例外还有一些结构化的数据需要处理,这个时候如果大模型能输出结构化的查询语句,那就很妙了。今天介绍一款在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

  1. 在复杂数据集上具有高精度。
  • Vanna 的能力与您提供给它的训练数据相关联
  • 更多的训练数据意味着对于大型和复杂的数据集,准确性更高
  1. 安全且私密。
  • 您的数据库内容永远不会发送到 LLM 或向量数据库
  • SQL 执行在本地环境中进行
  1. 自学习。
  • 如果通过 Jupyter 使用,您可以选择在成功执行的查询上“自动训练”它
  • 如果通过其他接口使用,您可以让接口提示用户提供有关结果的反馈
  • 将存储对 SQL 的正确问题以供将来参考,并使未来的结果更加准确
  1. 支持任何 SQL 数据库。
  • 该包允许您连接到任何 SQL 数据库,否则您可以使用 Python 连接到这些数据库
  1. 随意选择前端。
  • 大多数人从 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/


责任编辑:武晓燕 来源: 哎呀AIYA
相关推荐

2024-10-09 11:14:37

2024-08-19 09:40:00

人工智能诊断

2020-09-01 11:00:08

OnionShare开源工具Linux

2022-02-12 12:18:59

Delta Chat聊天应用开源

2022-02-22 22:59:16

开源监控工具

2019-07-24 14:49:48

SQL开源库BI软件

2020-11-04 09:56:13

开源技术 go

2019-01-15 10:02:06

Kubernetes开源工具微服务

2020-09-28 15:55:32

开源技术 工具

2010-05-12 16:52:11

Oracle备份工具

2018-11-09 09:40:52

2016-05-25 10:14:04

开源数据管道 ETL

2018-11-16 09:10:13

TerminalizeGif图像Linux

2013-03-18 10:31:22

JS异常

2022-05-09 09:52:28

K8sLens开源

2015-04-20 11:22:04

SQL慢查询优化

2015-07-29 10:00:16

开源项目

2021-09-29 15:49:37

Exchange开源用户开发者

2021-03-31 13:28:17

开源工具Python编程语言

2024-10-09 17:10:05

点赞
收藏

51CTO技术栈公众号