Generowanie wartości z danych przedsiębiorstwa: najlepsze praktyki dotyczące Text2SQL i generatywnej sztucznej inteligencji | Usługi internetowe Amazona

Generowanie wartości z danych przedsiębiorstwa: najlepsze praktyki dotyczące Text2SQL i generatywnej sztucznej inteligencji | Usługi internetowe Amazona

Generatywna sztuczna inteligencja otworzyła wiele możliwości w dziedzinie sztucznej inteligencji. Widzimy liczne zastosowania, w tym generowanie tekstu, generowanie kodu, podsumowywanie, tłumaczenie, chatboty i nie tylko. Jednym z takich obszarów, który ewoluuje, jest wykorzystanie przetwarzania języka naturalnego (NLP) w celu odblokowania nowych możliwości dostępu do danych za pomocą intuicyjnych zapytań SQL. Zamiast zajmować się skomplikowanym kodem technicznym, użytkownicy biznesowi i analitycy danych mogą zadawać pytania związane z danymi i spostrzeżeniami prostym językiem. Podstawowym celem jest automatyczne generowanie zapytań SQL na podstawie tekstu w języku naturalnym. W tym celu wprowadzany tekst jest przekształcany w ustrukturyzowaną reprezentację, a na podstawie tej reprezentacji tworzone jest zapytanie SQL, za pomocą którego można uzyskać dostęp do bazy danych.

W tym poście przedstawiamy wprowadzenie do języka SQL (Text2SQL) i omawiamy przypadki użycia, wyzwania, wzorce projektowe i najlepsze praktyki. W szczególności omawiamy następujące kwestie:

  • Dlaczego potrzebujemy Text2SQL
  • Kluczowe elementy tekstu do SQL
  • Szybkie rozważania inżynieryjne dotyczące języka naturalnego lub tekstu na SQL
  • Optymalizacje i najlepsze praktyki
  • Wzory architektoniczne

Dlaczego potrzebujemy Text2SQL?

Obecnie duża ilość danych jest dostępna w ramach tradycyjnej analizy danych, hurtowni danych i baz danych, co może nie być łatwe do przeszukania lub zrozumienia dla większości członków organizacji. Podstawowym celem Text2SQL jest uczynienie zapytań do baz danych bardziej dostępnymi dla użytkowników nietechnicznych, którzy mogą podawać swoje zapytania w języku naturalnym.

NLP SQL umożliwia użytkownikom biznesowym analizowanie danych i uzyskiwanie odpowiedzi poprzez wpisywanie lub wypowiadanie pytań w języku naturalnym, takich jak następujące:

  • „Pokaż całkowitą sprzedaż każdego produktu w zeszłym miesiącu”
  • „Które produkty wygenerowały większy przychód?”
  • „Jaki procent klientów pochodzi z każdego regionu?”

Amazońska skała macierzysta to w pełni zarządzana usługa oferująca wybór wysokowydajnych modeli podstawowych (FM) za pośrednictwem jednego interfejsu API, umożliwiając łatwe tworzenie i skalowanie aplikacji Gen AI. Można go wykorzystać do generowania zapytań SQL na podstawie pytań podobnych do wymienionych powyżej, a także do wykonywania zapytań o strukturalne dane organizacyjne i generowania odpowiedzi w języku naturalnym na podstawie danych odpowiedzi na zapytania.

Kluczowe komponenty tekstu do SQL

Systemy zamiany tekstu na SQL obejmują kilka etapów konwersji zapytań w języku naturalnym na możliwy do uruchomienia kod SQL:

  • Przetwarzanie języka naturalnego:
    • Przeanalizuj zapytanie wejściowe użytkownika
    • Wyodrębnij kluczowe elementy i intencje
    • Konwertuj do formatu strukturalnego
  • Generacja SQL:
    • Mapuj wyodrębnione szczegóły na składnię SQL
    • Wygeneruj prawidłowe zapytanie SQL
  • Zapytanie do bazy danych:
    • Uruchom zapytanie SQL wygenerowane przez sztuczną inteligencję w bazie danych
    • Pobierz wyniki
    • Zwróć wyniki użytkownikowi

Jedną z niezwykłych możliwości modeli dużego języka (LLM) jest generowanie kodu, w tym języka zapytań strukturalnych (SQL) dla baz danych. Te LLM można wykorzystać do zrozumienia pytania w języku naturalnym i wygenerowania odpowiedniego zapytania SQL jako wyniku. LLM odniosą korzyści dzięki przyjęciu uczenia się w kontekście i dostrajaniu ustawień w miarę dostarczania większej ilości danych.

