最近都在面试,拿了些offer保底,别人寒假的时候我努力,竞争的人不多,各位老板也能够投投试试。
开年的股市便是个笑话,明年春招难搞!自己仍是很想去抖音、拼多多等大厂的,走传统前/后端跟一群大佬去厮杀少量的HC,还不如另辟蹊径…
最近看牛客、Boss直聘上AIGC前端方向,有些大厂的招聘信息。这可能是条去大厂发财的好路子,开搞!
前语
前端搞全栈,复杂SQL是个难点。我之前写过一篇LangChain实战: 老喻干货店TextToSql,今日跟咱们分享Vanna, 一款根据RAG的自然语言生成SQL的工具。
Vanna
激动的心,哆嗦的手,点击右上角Get Start for Free,试用一下。经过邮箱认证后,咱们会拿到如下的API:
咱们来看下官方给的Demo:
# 装置vanna
!pip install vanna
# vanna.remote 供给拜访长途的数据库,这个很实用
from vanna.remote import VannaDefault
# 回来vn 实例
vn = VannaDefault(model='chinook', api_key='****')
# 连接数据库
vn.connect_to_sqlite('https://vanna.ai/Chinook.sqlite')
# 销售额排名前十的艺术家是?
vn.ask('What are the top 10 artists by sales?')
# 执行
from vanna.flask import VannaFlaskApp
VannaFlaskApp(vn).run()
从代码看,vanna仍是很强壮的。首先,它有VannaFlaskApp,把Text2SQL提升到App的高度,看来咱们使用vanna给全公司搭个TextToSql使用很方便了。从姓名看,VannaFlaskApp,底层以来Flask。其次,长途连接数据库的才能非常nice,实例化VannaDefault,传递给它模型和api_key,就能够连接长途数据库。最后,实例上的ask方法能够进行自然语言数据查询。这比我之前看在的Text2SQL 在工程化完备程度上好太多了。
- 分析sqlite文件
您先按这个地址将sqlite数据库下载下来,并使用vscode(sqlite viewer
插件)打开。 销售额排名前十的艺术家这个查询关联Artist、Album、Track、InvoiceLine三个表。截图我就不逐个给出,咱们能够自己看。
# 生成的SQL, 挺复杂的
SELECT a.ArtistId, a.Name, SUM(il.Quantity) AS TotalSales
FROM Artist a
INNER JOIN Album al ON a.ArtistId = al.ArtistId
INNER JOIN Track t ON al.AlbumId = t.AlbumId
INNER JOIN InvoiceLine il ON t.TrackId = il.TrackId
GROUP BY a.ArtistId, a.Name
ORDER BY TotalSales DESC
LIMIT 10;
# 查询成果
ArtistId Name TotalSales
0 90 Iron Maiden 140
1 150 U2 107
2 50 Metallica 91
3 22 Led Zeppelin 87
4 113 Os Paralamas Do Sucesso 45
5 58 Deep Purple 44
6 82 Faith No More 42
7 149 Lost 41
8 81 Eric Clapton 40
9 124 R.E.M. 39
Artist
表是艺术家表,有ArtistId 和 Name(艺术家姓名)两个字段。除此之外咱们还需要排名取前十位,并计算销售额。
InvoiceLine
是销售记载表,invoice
是发票的意思。InvoiceLine
里有一个TrackId
字段指向Track表。
Track表包含AlbumId字段,指向Album 艺术品表。
找到了AlbumId, 经过Album
表就能够找到ArtistId
。
天啊,这个表分的真够细!但这才是真实线上中大型项目的真实情况。而咱们要做的Text2SQL 企业版,要在技能、运营、小编、用户等都能够用起来,Vanna展现了它的强壮!
AI工具更新换代很快,很开心今日与Vanna的相见。就到这里,休息一下!下次再与咱们一同深入越野Vanna的领地越野。
总结
- Vanna官网
- Vanna 根据LLM,根据RAG
- 数据库不再是技能的专利,Text2SQL语义化查询带来数据库平权!Vanna好像能够投入生产。