はじめに
VannaはMITライセンスのオープンソースPythonフレームワークで、RAG(Retrieval Augmented Generation)技術を使ってSQLクエリを生成することに特化している。ユーザはRAGモデルを訓練し、自分のデータに適用し、質問をすると、Vannaは対応するSQLクエリを返す。Vannaは、PostgreSQL、MySQL、Snowflakeなど、様々なデータベース用の様々な大規模言語モデル(LLM)とベクトルストレージソリューションをサポートしています。
機能一覧
- SQL生成自然言語を通して正確なSQLクエリを生成します。
- RAGモデルのトレーニングユーザーは、特定のデータに適合する独自のRAGモデルをトレーニングすることができます。
- マルチLLMサポートOpenAI、Anthropic、HuggingFace、その他多くのLLMと互換性があります。
- マルチ・ベクトル・ストレージのサポートAzureSearch、PineCone、ChromaDB、その他のベクターストアをサポート。
- マルチデータベース対応PostgreSQL、MySQL、Snowflake、その他多くのデータベースと互換性があります。
- ユーザーJupyter Notebook、Streamlit、Flaskなどのユーザーインターフェースを提供。
ヘルプの使用
設置プロセス
- バンナのインスタレーションpipを使ってVannaをインストールします。
pip install vanna
- オプションパッケージのインストールその他のオプションパッケージは必要に応じてインストールしてください。
使用プロセス
- インポート・バンナ使用するLLMとベクトルデータベースに応じて、適切なモジュールをインポートします。
from vanna.openai_chat import OpenAI_Chat
from vanna.chromadb import ChromaDB_VectorStore
class MyVanna(ChromaDB_VectorStore, OpenAI_Chat): def __init__(self, config=None): __init__(self, config=None)
def __init__(self, config=None):: __init__(self, config=None).
ChromaDB_VectorStore.__init__(self, config=config)。
OpenAI_Chat.__init__(self, config=config).
vn = MyVanna(config={'api_key': 'sk-...' , 'model': 'gpt-...モデル': 'gpt-4-...'})
- RAGモデルのトレーニング必要に応じてトレーニングコマンドを実行する。
vn.train(ddl_statements)
- SQLクエリの生成質問をすると、Vannaが適切なSQLクエリを返します。
sql_query = vn.ask("すべての顧客の名前を教えてください")
詳細な機能操作
- SQL生成ユーザーが自然言語で質問を入力すると、Vannaが自動的にSQLクエリを生成します。例えば、"Give me the names of all my customers "と入力すると、Vannaは対応するSQLクエリを生成します。
- RAGモデルのトレーニングユーザーは、SQL生成の精度を向上させるために、データに基づいてRAGモデルをトレーニングすることができます。トレーニングプロセスでは、Vannaがデータベースの構造と関係を理解するためのDDLステートメントを提供します。
- マルチLLMサポート: Vannaは様々な大規模言語モデルと互換性があり、ユーザーは必要に応じてSQL生成に適切なモデルを選択することができます。
- マルチ・ベクトル・ストレージのサポート: Vannaは様々なベクターストレージソリューションをサポートしています。
- マルチデータベース対応Vannaは様々なデータベースと互換性があり、ユーザーがデータベースの種類に応じて設定し、使用することができます。
- ユーザーVannaは様々なユーザーインターフェースを提供し、ユーザーはJupyter Notebook、Streamlit、Flaskなどのインターフェースを選択して便利に操作することができます。
サンプルコード
以下は、Vannaを使用してSQLクエリを生成する方法を示す完全なサンプルコードです:
from vanna.openai_chat import OpenAI_Chat
from vanna.chromadb import ChromaDB_VectorStore
class MyVanna(ChromaDB_VectorStore, OpenAI_Chat): def __init__(self, config=None): __init__(self, config=None)
def __init__(self, config=None):: __init__(self, config=None).
ChromaDB_VectorStore.__init__(self, config=config)。
OpenAI_Chat.__init__(self, config=config).
vn = MyVanna(config={'api_key': 'sk-...' , 'model': 'gpt-...モデル': 'gpt-4-...'})
# RAGモデルのトレーニング
vn.train(ddl_statements)
# SQLクエリを生成する
sql_query = vn.ask("Give me the names of all my customers")
print(sql_query)
SQL生成における関数RAGとは何ですか?
Vannaは、SQL生成における画期的な機能であるFunctionをご紹介いたします。 ラグ (Retrieval Enhanced Generation)です。この新しいオプションの実験的機能は、SQL生成の一貫性と決定性を強化するために設計されており、ユーザーからの多くの要望に応えます。
ファンクションRAGとは?
関数RAGは、従来の質問とSQLトレーニングのペアを呼び出し可能なテンプレート(別名、関数/ツール)に変換します。そして、ラージ言語モデル(LLM)がこれらのテンプレートを呼び出し、SQLクエリや関連する後処理コード(チャートコードなど)を生成します。重要なことは、関数RAGを使用する場合、ラージ・ランゲージ・モデル(LLM)は、使用されるSQLテンプレートと提供される必要のあるパラメータのみを決定することです。このアプローチは、より一貫性のある出力を保証するだけでなく、SQL生成プロセスを大幅にスピードアップします。
私たちはFunction RAG APIをオープンソースのPythonパッケージと区別するために、異なるドメインとブランドでリリースします。
ファンクションRAGの主な特徴
- テンプレート・ベースのSQL生成トレーニング・ペアをテンプレートに変換することにより、RAG関数は生成されるSQLが正確かつユーザーのクエリに関連したものであることを保証します。
- セキュリティ強化関数RAGはヒント・インジェクションとヒント・エスケープを減らし、SQL生成プロセスを外部からの操作から確実に保護します。
- ユーザー固有のクエリーユーザは、ユーザ ID などの情報を、データが上書きされるリスクなしにクエリに渡すことができます。これにより、"直近の10件の注文は?"といったパーソナライズされた質問を安全かつ効率的に実行できるようになりました。.
- 統合チャートコード生成SQLに加え、関数RAGはチャート・コードの生成も行います。
- 多言語サポートこの機能はGraphQL APIを通じてアクセスできるため、Pythonだけでなくあらゆるプログラミング言語から利用することが可能です。これにより、Ruby on Railsや.NETなどのフレームワークを含む様々なバックエンドへの統合の可能性が広がります。
実用
例えば、次のようなサンプル関数がある:
質問をするとき。vn.get_function(question=...)<span> </span>
最適な関数が見つかり、ラージ・ランゲージ・モデル(LLM)を使って必要なパラメータが埋められる。
問題を特定のユーザーに限定するには vn.get_function(question=...additional_data={"user_id": ...})<span> </span>
方法。これにより ユーザーID<span> </span>
パラメータは決定論的に設定される。
新しい関数を作成するには、手動で行う場合は vn.create_function(...)<span> </span>
メソッドを使うか、内蔵のウェブ・アプリケーションを使ってこのアクションを実行することができます。
手動で作成
vn.create_function(question=...sql=...plotly_code=...)
ウェブアプリケーション機能作成
関数RAGは、質問からパラメータのようなものを自動的に抽出し、関数のパラメータとして利用できるようにします。
使用時期
エンドユーザーが同じような質問をするバリアントがあり、エンジニアリングチームが手動で承認した特定のタイプの分析のみを実行できるようにしたい場合、Function RAGは、ユーザーが承認された分析のみを実行できるようにする素晴らしい方法です。
承認されたアナリティクスに制限することで、エンドユーザーは正しいデータを正しい方法で見ているという確信を持つことができます。SaaSアプリケーションに統合すれば、社内のビジネスユーザーやエンドユーザーの手に渡すことができます。
どのようなユーザーでもFunction RAGによるスピード向上の恩恵を受けることができます。しかし、データアナリストにとって、大量のトレーニングデータには存在しない新しい分析を行う場合、Vannaの残りのSQL生成機能にフォールバックしたいと思うかもしれません。Vannaがホストするベクトルデータベースを使用している場合、フォールバック機能は自動的に組み込みのWebアプリケーションに含まれます。 function_generation=True<span> </span>
.
GraphQL API統合
Pythonパッケージだけでなく、GraphQL APIを使ってFunction RAGを呼び出すことができるので、他の言語やフレームワークでも使うことができます。最も多く寄せられる要望は、Ruby on Railsでの利用です。
ユーザビリティ
Function RAGは、VannaのFree、Premium、Enterprise Editionプランの一部としてご利用いただけます。ファンクションRAGはVannaの v0.6.0<span> </span>
以降のバージョンでアクセスできる。