Poniższy diagram ilustruje podstawowy przepływ Text2SQL.

Tekst 2 Przebieg procesu wysokiego poziomu SQL

Szybkie rozważania inżynieryjne dotyczące języka naturalnego w SQL

Podpowiedź ma kluczowe znaczenie w przypadku używania LLM do tłumaczenia języka naturalnego na zapytania SQL, a przy szybkiej inżynierii należy wziąć pod uwagę kilka ważnych kwestii.

Efektywne szybka inżynieria jest kluczem do rozwoju języka naturalnego w systemach SQL. Jasne, proste podpowiedzi zapewniają lepsze instrukcje dotyczące modelu języka. Zapewnienie kontekstu, w którym użytkownik żąda zapytania SQL, wraz z odpowiednimi szczegółami schematu bazy danych umożliwia modelowi dokładne przetłumaczenie intencji. Dołączenie kilku przykładów podpowiedzi w języku naturalnym z adnotacjami i odpowiadających im zapytań SQL pomaga poprowadzić model w celu uzyskania wyników zgodnych ze składnią. Dodatkowo włączenie funkcji Retrieval Augmented Generation (RAG), w której model pobiera podobne przykłady podczas przetwarzania, dodatkowo poprawia dokładność mapowania. Dobrze zaprojektowane podpowiedzi, które zapewniają modelowi wystarczające instrukcje, kontekst, przykłady i rozszerzenie wyszukiwania, są kluczowe dla niezawodnego tłumaczenia języka naturalnego na zapytania SQL.

Poniżej znajduje się przykład wiersza bazowego z kodem reprezentującym bazę danych z oficjalnego dokumentu Zwiększanie możliwości zamiany tekstu na SQL w ramach kilkukrotnej konwersji tekstu na język SQL w modelach wielojęzycznych: badanie dotyczące strategii szybkiego projektowania.

/* Given the following database schema : */
CREATE TABLE IF NOT EXISTS " gymnast " ( " Gymnast_ID " int , " Floor_Exercise_Points " real , " Pommel_Horse_Points " real , " Rings_Points " real , " Vault_Points " real , " Parallel_Bars_Points " real , " Horizontal_Bar_Points " real , " Total_Points " real , PRIMARY KEY ( " Gymnast_ID " ) , FOREIGN KEY ( " Gymnast_ID " ) REFERENCES " people " ( " People_ID " ) ) ; CREATE TABLE IF NOT EXISTS " people " ( " People_ID " int , " Name " text , " Age " real , " Height " real , " Hometown " text , PRIMARY KEY ( " People_ID " ) ) ; /* Answer the following : Return the total points of the gymnast with the lowest age .
*/ select t1 . total_points from gymnast as t1 join people as t2 on t1 . gymnast_id = t2 .
people_id order by t2 . age asc limit 1

Jak pokazano w tym przykładzie, uczenie się oparte na podpowiedziach w kilku krokach zapewnia modelowi kilka przykładów z adnotacjami w samym znaku zachęty. To pokazuje docelowe mapowanie pomiędzy językiem naturalnym i SQL dla modelu. Zwykle zachęta zawiera około 2–3 par przedstawiających zapytanie w języku naturalnym i równoważną instrukcję SQL. Tych kilka przykładów pomaga modelowi generować zapytania SQL zgodne ze składnią z języka naturalnego bez konieczności stosowania obszernych danych szkoleniowych.

Dostrajanie a szybka inżynieria

