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以上の自動運転シナリオの偽データがリアルすぎる…

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

ブログ    
ブログ    

推薦する

AIと自動化により企業のクラウド移行が改善

COVID-19 パンデミックの影響で、2020 年末までに推定 60% の企業がワークロードをクラ...

推奨アルゴリズムコレクション(パート2) - 相関ルール推奨とKBアルゴリズム

[[331263]] 【51CTO.comオリジナル記事】 1. はじめに前回の記事では、レコメンデ...

Tmall のプログラマーがハイエンド アルゴリズムを使用して女の子を探す

問題は、アリ・タブロイド紙の公開記事によると: [[93064]] #p#これは本当の、そして少し悲...

AWS が ML プラットフォーム SageMaker の 9 つの主要なアップデートを発表

【51CTO.com クイック翻訳】 Amazon Web Services (AWS) は、クラウ...

成功する機械学習チームを構築するための 4 つのステップ

導入企業にとって、機械学習チームを 0 から 1 まで構築する方法は、多くの企業にとって非常に頭の痛...

...

学覇君主任科学者陳瑞峰:テクノロジーを活用して知識のサイロ化を減らし、教育の効率化を実現する

[51CTO.comからのオリジナル記事] 学習圧力が高く、教育資源の配分が不均衡な中国の教育システ...

AI アシスタントの人気が高まっていますが、次に購入するスマートフォンはなぜ電話なのでしょうか?

大きな模型ブームが到来し、アイアンマンのジャービスが最も忙しい「マーベルヒーロー」(手動の犬の頭)に...

語尾予測に基づく英語-ロシア語翻訳品質の向上方法

[51CTO.com からのオリジナル記事] ニューラルネットワーク翻訳モデルは、使用できる語彙のサ...

宇宙インテリジェンスは産業変革に新たな推進力をもたらす。ファーウェイは能力とパートナーを開放し、ウィンウィンの時代を実現する

8月5日、ファーウェイ開発者会議2023(HDC 2023)全社スマートテクノロジーフォーラムが深セ...

Tian Yuandong らの新しい研究: メモリのボトルネックを突破し、4090 で 7B の大規模モデルを事前トレーニング可能に

先月、Meta FAIR の Tian Yuandong が参加した研究が大きな称賛を受けました。彼...

DeepTraffic: MIT シミュレーション ゲームがディープラーニングを使用して交通渋滞を緩和

[[196857]]渋滞に巻き込まれるのはイライラするだけでなく、費用もかかります。頭痛の原因になっ...

27,303件のホットなコメントを調べた結果、なぜ「紅炎火水」は未だに世間から嘲笑されているのか?

AI開発者会議でスピーチをしている最中に、ロビン・リーは見知らぬ人から頭に水の入ったボトルをかけら...

LZ77 圧縮アルゴリズム エンコーディング Python 実装原理図

序文LZ77 アルゴリズムは、1977 年にイスラエルの Abraham Lempel によって公開...

...