paint-brush
ChatSQL: Bật ChatGPT để tạo truy vấn SQL từ văn bản thuần túytừ tác giả@ademakdogan
6,963 lượt đọc
6,963 lượt đọc

ChatSQL: Bật ChatGPT để tạo truy vấn SQL từ văn bản thuần túy

từ tác giả adem17m2023/06/21
Read on Terminal Reader

dài quá đọc không nổi

Mục tiêu của chúng tôi là truy xuất thông tin từ cơ sở dữ liệu của chúng tôi bằng văn bản thuần túy. Trong công việc của mình, chúng tôi đã sử dụng MySQL làm cơ sở dữ liệu đích. Tuy nhiên, cách tiếp cận này cũng có thể được sử dụng để tạo các truy vấn trên các cơ sở dữ liệu khác. Cơ sở dữ liệu mẫu được hiển thị bên dưới.
featured image - ChatSQL: Bật ChatGPT để tạo truy vấn SQL từ văn bản thuần túy
adem HackerNoon profile picture
0-item

ChatGPT được phát hành vào tháng 6 năm 2020 và được phát triển bởi OpenAI. Nó đã dẫn đến sự phát triển mang tính cách mạng trong nhiều lĩnh vực. Một trong những lĩnh vực này là tạo các truy vấn cơ sở dữ liệu. Các truy vấn cơ sở dữ liệu có thể được tạo từ văn bản thuần túy qua ChatGPT . Nó giúp bạn với những cơ sở dữ liệu mà bạn có ít kiến thức về nó.


Trí tuệ nhân tạo, đã dần dần tích hợp vào cuộc sống hàng ngày của chúng ta, đã đạt được động lực đáng kể với sự phát triển của ChatGPT. Trước khi chuyển sang dự án, hãy tìm hiểu sơ qua về ChatGPT.


Để hiểu đầy đủ các khả năng của ChatGPT, điều cần thiết là phải nắm vững kiến trúc cơ bản của nó. ChatGPT đã được phát triển dựa trên kiến trúc GPT . Vì vậy, trước tiên hãy xem máy biến áp.


Để truy cập trực tiếp vào dự án, bấm vào đây .


Hình 1. Bộ mã hóa và giải mã từ Transformer

Transformers sử dụng khung seq2seq, cho phép chuyển đổi một chuỗi thành một chuỗi khác. Các trình tự đã xác định thứ tự. Như một minh họa, các câu có thể được xem như một chuỗi các từ. Transformers cũng có thể được sử dụng để giải quyết NLP như dịch văn bản. Chúng tôi cần rất nhiều dữ liệu được dán nhãn để đào tạo kiến trúc này. Điều này sẽ khó khăn cho các máy biến áp để tìm hiểu. Chúng ta có thể sử dụng transfer learning để giải quyết vấn đề này. Máy biến áp bao gồm hai thành phần (Hình 1): bộ mã hóa và bộ giải mã, cả hai đều có khả năng thu được biểu diễn ngôn ngữ thành thạo.


Sự thành thạo này cho phép chúng tôi xây dựng các mô hình ngôn ngữ từ mỗi thành phần. Bằng cách xếp chồng các bộ mã hóa, chúng tôi thu được biểu diễn B bộ mã hóa E hai chiều R của bộ biến đổi T , thường được gọi là BERT . Tương tự, bằng cách xếp chồng các đơn vị giải mã, chúng ta có thể đạt được kết quả P tái tạo G năng lượng đó là GPT. Trong trường hợp của chúng tôi, chúng tôi đang tập trung vào GPT. Hãy nghĩ về việc học chuyển đổi trong bối cảnh của GPT. Khi chúng tôi đào tạo một mô hình từ đầu, nó thường yêu cầu một lượng dữ liệu đáng kể vì các tham số ban đầu được đặt ngẫu nhiên. Tuy nhiên, hãy tưởng tượng một kịch bản trong đó các tham số ngẫu nhiên phù hợp với các giá trị mà chúng ta yêu cầu. Trong những trường hợp như vậy, chúng tôi không cần phải có một bộ dữ liệu mở rộng để đạt được kết quả mong muốn. Như sẽ được hiểu, BERT và GPT được sử dụng trong khái niệm học chuyển đổi.


Do đó, quá trình đào tạo GPT được chia thành hai phần. Chúng tôi có phần đào tạo trước trong đó chúng tôi đào tạo kiến trúc GPT để hiểu ngôn ngữ là gì và sau đó tinh chỉnh phần nơi chúng tôi sử dụng phương pháp học chuyển đổi để đào tạo thêm kiến trúc GPT nhằm thực hiện tốt các tác vụ ngôn ngữ cụ thể