Budując język naturalny w systemach SQL, często wdajemy się w dyskusję na temat tego, czy dostrajanie modelu jest właściwą techniką, czy też najlepszym rozwiązaniem jest skuteczna, szybka inżynieria. Można rozważyć i wybrać oba podejścia w oparciu o odpowiedni zestaw wymagań:

    • Strojenie – Model bazowy jest wstępnie szkolony na dużym korpusie tekstu ogólnego, a następnie można go używać dostrajanie oparte na instrukcjach, który używa oznaczonych przykładów, aby poprawić wydajność wstępnie wyszkolonego modelu podstawowego w języku tekstowym SQL. Dostosowuje to model do docelowego zadania. Dostrajanie bezpośrednio uczy model w zadaniu końcowym, ale wymaga wielu przykładów tekstowego SQL. Możesz użyć nadzorowanego dostrajania w oparciu o LLM, aby poprawić skuteczność konwersji tekstu na SQL. W tym celu możesz użyć kilku zestawów danych, takich jak Pająk, WikiSQL, GONIĆ, BIRD-SQLlub CoSQL-a.
    • Szybka inżynieria – Model jest szkolony, aby wypełniać monity zaprojektowane w celu wyświetlenia docelowej składni SQL. Podczas generowania SQL z języka naturalnego przy użyciu LLM, podanie jasnych instrukcji w wierszu poleceń jest ważne dla kontrolowania wyników modelu. W monicie opisz różne komponenty, np. wskazując kolumny, schemat, a następnie poinstruuj, jaki typ kodu SQL ma zostać utworzony. Działają one jak instrukcje, które mówią modelowi, jak sformatować dane wyjściowe SQL. Poniższy monit pokazuje przykład, w którym wskazujesz kolumny tabeli i instruujesz, aby utworzyć zapytanie MySQL:
Table offices, columns = [OfficeId, OfficeName]
Table employees, columns = [OfficeId, EmployeeId,EmployeeName]
Create a MySQL query for all employees in the Machine Learning Department

Skutecznym podejściem do modeli zamiany tekstu na SQL jest rozpoczęcie od bazowego LLM bez dostrajania specyficznego dla zadania. Dobrze opracowane podpowiedzi można następnie wykorzystać do dostosowania i sterowania modelem podstawowym w celu obsługi mapowania tekstu na SQL. Ta szybka inżynieria pozwala rozwijać możliwości bez konieczności dostrajania. Jeśli szybka inżynieria na modelu podstawowym nie zapewni wystarczającej dokładności, można następnie zbadać dostrojenie na małym zestawie przykładów tekstowych SQL wraz z dalszą szybką inżynierią.

Jeśli szybkie prace inżynieryjne na samym surowym, wstępnie wytrenowanym modelu nie spełniają wymagań, może być wymagane połączenie precyzyjnego dostrajania i szybkiego projektowania. Jednak najlepiej jest początkowo podjąć próbę szybkiego projektowania bez dostrajania, ponieważ umożliwia to szybką iterację bez gromadzenia danych. Jeśli to nie zapewni odpowiedniej wydajności, następnym realnym krokiem będzie dostrojenie wraz z szybką inżynierią. To ogólne podejście maksymalizuje wydajność, a jednocześnie umożliwia dostosowanie, jeśli metody oparte wyłącznie na natychmiastowych działaniach są niewystarczające.

Optymalizacja i najlepsze praktyki

Optymalizacja i najlepsze praktyki są niezbędne do zwiększenia efektywności i zapewnienia optymalnego wykorzystania zasobów oraz osiągnięcia właściwych wyników w najlepszy możliwy sposób. Techniki te pomagają w poprawie wydajności, kontrolowaniu kosztów i osiągnięciu lepszej jakości wyników.

Podczas opracowywania systemów zamiany tekstu na SQL przy użyciu LLM techniki optymalizacji mogą poprawić wydajność i efektywność. Oto kilka kluczowych obszarów, które należy wziąć pod uwagę:

  • buforowanie – Aby poprawić opóźnienia, kontrolę kosztów i standaryzację, możesz buforować przeanalizowany kod SQL i rozpoznane podpowiedzi zapytań z LLM zamiany tekstu na SQL. Pozwala to uniknąć ponownego przetwarzania powtarzających się zapytań.
  • Monitorowanie – Należy gromadzić dzienniki i metryki dotyczące analizowania zapytań, rozpoznawania podpowiedzi, generowania SQL i wyników SQL w celu monitorowania systemu LLM zamiany tekstu na SQL. Zapewnia to widoczność przykładu optymalizacji aktualizującego monit lub ponownego dostrajania ze zaktualizowanym zestawem danych.
  • Zmaterializowane widoki a tabele – Zmaterializowane widoki mogą uprościć generowanie kodu SQL i poprawić wydajność typowych zapytań zamiany tekstu na SQL. Bezpośrednie wykonywanie zapytań do tabel może skutkować złożonym kodem SQL, a także problemami z wydajnością, w tym ciągłym tworzeniem technik wydajnościowych, takich jak indeksy. Ponadto można uniknąć problemów z wydajnością, gdy ta sama tabela jest używana jednocześnie w innych obszarach zastosowań.
  • Odświeżanie danych – Zmaterializowane widoki muszą być odświeżane zgodnie z harmonogramem, aby dane były aktualne w przypadku zapytań tekstowych-SQL. Aby zrównoważyć obciążenie, można zastosować podejście do odświeżania wsadowego lub przyrostowego.
  • Centralny katalog danych – Utworzenie scentralizowanego katalogu danych zapewnia pojedynczy wgląd w źródła danych organizacji i pomoże LLM wybrać odpowiednie tabele i schematy w celu zapewnienia dokładniejszych odpowiedzi. Wektor osadzenia utworzone na podstawie centralnego katalogu danych można dostarczyć do LLM wraz z informacjami wymaganymi w celu wygenerowania odpowiednich i precyzyjnych odpowiedzi SQL.

