LLMs之Vanna:Vanna(利用自然語言查詢數(shù)據(jù)庫的SQL工具+底層基于RAG)的簡介、安裝,、使用方法之詳細攻略
Vanna的簡介
Vanna是一個基于MIT許可的開源Python RAG(檢索增強生成)框架,用于SQL生成和相關(guān)功能,。
Vanna的工作原理分為兩個簡單步驟:在您的數(shù)據(jù)上訓(xùn)練一個RAG“模型”,然后提問問題,這將返回可以設(shè)置自動在您的數(shù)據(jù)庫上運行的SQL查詢。
>> 在您的數(shù)據(jù)上訓(xùn)練一個RAG“模型”,。
>> 提問問題,。
如果您不知道什么是RAG,不用擔(dān)心 - 您不需要知道在底層如何工作就能使用它。您只需要知道您需要“訓(xùn)練”一個模型,它會存儲一些元數(shù)據(jù),然后用它來“提問”問題,。
查看基類以獲取有關(guān)底層工作原理的更多詳細信息,。
Vanna.AI是一個基于語言模型的SQL代理,允許用戶通過簡單的自然語言問題獲得數(shù)據(jù)庫中的洞察信息。它提供開源的Python包以及各種前端集成方式,可以部署在自己的基礎(chǔ)設(shè)施上運行,。
>> 系統(tǒng)的準(zhǔn)確性取決于提供的訓(xùn)練數(shù)據(jù)量和質(zhì)量,更多的數(shù)據(jù)可以支持復(fù)雜數(shù)據(jù)集提高準(zhǔn)確率,。
>> 用戶數(shù)據(jù)庫內(nèi)容不會發(fā)送到語言模型,只有架構(gòu)、文檔和查詢信息存儲在元數(shù)據(jù)層中,從保障數(shù)據(jù)安全性,。
>> 使用越多,模型通過不斷增加訓(xùn)練數(shù)據(jù)會持續(xù)提升,實現(xiàn)自我學(xué)習(xí)效果,。
>> 支持許多常見數(shù)據(jù)庫如Snowflake、BigQuery,、Postgres,也可以通過連接器支持任意數(shù)據(jù)庫,。
>> 提供免費版和付費版兩種計劃,區(qū)別在于查詢限制和語言模型版本的不同。
>> 該系統(tǒng)強調(diào)以開源方式提供,保障數(shù)據(jù)安全并支持定制化部署是其一大賣點,。
GitHub地址:https://github.com/vanna-ai/vanna
文檔地址:Vanna Docs: How It Works
1,、用戶界面
這是我們使用Vanna構(gòu)建的一些用戶界面。您可以直接使用它們,或?qū)⑺鼈冏鳛樽远x界面的起點,。
2,、RAG vs. Fine-Tuning
RAG | 微調(diào) |
可在LLMs之間移植 如果數(shù)據(jù)變得過時,可以輕松刪除訓(xùn)練數(shù)據(jù) 比微調(diào)更便宜 更具未來性 - 如果有更好的LLM出現(xiàn),可以輕松替換 | 如果需要最小化提示中的標(biāo)記,可以選擇微調(diào) 啟動較慢 訓(xùn)練和運行費用昂貴(一般情況下) |
3、為什么選擇Vanna?
在復(fù)雜數(shù)據(jù)集上具有高準(zhǔn)確性 | Vanna的能力與您提供的訓(xùn)練數(shù)據(jù)密切相關(guān),。 更多的訓(xùn)練數(shù)據(jù)對于大型和復(fù)雜數(shù)據(jù)集的準(zhǔn)確性更有幫助,。 |
安全和私密 | 您的數(shù)據(jù)庫內(nèi)容永遠不會發(fā)送到LLM或向量數(shù)據(jù)庫。 SQL執(zhí)行發(fā)生在您的本地環(huán)境中,。 |
自學(xué)習(xí) | 如果通過Jupyter使用,您可以選擇在成功執(zhí)行的查詢上“自動訓(xùn)練”它,。 如果通過其他界面使用,您可以要求界面提示用戶對結(jié)果提供反饋。 正確的問題和SQL對存儲供將來參考,使未來的結(jié)果更準(zhǔn)確。 |
支持任何SQL數(shù)據(jù)庫 | 該軟件包允許您連接到您可以使用Python連接的任何SQL數(shù)據(jù)庫,。 |
選擇您的前端 | 大多數(shù)人從Jupyter Notebook開始,。 通過Slackbot、Web應(yīng)用程序,、Streamlit應(yīng)用程序或自定義前端向最終用戶公開,。 |
4、擴展Vanna
Vanna旨在連接到任何數(shù)據(jù)庫,、LLM和向量數(shù)據(jù)庫,。有一個VannaBase抽象基類定義了一些基本功能。該軟件包提供了與OpenAI和ChromaDB一起使用的實現(xiàn),。您可以輕松擴展Vanna以使用自己的LLM或向量數(shù)據(jù)庫,。詳細信息請參閱文檔。
Vanna的安裝和使用方法
查看文檔以獲取有關(guān)您所需數(shù)據(jù)庫,、LLM等的具體信息,。
如果您想在訓(xùn)練后了解其工作方式,可以嘗試此Colab筆記本。
1,、安裝
pip install vanna
有一些可選包可以安裝,詳細信息請參閱文檔,。
導(dǎo)入
如果您要自定義LLM或向量數(shù)據(jù)庫,請參閱文檔。
import vanna as vn
2,、訓(xùn)練
根據(jù)您的用例,您可能需要或不需要運行這些vn.train命令,。詳細信息請參閱文檔。
(1),、使用DDL語句訓(xùn)練
DDL語句包含有關(guān)數(shù)據(jù)庫中表名,、列、數(shù)據(jù)類型和關(guān)系的信息,。
vn.train(ddl="""
CREATE TABLE IF NOT EXISTS my-table (
id INT PRIMARY KEY,
name VARCHAR(100),
age INT
)
""")
(2),、使用文檔訓(xùn)練
有時您可能希望添加關(guān)于業(yè)務(wù)術(shù)語或定義的文檔。
vn.train(documentation="Our business defines XYZ as ...")
(3),、使用SQL訓(xùn)練
您還可以將SQL查詢添加到訓(xùn)練數(shù)據(jù)中,。如果您已經(jīng)有一些查詢可用,只需從編輯器中復(fù)制并粘貼它們即可開始生成新的SQL。
vn.train(sql="SELECT name, age FROM my-table WHERE name = 'John Doe'")
3,、提問問題
vn.ask("What are the top 10 customers by sales?")
您將得到SQL查詢結(jié)果,以及連接到數(shù)據(jù)庫時的表格和自動生成的Plotly圖表。
Vanna的應(yīng)用案例
更新中……
1,、基礎(chǔ)用法
!pip install vanna
import vanna
from vanna.remote import VannaDefault
vn = VannaDefault(model='chinook', api_key=vanna.get_api_key('my-email@example.com'))
vn.connect_to_sqlite('https:///Chinook.sqlite')
vn.ask('What are the top 10 artists by sales?')
from vanna.flask import VannaFlaskApp
VannaFlaskApp(vn).run()