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

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

ブログ    
ブログ    

推薦する

ガートナー: CIO がビッグモデルを選択するための 6 つの基準と 5 つの主な導入方法

過去 2 年間で、ChatGPT は急速に広まりました。過去 6 か月間で、多くの企業が生成 AI ...

6000億元の市場シェア!今は無人採掘に最適な時期でしょうか?

2019年を振り返ると、無人商用車にとっては着陸の兆しがなく、資金調達がますます困難になり、最悪の...

ソラは人間の代わりにはなれない!アマゾンのエンジニアは主張:実際の仕事上の対立はAIでは解決できない

今週、OpenAIのビデオAIツール「Sora」が登場するや否や大きな話題を呼んだ。 「仕事を失う」...

エラー分析を正しく行う方法、NLP研究者は学ぶ必要がある

著者注:機械学習モデルがいつ、どのように、なぜ失敗するかを分析することを「エラー分析」と呼びます。科...

AIによる顔変えが流行っているが、Alipayはまだ安全か?公式回答

最近、AI技術を使ってアテナ・チュウ演じる黄容の顔を楊冪の顔に置き換える動画が話題になった。ネットユ...

AIの新たな方向性:敵対的攻撃

[[249559]]近年のAI分野を調査していく中で、近年、世界中の研究者の視野の中に敵対的攻撃とい...

カリフォルニア州の自動運転路上試験規則が変更され、軽輸送車両も許可範囲に含まれる可能性がある

現在、多くの自動運転車開発者は米国カリフォルニア州(以下、「カリフォルニア」という)で路上試験を行う...

人工知能は人々の日常の職業生活をどのように変えているのでしょうか?

[[280560]]世界が急速に発展する中、専門家は生産性と仕事の効率性の向上に努めなければなりま...

クンペンが離陸、ソフトコムが道路を建設、ソフトコム・ウィズダムがファーウェイと手を組み、済南を科学技術革新の高原に築く

10月21日、「泉城の知能、万里の昇り」をテーマにした2020年中国人工知能産業サミットと昇りコンピ...

韓国メディア:中国の技術発展は速すぎて米国を脅かしており、米国から制裁を受けるだろう

[[216638]]韓国メディアは、中国の囲碁棋士である柯潔氏が2018年春にテンセントが開発した人...

自動運転のためのニューラルネットワークとディープラーニング

先進運転支援システム (ADAS) は、道路の安全性と旅行体験に対するドライバーと乗客のより高い要求...

賢明な企業はヘルスケアにおける認知AIの成功から学ぶことができる

認知技術は世界最大の課題を解決するために使用されています。この記事では、企業が認知 AI をどのよう...

専門家:歩行者の安全問題を解決するために都市は自動運転だけに頼ることはできない

自動運転技術が業界全体で開発のマイルストーンに到達し続ける一方で、都市は自動運転車(AV)の目標を補...

優れたオープンソースの音声認識/音声テキスト変換システム 5 つ

音声テキスト変換 (STT) システムは、その名前が示すとおり、話された言葉を後で使用するためにテキ...