Stosując najlepsze praktyki optymalizacyjne, takie jak buforowanie, monitorowanie, widoki zmaterializowane, zaplanowane odświeżanie i katalog centralny, można znacznie poprawić wydajność i efektywność systemów zamiany tekstu na SQL przy użyciu LLM.

Wzory architektoniczne

Przyjrzyjmy się niektórym wzorcom architektury, które można zaimplementować w przypadku przepływu pracy z tekstu na SQL.

Szybka inżynieria

Poniższy diagram ilustruje architekturę generowania zapytań za pomocą LLM przy użyciu szybkiej inżynierii.

ilustruje architekturę generowania zapytań za pomocą LLM przy użyciu szybkiej inżynierii

W tym wzorcu użytkownik tworzy kilkuetapowe uczenie się oparte na podpowiedziach, które dostarcza modelowi przykłady z adnotacjami w samym wierszu zachęty, zawierającym szczegóły tabeli i schematu oraz kilka przykładowych zapytań z wynikami. LLM korzysta z dostarczonego monitu, aby zwrócić wygenerowany przez sztuczną inteligencję kod SQL, który jest sprawdzany, a następnie uruchamiany w bazie danych w celu uzyskania wyników. Jest to najprostszy wzorzec umożliwiający rozpoczęcie korzystania z szybkiej inżynierii. W tym celu możesz użyć Amazońska skała macierzysta or modele fundamentów in Amazon SageMaker JumpStart.

W tym wzorcu użytkownik tworzy kilkuetapową naukę opartą na podpowiedziach, która dostarcza modelowi przykłady z adnotacjami w samym podpowiedzi, które zawierają szczegóły tabeli i schematu oraz kilka przykładowych zapytań z wynikami. LLM korzysta z dostarczonego monitu, aby zwrócić wygenerowany przez AI kod SQL, który jest sprawdzany i uruchamiany w bazie danych w celu uzyskania wyników. Jest to najprostszy wzorzec umożliwiający rozpoczęcie korzystania z szybkiej inżynierii. W tym celu możesz użyć Amazońska skała macierzysta to w pełni zarządzana usługa oferująca wybór wysokowydajnych modeli podstawowych (FM) wiodących firm zajmujących się sztuczną inteligencją za pośrednictwem jednego interfejsu API, wraz z szerokim zestawem funkcji potrzebnych do tworzenia generatywnych aplikacji AI zapewniających bezpieczeństwo, prywatność i odpowiedzialną sztuczną inteligencję Lub Modele fundamentów JumpStart który oferuje najnowocześniejsze modele podstawowe dla przypadków użycia, takich jak pisanie treści, generowanie kodu, odpowiadanie na pytania, copywriting, podsumowywanie, klasyfikacja, wyszukiwanie informacji i nie tylko

Szybka inżynieria i dostrajanie

Poniższy diagram ilustruje architekturę generowania zapytań za pomocą LLM przy użyciu szybkiego projektowania i dostrajania.

ilustruje architekturę generowania zapytań za pomocą LLM przy użyciu szybkiej inżynierii i dostrajania

Przepływ ten jest podobny do poprzedniego wzorca, który w większości opiera się na szybkiej inżynierii, ale z dodatkowym przepływem dostrajania zbioru danych specyficznego dla domeny. Dostrojony LLM służy do generowania zapytań SQL z minimalną wartością kontekstową dla podpowiedzi. W tym celu możesz użyć SageMaker JumpStart, aby dostroić LLM na zbiorze danych specyficznym dla domeny w taki sam sposób, w jaki szkolisz i wdrażasz dowolny model na Amazon Sage Maker.

