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