ChatSQL: ChatGPT を有効にしてプレーンテキストで SQL クエリを作成できるようにする

ChatSQL: ChatGPT を有効にしてプレーンテキストで SQL クエリを作成できるようにする

翻訳者 |ブガッティ

レビュー | Chonglou

ChatGPT2020年6月リリースされ OpenAIによって開発されました。それは多くの分野革命的な変化をもたらしました。これらの領域の 1 つは、データベース クエリの作成です ChatGPTを介してプレーンテキストからデータベースクエリを生成できますあまりよく知らないデータベースを理解するのに役立ちます

ChatGPT人気により、人工知能は徐々に私たちの日常生活組み込まれ、急速に発展しています本題に入る ChatGPTについて簡単に見てみましょう

ChatGPTの機能を完全に理解するにはその基盤となるアーキテクチャを完全に把握する必要がありますChatGPTGPTアーキテクチャ基づいて開発されていますそれではまずTransformerを見てみましょう

プロジェクトに直接アクセスするには、ここをクリックしてください: https://github.com/ademakdogan/ChatSQL?ref=hackernoon.com。

図1. Transformerのエンコーダとデコーダ

Transformer はseq2seqフレームワークを使用して、あるシーケンスを別のシーケンス変換できます。シーケンスは順序を定義します。たとえば、文を単語の連続として考えることができます Transformer は、テキスト翻訳などの自然言語処理(NLP)の問題を解決するためにも使用できます。このアーキテクチャをトレーニングするには、大量のラベル付きデータが必要です。これをトランスフォーマーが学習するのは困難ですこの問題を解決するには転移学習を使用することができますTransformer は、エンコーダーとデコーダーの 2 つの部分(1を参照)構成されており、どちらも巧みな言語表現を取得するのに優れています。