Szybka inżynieria i RAG

Poniższy diagram ilustruje architekturę generowania zapytań za pomocą LLM przy użyciu szybkiej inżynierii i RAG.

ilustruje architekturę generowania zapytań za pomocą LLM przy użyciu szybkiej inżynierii i RAG

W tym wzorze używamy Odzyskanie Augmented Generation za pomocą sklepów z osadzaniem wektorowym, takich jak Osadzania Amazon Titan or Spójne osadzanie, Na Amazońska skała macierzysta z centralnego katalogu danych, np Klej AWS Katalog danychbaz danych w organizacji. Osadzenia wektorów są przechowywane w wektorowych bazach danych, takich jak Silnik wektorowy dla bezserwerowego Amazon OpenSearch, Usługa relacyjnej bazy danych Amazon (Amazon RDS) dla PostgreSQL z pgwektor przedłużenie lub Amazonka Kendra. LLM korzystają z osadzania wektorów, aby szybciej wybierać odpowiednią bazę danych, tabele i kolumny z tabel podczas tworzenia zapytań SQL. Korzystanie z RAG jest pomocne, gdy dane i istotne informacje, które muszą zostać odzyskane przez LLM, są przechowywane w wielu oddzielnych systemach baz danych, a LLM musi mieć możliwość wyszukiwania danych lub wysyłania zapytań do danych ze wszystkich tych różnych systemów. W tym przypadku zapewnienie wektorowego osadzania scentralizowanego lub ujednoliconego katalogu danych w LLM skutkuje dokładniejszymi i kompleksowymi informacjami zwracanymi przez LLM.

Wnioski

W tym poście omówiliśmy, w jaki sposób możemy wygenerować wartość z danych przedsiębiorstwa za pomocą języka naturalnego do generowania SQL. Przyjrzeliśmy się kluczowym komponentom, optymalizacji i najlepszym praktykom. Nauczyliśmy się także wzorców architektury od podstawowej inżynierii szybkiej po dostrajanie i RAG. Aby dowiedzieć się więcej, zob Amazońska skała macierzysta aby łatwo budować i skalować generatywne aplikacje AI za pomocą podstawowych modeli


O autorach

Generowanie wartości z danych przedsiębiorstwa: najlepsze praktyki dotyczące Text2SQL i generatywnej sztucznej inteligencji | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Randy’ego DeFauwa jest starszym głównym architektem rozwiązań w AWS. Posiada tytuł MSEE uzyskany na Uniwersytecie Michigan, gdzie pracował nad wizją komputerową dla pojazdów autonomicznych. Posiada również tytuł MBA uzyskany na Colorado State University. Randy zajmował różne stanowiska w przestrzeni technologicznej, od inżynierii oprogramowania po zarządzanie produktem. W przestrzeń Big Data weszła w 2013 roku i nadal eksploruje ten obszar. Aktywnie pracuje nad projektami w przestrzeni ML i występował na licznych konferencjach, w tym Strata i GlueCon.

Generowanie wartości z danych przedsiębiorstwa: najlepsze praktyki dotyczące Text2SQL i generatywnej sztucznej inteligencji | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Nitin Euzebiusz jest starszym architektem rozwiązań dla przedsiębiorstw w AWS, ma doświadczenie w inżynierii oprogramowania, architekturze korporacyjnej i sztucznej inteligencji/ML. Jego pasją jest odkrywanie możliwości generatywnej sztucznej inteligencji. Współpracuje z klientami, pomagając im budować dobrze zaprojektowane aplikacje na platformie AWS, a także poświęca się rozwiązywaniu wyzwań technologicznych i pomaganiu w ich podróży do chmury.

Generowanie wartości z danych przedsiębiorstwa: najlepsze praktyki dotyczące Text2SQL i generatywnej sztucznej inteligencji | Amazon Web Services PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.Arghya Banerjee jest starszym architektem rozwiązań w AWS w rejonie Zatoki San Francisco i koncentruje się na pomaganiu klientom w wdrażaniu i korzystaniu z chmury AWS. Arghya koncentruje się na usługach i technologiach Big Data, Data Lakes, Streaming, Batch Analytics oraz AI/ML.

Znak czasu:

Więcej z Uczenie maszynowe AWS