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技術和大語言模型的結合,讓任何人都能够用自然語言與數據庫進行交互。無論是數據分析師、開發者還是業務用戶,都能從這個工具中受益,大大提高數據查詢和分析的效率。