この能力により、各部分から言語モデルを構築できるようになりますエンコーダー積み重ねることで、トランスフォーマーの双方向エンコーダー表現(一般にBERTと呼ばれる)が得られます同様に、デコーダーユニットを積み重ねることで、生成的事前トレーニング(つまり、 GPT を取得できますこのではGPTのみ焦点を当てます GPTのコンテキスト転移学習を考慮すると便利ですモデルを最初からトレーニングする場合、パラメータは最初にランダムに設定されるため、通常は膨大な量のデータが必要になります。しかしパラメータが偶然に必要な値と一致または整列するシナリオを想像してみてください。この場合、必要な結果を得るために大規模なデータセットは必要ありません。私たちの理解しているように、 BERTGPT は転移学習の概念で使用されます

したがって、 GPTトレーニングは 2 つの部分に分かれています1 つは事前トレーニング部分で、ここではGPTアーキテクチャをトレーニングして言語が何であるかを理解しますもう 1 つは微調整部分で、ここでは転移学習を使用して、 GPTアーキテクチャが特定の言語タスク適切に機能するようにさらにトレーニングします

図2. 次の単語の予測の例

GPT に、ランダムな単語のシーケンスを入力として受け取り、次に最も適切な単語を予測できるアーキテクチャがあります例示的な予測を図2示します

言語モデリングは、言語の基本的な側面を理解するための理想的な基盤として選択され微調整が容易です文自体が入力ラベルと出力ラベルの両方として機能できるため、自己教師ありタスクと呼ばれることがよくあります。

図3. ChatGPT図

ChatGPTについて議論を続けましょう。図3に示すように ChatGPTプロセス全体は3 つの主要なステップに分けられます。最初のステップでは、言語自体を理解するために事前にトレーニングされたGPTモデルが使用されます次のステップでは、モデルを微調整してユーザープロンプトを効果的に処理しそれらのプロンプトに基づいて適切な応答を生成します。このプロセスを容易にするために、ラベル付けされたデータが人間のラベル付け担当者提供されますラベル付け担当者はプロンプトを提供するだけでなく、各プロンプトに対する望ましい応答も指定します。これにより、入力プロンプトと対応する出力応答の両方が存在するため、 GPTモデル教師付き微調整が容易になります

次のステップでは、最初のステップで得られた教師あり調整モデルが使用されます。単一のプロンプトがモデルに渡され複数の応答が生成されます。これら応答の品質は人間の評価者によって評価され、格付けされます。生成された各応答には対応する報酬が割り当てられ、それを使用して別のGPTモデル (報酬モデル)をトレーニングします報酬モデル自体は、最初のプロンプトと応答1 つを入力として受け取り、出力として報酬を生成する機能を持つモデルです。この報酬は、応答の質または良さを定量化します。

3 番目のステップでは、目に見えないキューが、教師ありの調整されたモデルのレプリカに渡されます。これにより応答が生成されそのランクまたは品質が報酬モデルを使用して評価されます。得られたランクは、すでに微調整されたモデルをさらに改良するために使用されますこれは、ランクをPPOモデルの損失関数組み込むことによって実現されモデルのパラメータをバックプロパゲーションによって更新できるようになります。特に興味深いのは、このプロセスによってモデルが無害に動作するだけでなく現実的な応答を生成すること可能になるという点です。これは、報酬自体が応答の品質に基づいて生成されるという事実によるものです

チャットSQL

それではChatGPTPythonを使用してプロジェクトを作成しましょうこのプロジェクトではLangChainフレームワークを使用します。

私たちの目標は、プレーンテキストを使用してデータベースから情報を取得することです。この目的のためにターゲット データベースとして MySQL を使用します。ただし、このアプローチは他のデータベースでクエリを生成するためにも使用できます。サンプルデータベースを以下に示します。

すべてのコードはここにあります( https://github.com/ademakdogan/ChatSQL )

 +-----+--------------------------------------------------------+------------------------+-------------------+--------+------------------+ | ID | Title | Author | Genre | Height | Publisher | +-----+--------------------------------------------------------+------------------------+-------------------+--------+------------------+ | 1 | Fundamentals of Wavelets | Goswami, Jaideva | signal_processing | 228 | Wiley | | 2 | Data Smart | Foreman, John | data_science | 235 | Wiley | | 3 | God Created the Integers | Hawking, Stephen | mathematics | 197 | Penguin | | 4 | Superfreakonomics | Dubner, Stephen | economics | 179 | HarperCollins | | 5 | Orientalism | Said, Edward | history | 197 | Penguin | | 6 | Nature of Statistical Learning Theory, The | Vapnik, Vladimir | data_science | 230 | Springer | | 7 | Integration of the Indian States | Menon, VP | history | 217 | Orient Blackswan | | 8 | Drunkard's Walk, The | Mlodinow, Leonard | science | 197 | Penguin | | 9 | Image Processing & Mathematical Morphology | Shih, Frank | signal_processing | 241 | CRC | | 10 | How to Think Like Sherlock Holmes | Konnikova, Maria | psychology | 240 | Penguin | | 11 | Data Scientists at Work | Sebastian Gutierrez | data_science | 230 | Apress | | 12 | Slaughterhouse Five | Vonnegut, Kurt | fiction | 198 | Random House | | 13 | Birth of a Theorem | Villani, Cedric | mathematics | 234 | Bodley Head | | 14 | Structure & Interpretation of Computer Programs | Sussman, Gerald | computer_science | 240 | MIT Press | | 15 | Age of Wrath, The | Eraly, Abraham | history | 238 | Penguin | | 16 | Trial, The | Kafka, Frank | fiction | 198 | Random House | | 17 | Statistical Decision Theory' | Pratt, John | data_science | 236 | MIT Press | | 18 | Data Mining Handbook | Nisbet, Robert | data_science | 242 | Apress | | 19 | New Machiavelli, The | Wells, HG | fiction | 180 | Penguin | | 20 | Physics & Philosophy | Heisenberg, Werner | science | 197 | Penguin | | 21 | Making Software | Oram, Andy | computer_science | 232 | O'Reilly | | . | ....... | ....... | .... | ... | .... | | . | ....... | ....... | .... | ... | .... |

ChatSQL は 2 つの主要な部分で構成されています。まず、指定されたプレーンテキストからChatGPT によってMy SQLクエリが生成されます。生成されたクエリを実行します。 2 番目のステップでは、データベースから返された結果が評価されます。この段階では、結果をユーザーに直接提示することも、 ChatGPT送り返してさらに分析および解釈することもできます。したがって、ChatGPT を使用してデータベース対話することができます

ユーザーが 175ページ以上178ページ未満フィクションジャンルを表示してください。著者は「Doyle, Arthur Conan」以外である必要があります とすると、この場合、次のコマンドを使用できます

 python3 chatsql.py -p 'Show me the book type fiction which they height bigger than 175 and smaller than 178. The author shouldn't be 'Doyle, Arthur Conan'. '

その結果以下の情報が得られました

 CHATGPT QUERY------------------: SELECT * FROM bt WHERE Genre = 'Fiction' AND Height > 175 AND Height < 178 AND Author != 'Doyle, Arthur Conan' RAW RESULT------------------: [(32, 'Pillars of the Earth, The', 'Follett, Ken', 'fiction', 176, 'Random House'), (37, 'Veteran, The', 'Forsyth, Frederick', 'fiction', 177, 'Transworld'), (38, 'False Impressions', 'Archer, Jeffery', 'fiction', 177, 'Pan'), (72, 'Prisoner of Birth, A', 'Archer, Jeffery', 'fiction', 176, 'Pan'), (87, 'City of Joy, The', 'Lapierre, Dominique', 'fiction', 177, 'vikas'), (128, 'Rosy is My Relative', 'Durrell, Gerald', 'fiction', 176, 'nan')] PROCESSED RESULT------------------ : The books 'Pillars of the Earth, The' by Ken Follett, 'Veteran, The' by Frederick Forsyth, 'False Impressions' by Jeffery Archer, 'Prisoner of Birth, A' by Jeffery Archer, 'City of Joy, The' by Dominique Lapierre, and 'Rosy is My Relative' by Gerald Durrell are all fiction books with 176 or 177 pages published by Random House, Transworld, Pan, Vikas, and Nan, respectively.

データベースの列名が正しい場合、 C hat GPT はそれらの名前を理解しそれに応じてクエリに応答します。ただし、場合によってデータベース内の列名が意味をなさなかったり、ChatGPT がコンテキストを完全に理解できないことがありますしたがって、システムの正常な動作を確保するためにはデータベースに関する事前情報を ChatGPT に提供する必要がありますinfo.jsonファイルを使用して情報を追加できます。

 +-----+--------------------------------------------------------+------------------------+-------------------+------+------------------+ | ID | aa | bb | cc | dd | ee | +-----+--------------------------------------------------------+------------------------+-------------------+------+------------------+ | 1 | Fundamentals of Wavelets | Goswami, Jaideva | signal_processing | 228 | Wiley | | 2 | Data Smart | Foreman, John | data_science | 235 | Wiley | | 3 | God Created the Integers | Hawking, Stephen | mathematics | 197 | Penguin | | 4 | Superfreakonomics | Dubner, Stephen | economics | 179 | HarperCollins | | 5 | Orientalism | Said, Edward | history | 197 | Penguin | | . | ....... | ....... | .... | ... | .... | | . | ....... | ....... | .... | ... | .... |

以下に示すように、名前が不適切に付けられたデータベースがあるとしますこの場合、データベースに関する必要な情報はinfo.jsonファイル入力されます

 {“bt”: “Table Name”, “aa”: “Title of the book”, “bb”: “Author of the book”, “cc”: “Type of book”, “dd”: “Height of the book”, “ee”: “Book Publisher”}

次に同じコマンドを使用します:

 python3 chatsql.py -p 'Show me the book type fiction which they height bigger than 175 and smaller than 178. The author shouldn't be 'Doyle, Arthur Conan'. '

データベース内の列名が適切に選択されていない場合でも、正しい情報を提供しているため、Chats GPT は正しいクエリを生成ます

 {'query': "SELECT aa, bb, cc, dd FROM bt WHERE cc = 'fiction' AND dd > 175 AND dd < 178 AND bb != 'Doyle, Arthur Conan'", 'raw_result': "[('Pillars of the Earth, The', 'Follett, Ken', 'fiction', 176), ('Veteran, The', 'Forsyth, Frederick', 'fiction', 177), ('False Impressions', 'Archer, Jeffery', 'fiction', 177), ('Prisoner of Birth, A', 'Archer, Jeffery', 'fiction', 176), ('City of Joy, The', 'Lapierre, Dominique', 'fiction', 177), ('Rosy is My Relative', 'Durrell, Gerald', 'fiction', 176)]", 'processed_result': '\nThe books "Pillars of the Earth, The" by Ken Follett, "Veteran, The" by Frederick Forsyth, "False Impressions" by Jeffery Archer, "Prisoner of Birth, A" by Jeffery Archer, "City of Joy, The" by Dominique Lapierre and "Rosy is My Relative" by Gerald Durrell are all fiction and have page lengths of 176 or 177.'}

次のプロジェクトでは、無料のモデル (Llama) を使用してプロンプトからクエリ ( Mongoおよび SQL) を生成します。

  • プロジェクトコードリポジトリ: https://github.com/ademakdogan/ChatSQL
  • GitHub: https://github.com/ademakdogan
  • リンクトイン: https://www.linkedin.com/in/adem-akdoğan-948334177/

元のタイトル: ChatSQL: ChatGPT を有効にしてプレーンテキストから SQL クエリを生成できるようにする、著者: Adem Akdogan


<<:  世界モデルが大きな貢献を果たしました! 20以上の自動運転シナリオの偽データがリアルすぎる…

>>:  音楽駆動型デジタルヒューマン技術の詳細な説明

ブログ    
ブログ    
ブログ    
ブログ    

推薦する

人工知能は私たちに取って代わるのでしょうか?科学者たちは十分な証拠を提示しているが、その日が来るのはまだ遠い。

人工知能といえば、これは現代社会の最新の産物であり、この産物もまた最速のスピードで人間を駆逐していま...

敵対的機械学習の初心者向けガイド

敵対的機械学習とは、主に、攻撃者の能力と攻撃の結果の調査と理解に基づいて、セキュリティ上の課題 (攻...

...

...

RLHF が LLM トレーニングの鍵となるのはなぜですか? AI専門家が5つの代替案を検討し、Llama 2のフィードバックメカニズムのアップグレードを説明

ChatGPTが主導する大規模言語モデルの時代において、避けては通れないトピックが「人間のフィードバ...

...

倪光南学士がRAG技術、AIエージェント、AI倫理的課題について語る

中国工程院の院士である倪光南氏は、第2回北京人工知能産業革新発展会議で人工知能の発展に関する見解と経...

ディープラーニングチップ研究の新潮流:処理の中核となるメモリ

[[186777]]過去 2 年間、機械学習、特にディープ ニューラル ネットワークのニーズを満たす...

疫病との戦いにおけるドローン:監視、空中管制、そして徹底的な説得

ドローンと聞いて何を思い浮かべますか?おそらくほとんどの人の答えは写真撮影でしょう。しかし、今回の疫...

誰でも簡単にウェブサイトを構築できる 5 つの AI ウェブサイトビルダー

今日は、5 つの AI ウェブサイト ビルダー ツールをご紹介します。これらの AI ツールを使用す...

AI を活用した検索と推奨はどれほど強力でしょうか?

著者 | ユン・チャオユーザーと情報の間には、検索か推奨のいずれかが存在します。百度の執行副社長であ...

自動運転シミュレーションテスト技術は実際の街頭シーンをシミュレートできる

[[262014]]自動運転は近年注目されている研究開発プロジェクトです。市場に投入される前にシミュ...

ChatSQL: ChatGPT を有効にしてプレーンテキストで SQL クエリを作成できるようにする

翻訳者 |ブガッティレビュー | Chonglou ChatGPTは2020年6月にリリースされ、 ...

なぜ私はLangChainを諦めたのでしょうか?

過去数か月間の AI の爆発的な成長を追ってきた方なら、おそらく LangChain について聞いた...