page contents

Vanna:不写一行 SQL,用自然语言访问数据库的Python框架

Vanna 是一款基于 MIT 许可证的开源 Python 框架,融合了 RetrievalAugmented Generation(RAG)技术,专注于自动生成 SQL 查询、文档检索与业务问答。无需掌握复杂原理,仅需“训练,提问”,便能让数据自主发声,从此告别手写 SQL 的繁琐。

attachments-2026-05-2sskamok6a067585a871c.png

Vanna 是一款基于 MIT 许可证的开源 Python 框架,融合了 RetrievalAugmented Generation(RAG)技术,专注于自动生成 SQL 查询、文档检索与业务问答。无需掌握复杂原理,仅需“训练,提问”,便能让数据自主发声,从此告别手写 SQL 的繁琐。

Vanna 的核心原理
Vanna 通过向量检索与大型语言模型(LLM)的深度融合,实现高质量 SQL 合成。使用流程仅需两步:

1.调用vn.train()接口加载 DDL、业务文档或示例 SQL;

2.通过vn.ask()输入自然语言问题,立刻获得符合预期的可执行 SQL。

丰富的用户界面
社区已提供多种即插即用的 UI:

•Jupyter Notebook 示例

•vanna-streamlit Web 应用

•vanna-flask REST 服务

•vanna-slack Slack 机器人
你也可以基于官方 SDK,快速构建自定义前端或嵌入式插件,满足各类业务场景需求。

多样化的后端支持
Vanna 支持主流 LLM 与向量数据库,并可灵活切换:

•LLM:OpenAI、Anthropic、Gemini、HuggingFace、AWS Bedrock、Ollama 等

•向量库:ChromaDB、FAISS、Milvus、Qdrant、Weaviate、Marqo、PineCone 等

•SQL 数据库:PostgreSQL、MySQL、ClickHouse、Snowflake、BigQuery、SQLite、DuckDB、Oracle 等

快速上手指南

1.安装:

pip install vanna 

2.创建自定义类(以 OpenAI + ChromaDB 为例):

from vanna.openai.openai_chat importOpenAI_Chat
from vanna.chromadb.chromadb_vector importChromaDB_VectorStore

classMyVanna(ChromaDB_VectorStore,OpenAI_Chat):
def__init__(self, config):
ChromaDB_VectorStore.__init__(self, config=config)
OpenAI_Chat.__init__(self, config=config)

vn =MyVanna(config={'api_key':'sk-...','model':'gpt-4'})

3.训练并提问,马上体验神奇效果。

训练与提问示例

•加载 DDL:

vn.train(ddl="""
    CREATE TABLE IF NOT EXISTS orders (
        id INT PRIMARY KEY,
        customer_id INT,
        total DECIMAL
    )
""")

•添加业务文档:

vn.train(documentation="我们的VIP客户定义为年度消费超10万人民币的用户。")

•导入示例 SQL:

vn.train(sql="SELECT customer_id, SUM(total) FROM orders GROUP BY customer_id;")

•提问并获取结果:

vn.ask("年度前十名VIP客户及其消费总额?")

Vanna 会返回对应的 SQL 语句,并在连库后自动呈现表格和 Plotly 图表。

RAG vs FineTuning 的抉择

•RAG:跨模型可移植、训练成本低、无需微调,未来更易升级。

•FineTuning:适合对 Prompt 长度有极致控制需求的场景,但训练周期长、费用高。

为什么选择 Vanna?

•高准确:基于业务数据训练,直击复杂场景

•安全私有:数据和查询在本地执行,无风险外泄

•自学习:成功问答对自动入库,不断提升模型精度

•任意数据库:兼容所有 Python 驱动支持的 SQL 系统

•灵活前端:Notebook、Web、Slack、Streamlit 等多种形态

•易于扩展:只需继承抽象基类,即可接入新 LLM 或向量库

深度扩展与定制
Vanna 提供VannaBase抽象基类,定义了训练与检索核心接口。开发者可参照官方文档,自行实现新的 LLM 适配器或向量存储,全面满足个性化业务需求。

总结
Vanna 以简洁两步流程、秒级响应和强大生态,连接自然语言与 SQL 查询,显著提升数据分析、BI 可视化和应用开发效率。无论是 PB 级大数据场景,还是实时在线查询,Vanna 都能稳定可靠地助力团队实现数据驱动的智能化升级。

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2026-05-15 09:23
  • 阅读 ( 28 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

2059 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2228 文章
  3. Pack 2059 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章