
不寫 SQL 也能查庫Vanna 2.0 自然語言轉 SQL 上手全記錄【免費下載鏈接】vanna Chat with your SQL database . Accurate Text-to-SQL Generation via LLMs using Agentic Retrieval .項目地址: https://gitcode.com/GitHub_Trending/va/vanna運營在群里問上個月銷售額 Top 10 的客戶是誰你要么手寫 SQL 截圖丟回去要么打開 BI 面板翻半天。Vanna 2.0 想替代的就是這個環節把自然語言問題交給大模型翻譯成 SQL執行后把表格、圖表流式吐回給提問的人。一句話定位它是庫不是服務Vanna 是一個 Python 框架核心鏈路是自然語言 → SQL → 數據答案靠 RAG 檢索把表結構、文檔、歷史 SQL 塞進提示詞來提高生成準確率。它適合兩類人想給產品加自然語言查數入口的開發者需要按用戶身份過濾數據的多租戶或企業團隊。注意它不是開箱即用的 SaaS——pip install vanna之后它是一個嵌進你自己 FastAPI/Flask 應用的庫。15 行代碼跑通最小示例裝包后把 SQLite 查詢工具注冊進 Agent 即可LLM 可換成 OpenAI、Anthropic、Ollama 等十幾種實現# pip install vanna from vanna import Agent, User from vanna.core.registry import ToolRegistry from vanna.tools import RunSqlTool from vanna.integrations.sqlite import SqliteRunner from vanna.integrations.anthropic import AnthropicLlmService tools ToolRegistry() tools.register(RunSqlTool(sql_runnerSqliteRunner(Chinook.sqlite))) agent Agent(llm_serviceAnthropicLlmService(), tool_registrytools) user User(idu1, usernamealice, permissions[]) async for comp in agent.send_message( useruser, message列出數據庫里所有的表, conversation_idc1): print(comp)跑完你會在終端依次看到思考進度、生成的 SQL 代碼塊、查詢結果表最后是一段自然語言總結。整個過程里 LLM 并沒有背下你的庫而是一次次調用 run_sql 工具。為什么生成的 SQL 比裸大模型靠譜它解決大模型不知道你的表長什么樣的問題做法是訓練 檢索兩段式先把建表 DDL、字段文檔、參考 SQL 語句生成嵌入存進向量庫提問時按語義搜出最相關的表和示例拼進提示詞再讓模型寫 SQL。表越多、業務黑話越重這一步收益越大——只把 schema 丟給模型裸跑和喂了上下文示例再跑準確率差距在倉庫的論文報告里有實測對比可看 papers/ai-sql-accuracy-2023-08-17.md。別問向量檢索細節問就是黑盒你只需要把 DDL 和常跑的 SQL 喂給它訓練。讓不同角色看到不同數據這是 Vanna 2.0 相對 1.x 最實際的改動用戶身份貫穿系統提示詞、工具執行、SQL 結果三層。你只需要實現一個 UserResolver從 JWT 或 cookie 里解析出用戶和所屬組class MyUserResolver(UserResolver): async def resolve_user(self, request_context): data self.decode_jwt(request_context.get_header(Authorization)) return User(iddata[id], emaildata[email], group_membershipsdata[groups])group_memberships是權限的鑰匙工具按組做訪問檢查沒權限的工具對該用戶直接不可見SQL 工具按用戶權限做行級過濾管理員才看得到 SQL 代碼塊每次查詢還會留下審計記錄。按用戶限流、配額控制則掛在生命周期鉤子上鉤子基類在 src/vanna/core/lifecycle/base.py。走查一遍 接進現有網站后端用 FastAPI 時把 Vanna 的聊天路由注冊到你已有的 app 上就得到一個/api/vanna/v2/chat_sse流式端點。前端一行搞定支持 React、Vue 或原生 HTMLvanna-chat sse-endpoint/api/vanna/v2/chat_sse/vanna-chat之后用戶體驗是問一句按銷售額給我 Top 10 客戶頁面先流式顯示處理進度然后出現可交互的數據表最后跟一張 Plotly 柱狀圖。倉庫里這張圖就是可視化工具對 Chinook 示例庫跑出來的產出邊界什么場景合適什么場景別用它適合內部數據分析入口、多租戶 SaaS 的按身份過濾數據、以及已有認證體系想快速掛一個聊天查數界面的團隊。不太適合的超復雜多表關聯報表準確率取決于你訓練的示例質量業務語義越重越要喂足夠的參考 SQL高并發在線服務每次提問都現場生成并執行 SQL不是預編譯查詢以及只想要個聊天框、不想維護 Python 服務的場景——前端組件再省后端 Agent 服務還是得你自己跑。具體支持哪些數據庫和 LLM看 src/vanna/integrations/ 目錄下的集成清單。如果你從 0.x 升級先讀 MIGRATION_GUIDE.md 里的 LegacyVannaAdapter 過渡方案?!久赓M下載鏈接】vanna Chat with your SQL database . Accurate Text-to-SQL Generation via LLMs using Agentic Retrieval .項目地址: https://gitcode.com/GitHub_Trending/va/vanna創作聲明:本文部分內容由AI輔助生成(AIGC),僅供參考