vanna-ai/vannaView GitHub Homepage for Latest Official Releases
基于RAG技术的开源Python框架,可通过自然语言与SQL数据库进行对话,实现准确的文本转SQL查询生成
MITPythonvannavanna-ai 20.6k Last Updated: April 10, 2025
Vanna.ai - 智能SQL生成框架详细介绍
项目概述
Vanna是一个MIT开源许可的Python RAG(检索增强生成)框架,专门用于SQL生成和相关功能。该项目允许用户通过自然语言与SQL数据库进行对话,实现准确的文本转SQL查询生成。
GitHub地址: https://github.com/vanna-ai/vanna
核心特性
🤖 智能对话
- 自然语言交互: 用户可以用普通话提问,系统自动生成对应的SQL查询
- 实时反馈: 支持用户对生成结果进行反馈,持续改进准确性
- 自我学习: 可以从成功执行的查询中自动学习,提高未来结果的准确性
📊 RAG技术架构
Vanna基于检索增强生成(RAG)技术,工作流程分为两个简单步骤:
- 训练阶段: 在您的数据上训练RAG"模型"
- 查询阶段: 提出问题,返回可自动在数据库上运行的SQL查询
🔄 广泛的数据库支持
支持多种主流数据库:
- PostgreSQL
- MySQL
- Microsoft SQL Server
- Oracle
- Snowflake
- BigQuery
- ClickHouse
- Apache Hive
- PrestoDB
- SQLite
- DuckDB
技术优势
相比传统微调方法的优势
- 便携性强: 可跨不同LLM使用
- 数据管理灵活: 易于移除过时的训练数据
- 成本效益: 比微调运行成本更低
- 面向未来: 可轻松替换更好的LLM
安全性保障
- 数据隐私: 数据库内容从不发送给LLM或向量数据库
- 本地执行: SQL执行在本地环境中进行
- 私有部署: 支持完全私有化部署
使用方式
安装
pip install vanna
基本配置
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, config=None):
ChromaDB_VectorStore.__init__(self, config=config)
OpenAI_Chat.__init__(self, config=config)
vn = MyVanna(config={'api_key': 'sk-...', 'model': 'gpt-4-...'})
训练模型
可以通过多种方式训练模型:
DDL语句训练:
vn.train(ddl="""
CREATE TABLE IF NOT EXISTS my-table (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
)
""")
业务文档训练:
vn.train(documentation="Our business defines XYZ as ...")
SQL查询训练:
vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")
查询使用
vn.ask("What are the top 10 customers by sales?")
系统会返回:
- 生成的SQL查询语句
- 执行结果表格
- 自动生成的Plotly图表
用户界面选项
Vanna提供多种用户界面:
- Jupyter Notebook: 适合数据分析师和开发者
- Web应用: 适合终端用户
- Streamlit应用: 快速原型开发
- Slackbot: 团队协作
- 自定义前端: 完全定制化解决方案
架构设计
Vanna采用模块化设计,基于抽象基类VannaBase,可以轻松扩展以使用不同的:
- 大语言模型: OpenAI、Claude、本地模型等
- 向量数据库: ChromaDB、Pinecone、Weaviate等
- 数据库连接器: 支持任何Python可连接的SQL数据库
应用场景
业务分析
- 非技术人员可以直接用自然语言查询数据
- 快速生成业务报告和分析
- 自动化常见的数据查询任务
开发效率
- 加速SQL开发过程
- 减少复杂查询的编写时间
- 提供查询优化建议
教育培训
- 帮助学习SQL语法
- 理解复杂查询结构
- 数据库最佳实践学习
总结
Vanna.ai是一个功能强大、易于使用的文本转SQL框架,它通过RAG技术和大语言模型的结合,让任何人都能够用自然语言与数据库进行交互。无论是数据分析师、开发者还是业务用户,都能从这个工具中受益,大大提高数据查询和分析的效率。