19.5k star!这款开源工具竟让查数据库如聊天般简单,非技术党福音

SQL 语言,对于很多非技术类同学来说,可能根本看不明白,如果想查数据库里的数据,一看到 SQL 就头大。

本来业务上的问题挺简单的,结果卡在写查询 sql 语句这一步,还得麻烦技术岗的同事来帮忙,来回沟通特别耽误事,一下就把这事儿整复杂了。

而且现在数据越来越多,真的急需一种不用写代码就能查数据的办法,接下来推荐的这款开源工具就可以解决这个痛点。


有了这款工具,我们可以畅想以下场景,电商行业里,运营可以直接问它 “最近一周卖得最好的前 10 个商品是啥”;

金融领域的分析师查 “这个月各个支行放了多少贷款” 也很方便;

科研人员统计实验数据时,不用再等着技术人员写 SQL 了,自己就能搞定。

认识 Vanna

Vanna 这个工具是真不错,它是一款开源 Python RAG 框架。目前已收获了 19.5k star,可见其火爆程度。


它最牛的地方就是能把咱们说的大白话转成 SQL,普通用户不用学编程,直接用日常说话的方式提问就行。

同时该工具是基于 MIT 许可的,这是一种非常宽松的开源许可协议,可以直接拿来商用的。

而且这工具还能自主学习,用得越久,生成 SQL 就越准,后面我来详细讲讲。


Vanna 是怎样炼成的?

它的核心依然是 RAG 技术,简单说就是把向量数据库和大语言模型(LLM)结合起来用。这样就能解决大模型生成 SQL 时容易瞎编乱造和幻觉的问题,生成的 SQL 准确率能提高不少。

要知道,处理数据类的问题,可不能随便出错呢。

那么 Vanna 是如何工作的呢?

这里我分两阶段来介绍,每个阶段又分好几步:

训练阶段:将你的数据库表结构、相关文档、以前写好的 SQL 例子这些东西,都会被处理成向量存在向量数据库里 Embedding 化,相当于给系统 “喂” 知识。

问题处理阶段:用户用自然语言提问后,系统先从向量数据库里找出相关的背景信息,然后让大模型生成 SQL,接着执行这个 SQL,最后把查询结果返回,还能自动生成简单的图表,更加让你看得明白。


Vanna 的优势

Vanna 这款开源工具有下面四个我认为的优势点。

(一)高准确率

只要给够训练数据,比如把表结构信息和 SQL 例子准备全了,就算是复杂的数据集,它生成 SQL 的准确率也挺高的。

这点很重要,是类似 NL2SQL 类工具的基石。

(二)安全隐私

这点同样也很重要,数据库里的内容不会上传到外部服务器,所有 SQL 都是在本地执行的,数据安全和隐私都能保证,再加上开源可本地化部署,更是可以成为个人或企业的内部得力助手。

(三)自学习能力

每次成功执行的查询,都会自动变成训练数据,系统自己就学着优化了,用的时间越长,效果就越好,不用手动一直调。

这就是我前面说的自主学习能力,能够自己训练,自己提升,想想也是够强的了。

(四)多数据库和多模型支持

它支持的东西特别多,向量数据库像 主流的 Milvus、ChromaDB、FAISS 都能用;大模型不管是 GPT 系列还是 Llama 系列、Qwen、智谱等也能兼容;数据库类型也支持多种,用起来很灵活。

所以他们才敢在介绍中贴上下面这张图,任意 SQL 数据库、任意前端、任意 LLM、任意向量存储它都能连进来,就像一个万能连接器一样。


Vanna 的使用方法

(一)安装与初始化

安装特简单,用 pip 命令就行:

pip install vanna

导入和初始化的代码也不复杂:

from vanna.remote import VannaDefaultapi_key = "your_api_key"  vanna_model_name = "your_model_name"vn = VannaDefault(model=vanna_model_name, api_key=api_key)

(二)连接数据库

用 vn.run_sql 这个函数就能连数据库,像 MySQL、PostgreSQL、SQL Server 这些常用的数据库都能搞定,不用单独装一堆驱动。

vn.run_sql = lambda sql: pd.read_sql(sql, engine)

(三)训练系统

可以用数据库的 DDL 语句、说明文档、现成的 SQL 查询来训练它。比如这样:

vn.train(ddl="CREATE TABLE users (id INT, name VARCHAR(100))")vn.train(documentation=" 这是用户表,存着用户的基本信息")vn.train(sql="SELECT name FROM users WHERE id = 1")

(四)提问与获取结果

用户直接问 “查一下 id 是 1 的用户叫啥名”,Vanna 就会自动生成对应的 SQL,执行完之后把结果返回,还会把生成的 SQL 语句和结果说明一起给出来,巨方便。

vn.ask("What are the top 10 customers by sales?")

结语

Vanna 是真的解决了非技术人员查数据库的难题,让更多人能直接参与到数据分析里来。

作为开源工具,它能自己扩展的地方也很多,以后估计能支持更多数据库类型,处理更复杂的查询场景,在数据处理这块肯定能有不错的发展,咱们也 follow 起来玩玩。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容