Hình 2. Mẫu dự đoán từ tiếp theo

GPT có cấu trúc lấy các chuỗi từ ngẫu nhiên làm đầu vào và dự đoán từ phù hợp nhất tiếp theo. Dự đoán mẫu có thể được nhìn thấy trong Hình 2.


Mô hình hóa ngôn ngữ được chọn làm nền tảng lý tưởng để hiểu các khía cạnh cơ bản của ngôn ngữ và có thể dễ dàng tinh chỉnh. Nó thường được biết đến như một nhiệm vụ tự giám sát vì bản thân các câu đóng vai trò là nhãn đầu vào và đầu ra.

Hình 3. Sơ đồ ChatGPT — Nguồn


Hãy chuyển sang ChatGPT. Như có thể thấy trong Hình 3., toàn bộ quy trình ChatGPT có thể được chia thành ba bước chính. Trong bước đầu tiên, mô hình GPT đã được đào tạo trước để hiểu ngôn ngữ được sử dụng. Bước tiếp theo liên quan đến việc tinh chỉnh mô hình để xử lý hiệu quả lời nhắc của người dùng và tạo phản hồi phù hợp dựa trên những lời nhắc đó. Để tạo thuận lợi cho quá trình này, dữ liệu được gắn nhãn thu được bằng cách thu hút những người gắn nhãn, những người không chỉ cung cấp lời nhắc mà còn chỉ định phản hồi mong muốn cho mỗi lời nhắc. Điều này cho phép tham gia tinh chỉnh có giám sát mô hình GPT, vì có cả lời nhắc đầu vào và phản hồi đầu ra tương ứng.


Trong bước tiếp theo, mô hình tinh chỉnh có giám sát được sử dụng mà nó thu được từ bước đầu tiên được sử dụng. Một lời nhắc duy nhất được chuyển qua mô hình và nhiều phản hồi được tạo. Sau đó, người dán nhãn sẽ đánh giá và xếp hạng chất lượng của những phản hồi này. Mỗi phản hồi được tạo sẽ được gán một phần thưởng tương ứng. Phần thưởng này được sử dụng để đào tạo một mô hình GPT khác được gọi là mô hình phần thưởng. Bản thân là một mô hình, mô hình phần thưởng hoạt động bằng cách lấy lời nhắc ban đầu và một trong các phản hồi làm đầu vào và tạo ra phần thưởng làm đầu ra. Phần thưởng này định lượng chất lượng hoặc mức độ tốt của phản hồi.


Trong bước thứ ba, một lời nhắc ẩn sẽ được thực hiện và chuyển qua một bản sao của mô hình tinh chỉnh được giám sát. Điều này sẽ tạo ra một phản hồi, sau đó sẽ được đánh giá bằng mô hình phần thưởng để xác định thứ hạng hoặc chất lượng của nó. Thứ hạng thu được sẽ được sử dụng để tinh chỉnh thêm mô hình đã được tinh chỉnh của chúng tôi. Điều này đạt được bằng cách kết hợp thứ hạng vào hàm mất mát của mô hình PPO, cho phép cập nhật các tham số của mô hình thông qua lan truyền ngược. Điều đặc biệt hấp dẫn là quá trình này không chỉ giúp mô hình thể hiện hành vi không độc hại mà còn cho phép nó tạo ra các phản hồi thực tế. Điều này là do bản thân phần thưởng được tạo ra dựa trên chất lượng của phản hồi.

ChatQuery

Bây giờ hãy tạo một dự án với ChatGPT bằng python. Khung LangChain được sử dụng cho dự án này.


Mục tiêu của chúng tôi là truy xuất thông tin từ cơ sở dữ liệu của chúng tôi bằng văn bản thuần túy. Trong công việc của mình, chúng tôi đã sử dụng MySQL làm cơ sở dữ liệu đích. Tuy nhiên, cách tiếp cận này cũng có thể được sử dụng để tạo các truy vấn trên các cơ sở dữ liệu khác. Cơ sở dữ liệu mẫu được hiển thị bên dưới.


