来源:互联网 更新时间:2026-08-02 13:13
在企业里,业务数据大多躺在关系型数据库里,想查个东西得写SQL,对非技术用户来说门槛不低。现在有了大模型,NL2SQL(自然语言转SQL)这条路似乎通了——你直接问一句“上个月华东区销售额最高的产品是哪几个”,模型就能帮你生成查询语句。但问题也随之而来:准确率够用吗?怎么让它落地?
之前我们聊过在笔记本上用Ollama跑Llama2、Gemma这些模型,再结合AnythingLLM搭个本地知识库做RAG。这次换一个更聚焦的场景:用NL2SQL做对话式数据查询。本文要介绍的开源项目Vanna,就是冲着这个方向来的——它提供了一套基于RAG的NL2SQL应用框架,而且完全可以在你手头的笔记本上跑起来。

在之前的两篇文章里(《在笔记本电脑上,轻松使用Gemma模型》《在笔记本电脑上,实现大模型检索增强生成》),已经铺垫了本地模型和RAG的基础。现在咱们再往前推一步:用Vanna把NL2SQL这件事落地到本地。
关系型数据库几乎支撑了所有企业应用。以往想查数据,要么找IT写SQL,要么去BI工具里拖拽。大模型的出现让我们可以直接“说人话”要数据,这就是NL2SQL的核心能力。
近年来,大模型在NL2SQL上的表现确实进步神速。但说实话,离“拿来即用”还有距离——准确率仍然不够稳。要让它在实际业务中扛得住,要么用高质量SQL问答语料做微调,要么像Vanna这样,靠RAG技术来兜底。
Vanna本质上就是一个基于RAG的NL2SQL框架。当用户提问时,它会先去知识库里检索相关的上下文——比如库表结构、字段说明、历史验证通过的问答对——把这些信息拼进prompt,再发给大模型,期望它生成更靠谱的SQL。流程大致如下:
(来源:https://vanna.ai/docs/)
这套方案最吸引人的地方是,它允许你按需选择组件:大模型可以换、数据库可以换、向量数据库和前端也能自由搭配。下面看具体怎么装。
动手之前先说一下环境:笔记本上已经装了Ollama,模型用的是DeepSeek-Coder 7B(代码能力不错)。关系型数据库选默认的SQLite,向量数据库用Chroma,前端直接用Vanna自带的Flask应用。具体可参考官方说明:https://vanna.ai/docs/sqlite-ollama-chromadb/
第一步:安装Vanna及Chroma向量数据库
pip install 'vanna[chromadb]'
第二步:创建demo.py,写入以下代码
from vanna.ollama import Ollama
from vanna.chromadb.chromadb_vector import ChromaDB_VectorStore
class MyVanna(ChromaDB_VectorStore, Ollama):
def __init__(self, config=None):
ChromaDB_VectorStore.__init__(self, config=config)
Ollama.__init__(self, config=config)
vn = MyVanna(config={'model': 'deepseek-coder:6.7b'})
# 连接SQLite,使用Vanna提供的样例数据库
vn.connect_to_sqlite('https://vanna.ai/Chinook.sqlite')
# 抽取数据库表结构DDL作为训练数据(只需执行一次)
df_ddl = vn.run_sql("SELECT type, sql FROM sqlite_master WHERE sql is not null")
for ddl in df_ddl['sql'].to_list():
vn.train(ddl=ddl)
# 启动前端Flask Web应用
from vanna.flask import VannaFlaskApp
app = VannaFlaskApp(vn)
app.run()
第三步:运行demo.py,浏览器打开 http://localhost:8084,就可以在界面上用自然语言问问题了。Vanna生成SQL后会自动执行,拿回DataFrame,再调用Plotly画图表。系统还附带一个反馈机制:如果你觉得某条SQL准确,可以点个赞,它就会被加入训练数据,知识库会越来越丰富。
RAG这套路到底能帮多大忙?Vanna官方做过实验,白皮书《How to get high SQL accuracy rates using AI》里给出了数据:
(来源:https://vanna.ai/blog/ai-sql-accuracy.html)
以GPT-4为例:
这个提升幅度说明,知识库的质量才是NL2SQL落地的关键。测试中,用Vanna自带的Chinook样例数据库跑了几个简单问题,能生成正确的SQL并画图,确实让人兴奋。
但换了个场景——把数据换成ChatGLM金融挑战赛的上市公司数据集——结果就不太乐观了:生成的SQL连基本字段都找不对。问题出在哪儿?下文拆解。
要让大模型生成准确的SQL,核心就是给它足够的、相关的上下文信息。构建高质量的训练数据(知识库)是Vanna能否实用的分水岭。
从测试暴露的问题来看,可以从三个方向改进:
不过话说回来,测试用的大多是整理过的样例数据。真实企业环境里,数据库可能有成百上千张表,关系复杂,字段命名也经常不按套路出牌。这种情况下,光靠Vanna的RAG框架和几个文档,落地难度很大。
如果需要商业化落地,大概率要在具体场景上构建成千上万条训练语料,做增量预训练和微调,才能保证体验。但构建知识库、做微调的成本确实不低。
所以,如果业务场景用户量不大、查询频次不高,投入产出比可能就不划算了。这种场合,不如考虑其他方案来得实在。
ThinkBook系列最新价格全解析:2026年选购避坑与实时询价指南
Ondo将于今日上线股票永续合约
暗黑4S14野蛮人终局BD攻略
区块链OTC交易所有哪几家比较正规?
Binance新增15种bStocks代币化证券为杠杆抵押资产
Meme币DOGS今晚上线!开局就解锁91%代币是否带来风险?
忍者必须死3极刃血影角色介绍
晶核艾尔莎角色盘点 晶核艾尔莎强度分析与实战表现
余姚的路虎4s店在哪个位置
彩云天气怎么看分钟级降雨预报 彩云天气精准预报方法【技巧】
五千元以下的笔记本几乎消失!经销商:至少一年看不到涨价尽头
Intel喜讯连连:18A工艺良率提升到85%、CPU将涨价15%
遗忘之海密室通关教程 遗忘之海密室全关卡解谜思路与难点解析
华为Mate 70系列首发的红枫镜头下放至千元档:全员普及原色影像
合集38个项目筹集5.406亿美元 Figure融资2亿
国家养老服务消费补贴上线京东
英伟达机器人团队在京沪深招人,聚焦具身智能等四大领域
一站式PDF转Markdown解决方案PDF3MD
硬刚苹果!华为9月新品阵容出炉:Mate 90系列、全新三折叠
微软Copilot AI漏洞可致敏感数据泄露,企业用户需及时更新
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc