Home
Login

基于RAG技术的开源Python框架,可通过自然语言与SQL数据库进行对话,实现准确的文本转SQL查询生成

MITPython 18.3kvanna-ai Last Updated: 2025-04-10

Vanna.ai - 智能SQL生成框架详细介绍

项目概述

Vanna是一个MIT开源许可的Python RAG(检索增强生成)框架,专门用于SQL生成和相关功能。该项目允许用户通过自然语言与SQL数据库进行对话,实现准确的文本转SQL查询生成。

GitHub地址: https://github.com/vanna-ai/vanna

核心特性

🤖 智能对话

  • 自然语言交互: 用户可以用普通话提问,系统自动生成对应的SQL查询
  • 实时反馈: 支持用户对生成结果进行反馈,持续改进准确性
  • 自我学习: 可以从成功执行的查询中自动学习,提高未来结果的准确性

📊 RAG技术架构

Vanna基于检索增强生成(RAG)技术,工作流程分为两个简单步骤:

  1. 训练阶段: 在您的数据上训练RAG"模型"
  2. 查询阶段: 提出问题,返回可自动在数据库上运行的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技术和大语言模型的结合,让任何人都能够用自然语言与数据库进行交互。无论是数据分析师、开发者还是业务用户,都能从这个工具中受益,大大提高数据查询和分析的效率。