Tất cả các mã có thể được tìm thấy ở đây ( 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 bao gồm hai phần chính. Trước hết, các truy vấn mysql được tạo từ văn bản thuần túy đã cho qua ChatGPT. Các truy vấn được tạo này được thực thi. Trong bước thứ hai, kết quả trả về trong cơ sở dữ liệu được đánh giá. Ở giai đoạn này, kết quả có thể được trình bày trực tiếp cho người dùng hoặc gửi lại cho ChatGPT để phân tích và giải thích thêm. Vì vậy, bạn có thể trò chuyện về cơ sở dữ liệu của mình với ChatGPT.


Giả sử người dùng muốn “Cho tôi xem loại sách hư cấu có chiều cao lớn hơn 175 và nhỏ hơn 178. Tác giả không được là 'Doyle, Arthur Conan'”.”. Vì vậy, lệnh sau có thể được sử dụng trong trường hợp này.


 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'. '


Kết quả là, các thông tin sau đây thu được.

 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.


Nếu các cột cơ sở dữ liệu của bạn được đặt tên phù hợp, chatgpt sẽ hiểu những tên này và trả lời các truy vấn tương ứng. Tuy nhiên, có thể có những trường hợp tên cột trong cơ sở dữ liệu không có ý nghĩa hoặc ChatGPT có thể không hình dung đầy đủ ngữ cảnh của chúng. Do đó, để đảm bảo hệ thống hoạt động chính xác, cần cung cấp cho ChatGPT thông tin trước về cơ sở dữ liệu. Tệp Info.json có thể được sử dụng để thêm thông tin.

 +-----+--------------------------------------------------------+------------------------+-------------------+------+------------------+ | 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 | | . | ....... | ....... | .... | ... | .... | | . | ....... | ....... | .... | ... | .... |

Ví dụ, hãy có một cơ sở dữ liệu được đặt tên xấu như bên dưới. Trong trường hợp này, thông tin bắt buộc về cơ sở dữ liệu được nhập vào tệp info.json.


{“bt”: “Tên bảng”, “aa”: “Tên sách”, “bb”: “Tác giả cuốn sách”, “cc”: “Loại sách”, “dd”: “Chiều cao của sách”, “ee”: “Nhà xuất bản sách”}

và sau đó sử dụng cùng một lệnh:

 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'. '


Ngay cả khi tên cột trong cơ sở dữ liệu được chọn kém, chatgpt vẫn tạo truy vấn chính xác vì chúng tôi cung cấp thông tin chính xác

 {'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.'}


Dự án tiếp theo có thể là tạo các truy vấn (mongo, sql) từ lời nhắc với các mô hình miễn phí (Llama).


Repo dự án: https://github.com/ademakdogan/ChatSQL

Github: https://github.com/ademakdogan

Liên kết: https://www.linkedin.com/in/adem-akdoğan-948334177/

Người giới thiệu

[1] Brown, TB, Mann, B., Ryder, N., Subbiah, M., Kaplan, J., Dhariwal, P. và Amodei, D. (2020). Các mô hình ngôn ngữ là những người học vài lần. arXiv in sẵn arXiv:2005.14165.


[2] Radford, A., Wu, J., Child, R., Luan, D., Amodei, D., Sutskever, I. (2019). Các mô hình ngôn ngữ là những người học đa nhiệm không giám sát. Blog OpenAI.


[3] Vaswani, A., Shazeer, N., Parmar, N., Uszkoreit, J., Jones, L., Gomez, AN và Polosukhin, I. (2017). Chú ý là tất cả những gì bạn cần. Trong Những tiến bộ trong hệ thống xử lý thông tin thần kinh (trang 5998–6008).


[4] Devlin, J., Chang, MW, Lee, K., & Toutanova, K. (2019). BERT: Đào tạo trước máy biến áp hai chiều sâu để hiểu ngôn ngữ. Trong Kỷ yếu Hội nghị năm 2019 của Chi nhánh Bắc Mỹ của Hiệp hội Ngôn ngữ học Máy tính: Công nghệ Ngôn ngữ Con người (Tập 1, trang 4171–4186).


[5] Lewis, M., Liu, Y., Goyal, N., Ghazvininejad, M., Mohamed, A., Levy, O., & Zettlemoyer, L. (2019). BART: Khử nhiễu trước khi đào tạo theo trình tự để tạo, dịch và hiểu ngôn ngữ tự nhiên. bản in trước arXiv arXiv:1910.13461.


[6] Raffel, C., Shazeer, N., Roberts, A., Lee, K., Narang, S., Matena, M., … & Liu, PJ (2019). Khám phá các giới hạn của việc học chuyển đổi với một trình biến đổi văn bản thành văn bản thống nhất. bản in trước arXiv arXiv:1910.10683.


[7] Vaswani, A., & cộng sự. (2017). Transformer-XL: Các mô hình ngôn ngữ chú ý vượt ra ngoài ngữ cảnh có độ dài cố định. bản in trước arXiv arXiv:1901.02860.