Ta objava je napisana skupaj s Stanislavom Yeshchenkom iz Q4 Inc.
Podjetja se obrnejo na Retrieval Augmented Generation (RAG) kot glavni pristop k izgradnji klepetalnic za vprašanja in odgovore. Še naprej se srečujemo z nastajajočimi izzivi, ki izvirajo iz narave nabora razpoložljivih podatkovnih nizov. Ti nabori podatkov so pogosto mešanica numeričnih in besedilnih podatkov, včasih strukturiranih, nestrukturiranih ali polstrukturiranih.
Q4 Inc. potrebovali za reševanje nekaterih od teh izzivov v enem od svojih številnih primerov uporabe umetne inteligence, zgrajenih na AWS. V tej objavi razpravljamo o primeru uporabe bota za vprašanja in odgovore, ki ga je implementiral Q4, o izzivih, ki so jih predstavljali numerični in strukturirani nabori podatkov, in o tem, kako je Q4 zaključil, da je uporaba SQL lahko izvedljiva rešitev. Na koncu si podrobneje ogledamo, kako je uporabljala ekipa Q4 Amazon Bedrock in SQLDatabaseChain za implementacijo rešitve, ki temelji na RAG, z generiranjem SQL.
Pregled primera uporabe
Q4 Inc., s sedežem v Torontu, s pisarnami v New Yorku in Londonu, je vodilna platforma za dostop do kapitalskih trgov, ki spreminja, kako se izdajatelji, vlagatelji in prodajalci učinkovito povezujejo, komunicirajo in sodelujejo drug z drugim. Platforma Q4 omogoča interakcije med kapitalskimi trgi prek produktov spletnega mesta IR, rešitev za virtualne dogodke, analitike sodelovanja, odnosov z vlagatelji, upravljanja odnosov s strankami (CRM), analize delničarjev in trga, nadzora in orodij ESG.
V današnjem hitrem finančnem okolju, ki temelji na podatkih, imajo uradniki za odnose z vlagatelji (IRO) ključno vlogo pri spodbujanju komunikacije med podjetjem in njegovimi delničarji, analitiki in vlagatelji. Kot del svojih vsakodnevnih nalog IRO analizirajo različne nabore podatkov, vključno s CRM, lastniškimi evidencami in podatki o borzi. Skupek teh podatkov se uporablja za ustvarjanje finančnih poročil, določanje ciljev odnosov z vlagatelji in upravljanje komunikacije z obstoječimi in potencialnimi vlagatelji.
Da bi izpolnil vse večje povpraševanje po učinkovitem in dinamičnem pridobivanju podatkov, je Q4 želel ustvariti orodje za vprašanja in odgovore chatbota, ki bi IRO-jem zagotovilo intuitivno in preprosto metodo za dostop do potrebnih informacij, ki jih potrebujejo, v uporabniku prijazni obliki.
Končni cilj je bil ustvariti klepetalnega robota, ki bi brezhibno integriral javno dostopne podatke, skupaj z lastniškimi podatki Q4, specifičnimi za stranko, hkrati pa ohranil najvišjo raven varnosti in zasebnosti podatkov. Kar zadeva zmogljivost, je bil cilj ohraniti odzivni čas na poizvedbo sekund, da bi zagotovili pozitivno izkušnjo za končne uporabnike.
Finančni trgi so regulirana industrija z velikimi vložki. Zagotavljanje napačnih ali zastarelih informacij lahko vpliva na zaupanje vlagateljev in delničarjev, poleg drugih možnih tveganj za zasebnost podatkov. Z razumevanjem panoge in zahtev postavlja Q4 zasebnost podatkov in natančnost odziva kot vodilni načeli pri ocenjevanju katere koli rešitve, preden jo lahko damo na trg.
Za dokaz koncepta se je Q4 odločil uporabiti nabor podatkov o finančnem lastništvu. Nabor podatkov je sestavljen iz podatkovnih točk časovne vrste, ki predstavljajo število sredstev v lasti; zgodovino transakcij med investicijskimi institucijami, posamezniki in javnimi podjetji; in še veliko drugih elementov.
Ker je Q4 želel zagotoviti, da lahko zadovolji vse funkcionalne in nefunkcionalne zahteve, o katerih smo razpravljali, je moral projekt ostati tudi komercialno izvedljiv. To je bilo upoštevano v celotnem procesu odločanja o pristopu, arhitekturi, izbiri tehnologije in elementih, specifičnih za rešitev.
Eksperimentiranje in izzivi
Že od začetka je bilo jasno, da bo moral Q4 za razumevanje vprašanja človeškega jezika in ustvarjanje natančnih odgovorov uporabiti velike jezikovne modele (LLM).
Sledi nekaj poskusov, ki jih je izvedla ekipa, skupaj z ugotovljenimi izzivi in pridobljenimi izkušnjami:
- Predhodni trening – Q4 je razumel zapletenost in izzive, ki jih prinaša predhodno usposabljanje LLM z uporabo lastnega nabora podatkov. Hitro je postalo očitno, da je ta pristop intenziven z viri in številnimi nepomembnimi koraki, kot so predhodna obdelava podatkov, usposabljanje in vrednotenje. Poleg vloženega truda bi bilo to pretirano drago. Glede na naravo nabora podatkov o časovni vrsti je Q4 tudi spoznal, da bo moral nenehno izvajati postopno predhodno usposabljanje, ko bodo prihajali novi podatki. To bi zahtevalo namensko meddisciplinarno ekipo s strokovnim znanjem na področju podatkovne znanosti, strojnega učenja in domene. znanja.
- Fina nastavitev – Natančna nastavitev predhodno usposobljenega modela temeljev (FM), vključenega z uporabo več označenih primerov. Ta pristop je pokazal nekaj začetnega uspeha, vendar je bila v mnogih primerih halucinacija modela izziv. Model se je trudil razumeti niansirane kontekstualne namige in je vrnil napačne rezultate.
- RAG s pomenskim iskanjem – Običajni RAG s semantičnim iskanjem je bil zadnji korak pred prehodom na generacijo SQL. Ekipa je eksperimentirala z uporabo iskanja, semantičnega iskanja in vdelav za ekstrahiranje konteksta. Med poskusom z vdelavami je bil nabor podatkov pretvorjen v vdelave, shranjen v vektorski zbirki podatkov in nato usklajen z vdelavami vprašanja za ekstrahiranje konteksta. Pridobljeni kontekst v katerem koli od treh poskusov je bil nato uporabljen za razširitev prvotnega poziva kot vhoda v LLM. Ta pristop je dobro deloval pri besedilni vsebini, kjer so podatki sestavljeni iz naravnega jezika z besedami, stavki in odstavki. Glede na naravo nabora podatkov Q4, ki je večinoma finančni podatki, sestavljeni iz številk, finančnih transakcij, tečajev delnic in datumov, so bili rezultati v vseh treh primerih podoptimalni. Tudi pri uporabi vdelav so bile vdelave, ustvarjene iz števil, težave z razvrščanjem po podobnosti in so v mnogih primerih privedle do pridobivanja napačnih informacij.
Sklep Q4: Generiranje SQL je pot naprej
Glede na izzive, s katerimi se sooča uporaba običajne metodologije RAG, je ekipa začela razmišljati o ustvarjanju SQL. Ideja je bila, da bi LLM najprej ustvarili stavek SQL iz uporabniškega vprašanja, predstavljen LLM v naravnem jeziku. Ustvarjena poizvedba se nato izvaja proti bazi podatkov, da se pridobi ustrezen kontekst. Kontekst se končno uporabi za razširitev vnosnega poziva za korak povzemanja.
Hipoteza Q4 je bila, da so morali za boljši priklic koraka iskanja, zlasti za numerični nabor podatkov, najprej ustvariti SQL iz uporabniškega vprašanja. Verjeli so, da to ne samo poveča natančnost, ampak tudi ohrani kontekst v poslovni domeni za določeno vprašanje. Za generiranje poizvedb in za generiranje natančnega SQL-a je moral Q4 omogočiti LLM-u, da se popolnoma zaveda konteksta svoje strukture nabora podatkov. To je pomenilo, da je bilo treba v poziv vključiti shemo baze podatkov, nekaj vzorčnih podatkovnih vrstic in človeku berljive razlage polj za polja, ki jih ni enostavno razumeti.
Na podlagi začetnih testov je ta metoda pokazala odlične rezultate. LLM, opremljen z vsemi potrebnimi informacijami, je lahko ustvaril pravilen SQL, ki se je nato zagnal v bazi podatkov za pridobitev pravilnega konteksta. Po eksperimentiranju z idejo se je Q4 odločil, da je ustvarjanje SQL pot naprej za reševanje izzivov ekstrakcije konteksta za njihov lasten nabor podatkov.
Začnimo z opisom splošnega pristopa k rešitvi, ga razdelimo na njegove komponente in nato sestavimo dele.
Pregled rešitev
LLM so veliki modeli z milijardami parametrov, ki so vnaprej usposobljeni z uporabo zelo velikih količin podatkov iz različnih virov. Zaradi obsežnosti naborov podatkov o usposabljanju se pričakuje, da imajo LLM splošno znanje na različnih področjih. LLM-ji so znani tudi po svojih sposobnostih sklepanja, ki se razlikujejo od enega modela do drugega. To splošno vedenje je mogoče optimizirati za določeno domeno ali panogo z nadaljnjo optimizacijo temeljnega modela z uporabo dodatnih podatkov o predhodnem usposabljanju, specifičnih za domeno, ali s fino nastavitvijo z uporabo označenih podatkov. Ob ustreznem kontekstu, metapodatkih in navodilih lahko dobro izbrani splošni LLM ustvari visokokakovosten SQL, če ima dostop do pravega domensko specifičnega konteksta.
V primeru uporabe Q4 začnemo s prevajanjem vprašanja stranke v SQL. To naredimo tako, da združimo uporabniško vprašanje, shemo baze podatkov, nekaj vzorčnih vrstic baze podatkov in podrobna navodila kot poziv LLM za ustvarjanje SQL. Ko imamo SQL, lahko izvedemo korak preverjanja, če se nam zdi potreben. Ko smo zadovoljni s kakovostjo SQL, izvedemo poizvedbo proti bazi podatkov, da pridobimo ustrezen kontekst, ki ga potrebujemo za naslednji korak. Zdaj, ko imamo ustrezen kontekst, lahko pošljemo izvirno vprašanje uporabnika, pridobljeni kontekst in nabor navodil nazaj na LLM, da ustvarimo končni povzetek odgovora. Cilj zadnjega koraka je, da LLM povzame rezultate in zagotovi kontekstualen in natančen odgovor, ki se lahko nato posreduje uporabniku.
Izbira LLM, ki se uporablja na vsaki stopnji procesa, močno vpliva na natančnost, stroške in zmogljivost. Izbira platforme ali tehnologije, ki vam lahko omogoči prilagodljivost preklapljanja med LLM-ji znotraj istega primera uporabe (več izletov LLM-ja za različne naloge) ali v različnih primerih uporabe, je lahko koristna pri optimizaciji kakovosti izhoda, zakasnitve in stroškov . Izbiro LLM obravnavamo kasneje v tej objavi.
Gradniki rešitve
Zdaj, ko smo izpostavili pristop na visoki ravni, se poglobimo v podrobnosti, začenši z gradniki rešitve.
Amazon Bedrock
Amazon Bedrock je popolnoma upravljana storitev, ki ponuja izbiro visoko zmogljivih FM-jev vodilnih podjetij, vključno z AI21 Labs, Anthropic, Cohere, Meta, Stability AI in Amazon. Amazon Bedrock ponuja tudi širok nabor orodij, ki so potrebna za izdelavo generativnih aplikacij AI, poenostavitev razvojnega procesa ter ohranjanje zasebnosti in varnosti. Poleg tega lahko z Amazon Bedrock izbirate med različnimi možnostmi FM in lahko dodatno zasebno zasebno prilagodite modele z uporabo lastnih podatkov, da uskladite odzive modelov z zahtevami vašega primera uporabe. Amazon Bedrock je popolnoma brez strežnika brez osnovne infrastrukture za upravljanje razširitve dostopa do razpoložljivih modelov prek enega samega API-ja. Nazadnje, Amazon Bedrock podpira več zahtev glede varnosti in zasebnosti, vključno z upravičenostjo do HIPAA in skladnostjo z GDPR.
V rešitvi Q4 uporabljamo Amazon Bedrock kot gradnik modela brez strežnika, ki temelji na API-ju in ima več temeljev. Ker nameravamo narediti več izletov v LLM znotraj istega primera uporabe, lahko glede na vrsto naloge izberemo model, ki je najbolj optimalen za določeno nalogo, pa naj bo to generiranje SQL, validacija ali povzemanje.
LangChain
LangChain je odprtokodno ogrodje za integracijo in orkestracijo z naborom vnaprej zgrajenih modulov (V/I, iskanje, verige in agenti), ki jih lahko uporabite za integracijo in orkestracijo nalog med FM-ji, viri podatkov in orodji. Ogrodje olajša gradnjo generativnih aplikacij AI, ki zahtevajo orkestriranje več korakov za ustvarjanje želenega rezultata, ne da bi morali pisati kodo iz nič. LangChain podpira Amazon Bedrock kot API za več temeljnih modelov.
Specifično za primer uporabe Q4 uporabljamo LangChain za usklajevanje in orkestriranje nalog v našem delovnem toku, vključno s povezovanjem z viri podatkov in LLM-ji. Ta pristop je poenostavil našo kodo, ker lahko uporabimo obstoječe module LangChain.
SQLDatabaseChain
SQLDatabaseChain je veriga LangChain, ki jo je mogoče uvoziti iz langchain_experimental. SLDatabaseChain omogoča preprosto ustvarjanje, implementacijo in izvajanje poizvedb SQL z uporabo učinkovitih pretvorb in implementacij besedila v SQL.
V našem primeru uporabe uporabljamo SQLDatabaseChain pri ustvarjanju SQL, s čimer poenostavljamo in usmerjamo interakcije med bazo podatkov in LLM.
Nabor podatkov
Naš strukturirani nabor podatkov je lahko v bazi podatkov SQL, podatkovnem jezeru ali skladišču podatkov, če imamo podporo za SQL. V naši rešitvi lahko uporabimo katero koli vrsto nabora podatkov s podporo za SQL; to bi moralo biti abstrahirano od rešitve in je na noben način ne bi smelo spremeniti.
Podrobnosti o izvajanju
Zdaj, ko smo raziskali pristop rešitve, komponente rešitve, izbiro tehnologije in orodij, lahko sestavimo dele. Naslednji diagram poudarja rešitev od konca do konca.
Sprehodimo se skozi podrobnosti izvedbe in potek postopka.
Ustvarite poizvedbo SQL
Za poenostavitev kodiranja uporabljamo obstoječa ogrodja. LangChain uporabljamo kot orkestracijsko ogrodje. Začnemo z vnosno stopnjo, kjer prejmemo uporabniško vprašanje v naravnem jeziku.
V tej prvi fazi vzamemo ta vnos in ustvarimo enakovreden SQL, ki ga lahko zaženemo v bazi podatkov za ekstrakcijo konteksta. Za ustvarjanje SQL uporabljamo SQLDatabaseChain, ki se opira na Amazon Bedrock za dostop do želenega LLM. Z Amazon Bedrock z uporabo enega samega API-ja dobimo dostop do številnih osnovnih LLM in lahko izberemo pravega za vsako LLM potovanje, ki ga opravimo. Najprej vzpostavimo povezavo z bazo podatkov in pridobimo zahtevano shemo tabele skupaj z nekaj vzorčnimi vrsticami iz tabel, ki jih nameravamo uporabiti.
Pri našem testiranju smo ugotovili, da je 2–5 vrstic podatkov tabele dovolj, da zagotovi dovolj informacij modelu, ne da bi dodali preveč nepotrebnih stroškov. Tri vrstice so bile ravno dovolj za zagotavljanje konteksta, ne da bi preobremenili model s preveč vnosa. V našem primeru uporabe smo začeli z Anthropic Claude V2. Model je znan po svojem naprednem sklepanju in artikuliranih kontekstualnih odzivih, ko so na voljo pravi kontekst in navodila. Kot del navodil lahko LLM vključimo več podrobnosti, ki pojasnjujejo. Na primer, lahko opišemo ta stolpec Comp_NAME
pomeni ime podjetja. Zdaj lahko sestavimo poziv tako, da združimo uporabniško vprašanje, kot je, shemo baze podatkov, tri vzorčne vrstice iz tabele, ki jo nameravamo uporabiti, in nabor navodil za generiranje zahtevanega SQL v čisti obliki SQL brez komentarjev ali dodatkov.
Vsi vhodni elementi skupaj se štejejo za poziv za vnos modela. Dobro zasnovan poziv za vnos, ki je prilagojen želeni sintaksi modela, močno vpliva na kakovost in zmogljivost izhoda. Pomembna je tudi izbira modela, ki ga boste uporabili za določeno nalogo, ne le zato, ker vpliva na kakovost izpisa, ampak tudi zato, ker vpliva na stroške in zmogljivost.
O izbiri modela in hitrem inženiringu ter optimizaciji razpravljamo kasneje v tej objavi, vendar je treba omeniti, da smo za fazo generiranja poizvedbe opazili, da je Claude Instant lahko proizvedel primerljive rezultate, zlasti ko je bilo uporabniško vprašanje dobro formulirano in ni tako prefinjeno. Vendar pa je Claude V2 dosegel boljše rezultate tudi z bolj zapletenimi in posrednimi uporabniškimi vnosi. Izvedeli smo, da čeprav v nekaterih primerih Claude Instant lahko zagotovi zadostno natančnost z boljšo zakasnitvijo in ceno, je bil naš primer za generiranje poizvedb bolj primeren za Claude V2.
Preverite poizvedbo SQL
Naš naslednji korak je preveriti, ali je LLM uspešno ustvaril pravo sintakso poizvedbe in ali je poizvedba kontekstualno smiselna glede na sheme baze podatkov in podane primere vrstic. Za ta korak preverjanja se lahko vrnemo na izvirno preverjanje veljavnosti poizvedbe znotraj SQLDatabaseChain ali pa izvedemo drugo potovanje do LLM, vključno z ustvarjeno poizvedbo skupaj z navodili za preverjanje veljavnosti.
Če za korak preverjanja uporabimo LLM, lahko uporabimo isti LLM kot prej (Claude V2) ali manjši, zmogljivejši LLM za enostavnejšo nalogo, kot je Claude Instant. Ker uporabljamo Amazon Bedrock, bi morala biti to zelo preprosta prilagoditev. Z uporabo istega API-ja lahko spremenimo ime modela v klicu API-ja, ki poskrbi za spremembo. Pomembno je omeniti, da lahko v večini primerov manjši LLM zagotovi boljšo učinkovitost pri stroških in zakasnitvi in ga je treba upoštevati – dokler dosegate želeno natančnost. V našem primeru je testiranje dokazalo, da je ustvarjena poizvedba dosledno točna in s pravo sintakso. Ker smo to vedeli, smo lahko preskočili ta korak preverjanja in prihranili pri zakasnitvi in stroških.
Zaženite poizvedbo SQL
Zdaj, ko imamo preverjeno poizvedbo SQL, lahko izvedemo poizvedbo SQL proti bazi podatkov in pridobimo ustrezen kontekst. To bi moral biti preprost korak.
Vzamemo ustvarjeni kontekst, ga posredujemo LLM po naši izbiri z začetnim uporabniškim vprašanjem in nekaterimi navodili ter prosimo model, da ustvari kontekstualni in artikulirani povzetek. Nato ustvarjeni povzetek predstavimo uporabniku kot odgovor na začetno vprašanje, vse skupaj pa je usklajeno s kontekstom, pridobljenim iz našega nabora podatkov.
Za LLM, vključenega v korak povzemanja, lahko uporabimo Titan Text Express ali Claude Instant. Oba bi predstavila dobre možnosti za nalogo povzemanja.
Integracija aplikacij
Zmogljivost chatbota za vprašanja in odgovore je ena od storitev umetne inteligence Q4. Da bi zagotovil modularnost in razširljivost, Q4 gradi storitve AI kot mikrostoritve, ki so dostopne aplikacijam Q4 prek API-jev. Ta pristop, ki temelji na API-ju, omogoča brezhibno integracijo z ekosistemom platforme Q4 in olajša izpostavljanje zmogljivosti storitev umetne inteligence celotnemu naboru aplikacij platforme.
Glavni cilj storitev umetne inteligence je zagotoviti enostavne zmogljivosti za pridobivanje podatkov iz katerega koli javnega ali lastniškega vira podatkov z uporabo naravnega jezika kot vnosa. Poleg tega storitve umetne inteligence zagotavljajo dodatne plasti abstrakcije, ki zagotavljajo izpolnjevanje funkcionalnih in nefunkcionalnih zahtev, kot sta zasebnost in varnost podatkov. Naslednji diagram prikazuje koncept integracije.
Izzivi pri izvajanju
Poleg izzivov, ki jih predstavlja narava strukturiranega numeričnega nabora podatkov, o katerih smo razpravljali prej, se je četrto četrtletje soočilo s številnimi drugimi izzivi pri izvajanju, ki jih je bilo treba obravnavati.
LLM izbira in uspešnost
Izbira pravega LLM za nalogo je ključnega pomena, ker neposredno vpliva na kakovost izhoda in tudi na zmogljivost (zakasnitev povratnega potovanja). Tukaj je nekaj dejavnikov, ki vplivajo na postopek izbire LLM:
- Vrsta LLM – Način, na katerega so zasnovani FM-ji, in začetni podatki, na podlagi katerih je bil model predhodno usposobljen, določajo vrste nalog, pri katerih bi bil LLM dober, in kako dober bo. Na primer, besedilni LLM bi bil dober pri ustvarjanju in povzemanju besedila, medtem ko bi bil model besedila v sliko ali slike v besedilo bolj usmerjen k nalogam analize in generiranja slik.
- LLM velikost – Velikosti FM se merijo s številom parametrov modela, ki jih ima določen model, običajno v milijardah za sodobne LLM. Običajno, večji ko je model, dražje je prvotno usposabljanje ali naknadno natančno prilagajanje. Po drugi strani pa na splošno za isto arhitekturo modela velja, da večji kot je model, pametnejši od njega pričakujemo, da bo opravljal vrsto naloge, h kateri je namenjen.
- uspešnost LLM – Običajno večji ko je model, več časa je potrebnih za ustvarjanje izhoda, ob predpostavki, da uporabljate enake parametre izračunavanja in V/I (velikost poziva in izhoda). Poleg tega pri enaki velikosti modela na zmogljivost močno vpliva, kako optimiziran je vaš poziv, velikost V/I žetonov ter jasnost in sintaksa poziva. Dobro zasnovan poziv, skupaj z optimizirano velikostjo V/I žetona, lahko izboljša odzivni čas modela.
Zato pri optimizaciji svoje naloge upoštevajte naslednje najboljše prakse:
- Izberite model, ki je primeren za opravljeno nalogo
- Izberite najmanjšo velikost modela, ki lahko zagotovi natančnost, ki jo iščete
- Optimizirajte svojo strukturo poziva in bodite čim bolj natančni z navodili na način, ki ga model zlahka razume
- Uporabite najmanjši poziv za vnos, ki lahko zagotovi dovolj navodil in konteksta za doseganje ravni natančnosti, ki jo iščete
- Omejite izhodno velikost na najmanjšo velikost, ki je za vas lahko pomembna in zadovolji vaše izhodne zahteve
Ob upoštevanju dejavnikov izbire modela in optimizacije delovanja smo se lotili optimizacije našega primera uporabe generiranja SQL. Po nekaj testiranjih smo opazili, da bi Claude Instant, če imamo pravi kontekst in navodila, z enakimi hitrimi podatki proizvedel primerljivo kakovost SQL kot Claude V2 po veliko boljši zmogljivosti in ceni. To velja, ko je uporabniški vnos bolj neposreden in enostavnejši. Za bolj sofisticiran vnos je bil potreben Claude V2 za doseganje želene natančnosti.
Uporaba iste logike pri nalogi povzemanja nas je pripeljala do zaključka, da bi uporaba Claude Instant ali Titan Text Express zagotovila zahtevano natančnost pri veliko boljši zmogljivosti, kot če bi uporabili večji model, kot je Claude V2. Titan Text Expressed je ponudil tudi boljše razmerje med ceno in zmogljivostjo, kot smo že omenili.
Izziv orkestracije
Spoznali smo, da je treba še veliko orkestrirati, preden lahko dobimo smiseln izhodni odgovor za uporabniško vprašanje. Kot je prikazano v pregledu rešitve, je postopek vključeval več izletov baze podatkov in več izletov LLM, ki so med seboj prepleteni. Če bi gradili iz nič, bi morali narediti precejšnjo naložbo v nediferencirano dvigovanje težkih predmetov, samo da bi pripravili osnovno kodo. Hitro smo se preusmerili na uporabo LangChaina kot orkestracijskega ogrodja, pri čemer smo izkoristili moč odprtokodne skupnosti in ponovno uporabili obstoječe module, ne da bi znova odkrivali kolo.
Izziv SQL
Spoznali smo tudi, da generiranje SQL ni tako preprosto kot mehanizmi ekstrakcije konteksta, kot je semantično iskanje ali uporaba vdelav. Najprej moramo pridobiti shemo baze podatkov in nekaj vzorčnih vrstic, ki jih bomo vključili v naš poziv LLM. Obstaja tudi stopnja validacije SQL, kjer smo morali komunicirati z bazo podatkov in LLM. SQLDatabaseChain je bila očitna izbira orodja. Ker je del LangChaina, ga je bilo enostavno prilagoditi, zdaj pa lahko upravljamo generiranje SQL in preverjanje s pomočjo verige, kar zmanjša količino dela, ki smo ga morali opraviti.
Izzivi uspešnosti
Z uporabo Claude V2 in po ustreznem hitrem inženiringu (o katerem razpravljamo v naslednjem razdelku) smo lahko izdelali visokokakovosten SQL. Glede na kakovost ustvarjenega SQL smo začeli preverjati, koliko vrednosti dejansko doda stopnja preverjanja. Po nadaljnji analizi rezultatov je postalo jasno, da je bila kakovost ustvarjenega SQL dosledno natančna na način, zaradi katerega so bili stroški in koristi dodajanja stopnje preverjanja SQL neugodni. Na koncu smo odpravili stopnjo preverjanja veljavnosti SQL, ne da bi to negativno vplivalo na kakovost naših rezultatov, in skrajšali povratni čas preverjanja veljavnosti SQL.
Poleg optimizacije za stroškovno in uspešnostno učinkovitejši LLM za korak povzemanja smo lahko uporabili Titan Text Express za boljšo zmogljivost in stroškovno učinkovitost.
Nadaljnja optimizacija zmogljivosti je vključevala natančno nastavitev procesa generiranja poizvedb z uporabo učinkovitih tehnik hitrega inženiringa. Namesto zagotavljanja obilice žetonov je bil poudarek na zagotavljanju najmanjše količine vhodnih žetonov v pravi sintaksi, ki jo je model usposobil za razumevanje, in z minimalnim, a optimalnim naborom navodil. O tem bomo podrobneje razpravljali v naslednjem razdelku – to je pomembna tema, ki je uporabna ne samo tukaj, ampak tudi v drugih primerih uporabe.
Hiter inženiring in optimizacija
Claude na Amazon Bedrocku lahko prilagodite za različne primere poslovne uporabe, če uporabite prave tehnike hitrega inženiringa. Claude večinoma deluje kot pogovorni pomočnik, ki uporablja format človek/pomočnik. Claude je usposobljen za izpolnjevanje besedila za vlogo pomočnika. Glede na želena navodila in hitre zaključke lahko optimiziramo naše pozive za Clauda z uporabo več tehnik.
Začnemo s pravilno oblikovano predlogo poziva, ki daje veljaven zaključek, nato pa lahko še naprej optimiziramo odzive in eksperimentiramo s pozivi z različnimi nizi vnosov, ki so reprezentativni za podatke iz resničnega sveta. Priporočljivo je, da med razvojem predloge za poziv dobite veliko vnosov. Uporabite lahko tudi ločene nize podatkov o hitrem razvoju in testnih podatkov.
Drug način za optimizacijo odziva Claude je eksperimentiranje in ponavljanje z dodajanjem pravil, navodil in koristne optimizacije. S temi optimizacijami si lahko ogledate različne vrste zaključkov, tako da na primer rečete Claudu, naj omeni »ne vem«, da prepreči halucinacije, razmišljate korak za korakom, uporabite hitro veriženje in daste prostor za »razmišljanje«, ko ustvarja odgovore in dvakratno preverjanje razumevanja in točnosti.
Uporabimo nalogo generiranja poizvedbe in razpravljajmo o nekaterih tehnikah, ki smo jih uporabili za optimizacijo našega poziva. Nekaj ključnih elementov je koristilo našim prizadevanjem za ustvarjanje poizvedb:
- Uporaba ustrezne sintakse človek/pomočnik
- Uporaba oznak XML (Claude spoštuje in razume oznake XML)
- Dodajanje jasnih navodil za model za preprečevanje halucinacij
Naslednji generični primer prikazuje, kako smo uporabili sintakso človek/pomočnik, uporabili oznake XML in dodali navodila za omejitev izhoda na SQL ter navodilo modelu, naj reče »oprosti, ne morem pomagati«, če ne more ustvariti ustreznega SQL . Oznake XML so bile uporabljene za oblikovanje navodil, dodatnih namigov, sheme baze podatkov, dodatnih razlag tabel in primerov vrstic.
Končna delovna rešitev
Potem ko smo obravnavali vse izzive, ugotovljene med dokazom koncepta, smo izpolnili vse zahteve glede rešitve. Q4 je bil zadovoljen s kakovostjo SQL, ki ga je ustvaril LLM. To velja za enostavna opravila, ki so zahtevala samo stavek WHERE za filtriranje podatkov, in tudi za bolj zapletena opravila, ki so zahtevala združevanje na podlagi konteksta z GROUP BY in matematičnimi funkcijami. Zakasnitev celotne rešitve od konca do konca je bila znotraj tistega, kar je bilo opredeljeno kot sprejemljivo za primer uporabe – enomestne sekunde. Vse to po zaslugi izbire optimalnega LLM na vsaki stopnji, ustreznega hitrega inženiringa, odprave koraka preverjanja SQL in uporabe učinkovitega LLM za korak povzemanja (Titan Text Express ali Claude Instant).
Treba je omeniti, da sta uporaba Amazon Bedrock kot popolnoma upravljane storitve in možnost dostopa do nabora LLM prek istega API-ja omogočila eksperimentiranje in brezhibno preklapljanje med LLM-ji s spremembo imena modela v klicu API-ja. S to stopnjo prilagodljivosti je Q4 lahko izbral najbolj zmogljivega LLM za vsak klic LLM glede na naravo naloge, pa naj gre za ustvarjanje poizvedb, preverjanje ali povzemanje.
zaključek
Ni rešitve, ki bi ustrezala vsem primerom uporabe. Pri pristopu RAG je kakovost izhoda močno odvisna od zagotavljanja pravega konteksta. Izločanje pravega konteksta je ključnega pomena in vsak nabor podatkov je drugačen s svojimi edinstvenimi lastnostmi.
V tej objavi smo pokazali, da lahko za numerične in strukturirane nize podatkov uporaba SQL za ekstrahiranje konteksta, ki se uporablja za razširitev, vodi do ugodnejših rezultatov. Pokazali smo tudi, da lahko okviri, kot je LangChain, zmanjšajo napor pri kodiranju. Poleg tega smo razpravljali o potrebi po možnosti preklapljanja med LLM-ji znotraj istega primera uporabe, da bi dosegli najbolj optimalno natančnost, zmogljivost in stroške. Nazadnje smo poudarili, kako Amazon Bedrock, ki je brez strežnika in ima pod pokrovom različne LLM-je, zagotavlja prožnost, potrebno za izdelavo varnih, zmogljivih in stroškovno optimiziranih aplikacij z najmanjšo količino težkega dela.
Začnite svojo pot proti izdelavi generativnih aplikacij, ki podpirajo AI, tako da identificirate primer uporabe, ki ima vrednost za vaše podjetje. Generacija SQL, kot je ugotovila ekipa Q4, lahko spremeni igro pri izdelavi pametnih aplikacij, ki se integrirajo z vašimi shrambami podatkov, s čimer odklenete potencial prihodka.
O avtorjih
Tamer Soliman je višji arhitekt rešitev pri AWS. Strankam neodvisnega prodajalca programske opreme (ISV) pomaga pri inovacijah, gradnji in širitvi na AWS. Ima več kot dve desetletji izkušenj v industriji na področju svetovanja, usposabljanja in strokovnih storitev. Je izumitelj z več patenti s tremi podeljenimi patenti, njegove izkušnje pa zajemajo več tehnoloških področij, vključno s telekomunikacijami, mreženjem, integracijo aplikacij, AI/ML in uvedbami v oblaku. Specializiran je za mreženje AWS in ima globoko strast do nagnjenosti k strojem, umetne inteligence in generativne umetne inteligence.
Mani Khanuja je tehnični vodja – Generative AI Specialists, avtorica knjige – Applied Machine Learning and High Performance Computing on AWS in članica upravnega odbora Fundacije za ženske v proizvodnem izobraževanju. Vodi projekte strojnega učenja (ML) na različnih področjih, kot so računalniški vid, obdelava naravnega jezika in generativna umetna inteligenca. Strankam pomaga zgraditi, usposobiti in uvesti velike modele strojnega učenja v velikem obsegu. Govori na internih in zunanjih konferencah, kot so re:Invent, Women in Manufacturing West, YouTube spletni seminarji in GHC 23. V prostem času se rada odpravi na dolge teke ob plaži.
Stanislav Ješčenko je programski arhitekt pri Q4 Inc.. Ima več kot desetletje industrijskih izkušenj na področju razvoja programske opreme in sistemske arhitekture. Njegovo raznoliko ozadje, ki obsega vloge, kot sta tehnični vodja in višji razvijalec celotnega sklada, daje moč njegovim prispevkom k pospeševanju inovacij platforme Q4. Stanislav je predan spodbujanju tehničnih inovacij in oblikovanju strateških rešitev na tem področju.
- Distribucija vsebine in PR s pomočjo SEO. Okrepite se še danes.
- PlatoData.Network Vertical Generative Ai. Opolnomočite se. Dostopite tukaj.
- PlatoAiStream. Web3 Intelligence. Razširjeno znanje. Dostopite tukaj.
- PlatoESG. Ogljik, CleanTech, Energija, Okolje, sončna energija, Ravnanje z odpadki. Dostopite tukaj.
- PlatoHealth. Obveščanje o biotehnologiji in kliničnih preskušanjih. Dostopite tukaj.
- vir: https://aws.amazon.com/blogs/machine-learning/how-q4-inc-used-amazon-bedrock-rag-and-sqldatabasechain-to-address-numerical-and-structured-dataset-challenges-building-their-qa-chatbot/
- :ima
- : je
- :ne
- :kje
- $GOR
- 100
- 118
- 125
- 15%
- 23
- 7
- a
- sposobnosti
- sposobnost
- Sposobna
- abstrakcija
- obilje
- sprejemljiv
- dostop
- dostopen
- Račun
- natančnost
- natančna
- Doseči
- čez
- aktov
- dejansko
- prilagodijo
- dodano
- dodajanje
- Poleg tega
- Dodatne
- Poleg tega
- dodatkov
- Naslov
- naslovljena
- Prilagoditev
- napredno
- napredovanje
- Prednost
- po
- proti
- agenti
- agregat
- AI
- Storitve AI
- primeri uporabe ai
- AI / ML
- Namerjen
- uskladiti
- poravnano
- vsi
- omogočajo
- dovoljene
- skupaj
- Prav tako
- Čeprav
- am
- Amazon
- Amazon Web Services
- znesek
- zneski
- an
- Analiza
- Analitiki
- analitika
- analizirati
- analiziranje
- in
- Še ena
- odgovor
- odgovori
- Antropično
- kaj
- karkoli
- API
- API-ji
- primerno
- uporaba
- aplikacije
- uporabna
- pristop
- Arhitektura
- SE
- AS
- vprašati
- Sredstva
- Pomočnik
- pomoč
- izbor
- At
- povečanje
- Povečana
- Avtor
- Na voljo
- zaveda
- AWS
- nazaj
- ozadje
- temeljijo
- Osnovni
- BE
- Beach
- postal
- ker
- bilo
- pred
- Začetek
- vedenje
- počutje
- Menimo
- koristno
- BEST
- najboljše prakse
- Boljše
- med
- milijardah
- Block
- Bloki
- svet
- uprava
- Knjiga
- Bot
- tako
- širina
- Break
- široka
- izgradnjo
- Building
- Gradi
- zgrajena
- poslovni
- vendar
- by
- klic
- prišel
- CAN
- Lahko dobiš
- Zmogljivosti
- zmožnost
- Kapital
- Trgi kapitala
- ki
- primeru
- primeri
- verige
- verige
- izziv
- izzivi
- izzivi gradnje
- spremenite
- Spreminjevalec
- spreminjanje
- lastnosti
- chatbot
- klepetalnice
- izbira
- Izberite
- izbiri
- jasnost
- čiščenje
- jasno
- bližje
- Cloud
- Koda
- Kodiranje
- Stolpec
- kombinirani
- združevanje
- kako
- komentarji
- komercialno
- komunicirajo
- Komunikacija
- skupnost
- Podjetja
- podjetje
- primerljiva
- dokončanje
- kompleksna
- kompleksnost
- skladnost
- deli
- razumeti
- Izračunajte
- računalnik
- Računalniška vizija
- računalništvo
- Koncept
- zaključuje
- sklenjene
- Sklenitev
- poteka
- konference
- Connect
- Povezovanje
- povezava
- Razmislite
- šteje
- upoštevamo
- dosledno
- Sestavljeno
- vsebuje
- gradnjo
- svetovanje
- vsebina
- ozadje
- kontekstualno
- naprej
- stalno
- prispevkov
- konvencionalne
- pogovorni
- konverzije
- pretvori
- usklajevanje
- Core
- popravi
- strošek
- bi
- ustvarjajo
- kritično
- CRM
- ključnega pomena
- stranka
- Stranke, ki so
- vsak dan
- datum
- Data jezero
- podatkovne točke
- zasebnost podatkov
- Zasebnost in varnost podatkov
- znanost o podatkih
- Podatkov usmerjenih
- Baze podatkov
- nabor podatkov
- Termini
- desetletje
- desetletja
- odločil
- Odločanje
- namenjen
- šteje
- opredeljen
- Povpraševanje
- Dokazano
- dokazuje,
- odvisno
- razporedi
- razmestitve
- opisati
- Opisuje
- želeno
- podrobno
- Podrobnosti
- določa
- Razvojni
- razvoju
- Razvoj
- drugačen
- neposredna
- neposredno
- Direktorji
- razpravlja
- razpravljali
- potop
- razne
- do
- domena
- domen
- dont
- dvojno preverjanje
- navzdol
- vožnjo
- 2
- med
- dinamično
- vsak
- prej
- lahka
- ekosistem
- Izobraževanje
- Učinkovito
- učinkovitosti
- učinkovite
- učinkovito
- prizadevanje
- prizadevanja
- bodisi
- elementi
- upravičenost
- odstranjevanje
- smirkovim
- zaposleni
- omogoča
- konec
- konec koncev
- končala
- sodelovati
- sodelovanje
- Inženiring
- dovolj
- zagotovitev
- opremljena
- Enakovredna
- ESG
- zlasti
- vzpostaviti
- ocenjevanje
- Ocena
- Tudi
- dogodki
- Tudi vsak
- Primer
- Primeri
- obstoječih
- pričakovati
- Pričakuje
- drago
- izkušnje
- poskus
- Poskusi
- strokovnjak
- strokovno znanje
- Raziskano
- express
- izražena
- razširitev
- zunanja
- ekstrakt
- pridobivanje
- soočen
- olajša
- dejavniki
- hitro tempu
- ugodna
- izvedljivo
- Nekaj
- Polje
- Področja
- izpolnite
- filter
- končna
- končno
- finančna
- finančnih podatkov
- prva
- prilagodljivost
- Pretok
- Osredotočite
- sledi
- po
- za
- format
- Naprej
- gojenje
- je pokazala,
- Fundacija
- FRAME
- Okvirni
- okviri
- brezplačno
- iz
- polno
- Celoten sklad
- v celoti
- funkcionalno
- funkcije
- nadalje
- igra
- game-changer
- GDPR
- Skladnost z BDP
- usmerjena
- splošno
- ustvarjajo
- ustvarila
- ustvarja
- ustvarjajo
- generacija
- generativno
- Generativna AI
- dobili
- pridobivanje
- Daj
- dana
- daje
- Giving
- Go
- Cilj
- Cilji
- dobro
- odobreno
- veliko
- skupina
- Pridelovanje
- imel
- strani
- srečna
- Imajo
- ob
- he
- s sedežem
- težka
- težko dvigovanje
- pomoč
- Pomaga
- jo
- tukaj
- visoka
- visoko zmogljiv
- visoka kvaliteta
- več
- najvišja
- Poudarjeno
- Poudarki
- zelo
- nasveti
- njegov
- zgodovina
- napa
- Kako
- Vendar
- HTTPS
- človeškega
- človeško berljivo
- i
- Ideja
- identificirati
- identifikacijo
- if
- slika
- vpliv
- prizadeti
- udarne
- Vplivi
- izvajati
- Izvajanje
- izvedbe
- izvajali
- posledice
- Pomembno
- izboljšanje
- in
- V drugi
- Inc
- vključujejo
- Vključno
- Povečajte
- inkrementalno
- Neodvisni
- posamezniki
- Industrija
- Podatki
- Infrastruktura
- začetna
- na začetku
- inovacije
- Inovacije
- vhod
- vhodi
- instant
- Institucije
- Navodila
- integrirati
- integracija
- nameravajo
- interakcijo
- interakcije
- notranji
- prepletena
- v
- intuitivno
- naložbe
- Investitor
- Vlagatelji
- vključeni
- izdajateljev
- izv
- IT
- ITS
- Potovanje
- jpg
- samo
- Imejte
- Ključne
- Vedeti
- znanje
- znano
- Labs
- Jezero
- Pokrajina
- jezik
- velika
- večja
- Zadnja
- nazadnje
- Latenca
- pozneje
- plasti
- vodi
- vodi
- Interesenti
- naučili
- učenje
- vsaj
- Led
- Spoznanja
- Pridobljena spoznanja
- Stopnja
- dviganje
- kot
- všeč mi je
- LLM
- Logika
- London
- Long
- Poglej
- si
- Sklop
- stroj
- strojno učenje
- je
- Glavne
- v glavnem
- Mainstream
- vzdrževati
- vzdrževanje
- Znamka
- IZDELA
- upravljanje
- upravlja
- upravljanje
- proizvodnja
- več
- Tržna
- Analiza trga
- Market Data
- Prisotnost
- ujema
- matematični
- Maj ..
- smiselna
- pomenilo
- Mehanizmi
- Srečati
- član
- pol
- Meta
- metapodatki
- Metoda
- Metodologija
- mikro storitve
- minimalna
- minimiziranje
- mix
- ML
- Model
- modeli
- sodobna
- Moduli
- več
- Najbolj
- večinoma
- premikanje
- veliko
- več
- več
- Ime
- materni
- naravna
- Obdelava Natural Language
- Narava
- potrebno
- Nimate
- potrebna
- negativno
- mreženje
- Novo
- NY
- Naslednja
- št
- Upoštevajte
- Opažam
- zdaj
- Številka
- številke
- Cilj
- Očitna
- of
- off
- ponujen
- Ponudbe
- uradniki
- pisarne
- pogosto
- on
- ONE
- samo
- odprite
- open source
- optimalna
- optimizacija
- Optimizirajte
- optimizirana
- optimizacijo
- možnosti
- or
- orkestriranje
- orkestracijo
- Da
- izvirno
- Ostalo
- naši
- izhod
- več
- Splošni
- pregled
- velika
- lastne
- v lasti
- lastništvo
- parametri
- del
- zlasti
- opravil
- strast
- patent
- Patenti
- pot
- Izvedite
- performance
- izvajati
- kramp
- kosov
- platforma
- platon
- Platonova podatkovna inteligenca
- PlatoData
- Predvajaj
- Točka
- točke
- pozitiven
- mogoče
- Prispevek
- potencial
- moč
- Pooblastila
- vaje
- prednostno
- predstaviti
- predstavljeni
- preprečiti
- Cena
- Načela
- zasebnost
- Zasebnost in varnost
- Postopek
- obravnavati
- proizvodnjo
- Proizvedeno
- Izdelki
- strokovni
- globok
- Projekt
- projekti
- pozove
- dokazilo
- dokaz koncepta
- pravilno
- lastniško
- dokazano
- zagotavljajo
- če
- zagotavlja
- zagotavljanje
- javnega
- javna podjetja
- javno
- Namen
- dal
- Vprašanja in odgovori
- kakovost
- poizvedbe
- vprašanje
- hitro
- kotacije
- Lestvica
- precej
- RE
- pripravljen
- resnični svet
- realizirano
- prejeti
- priporočeno
- evidence
- sklicevanje
- urejeno
- Odnosi
- Razmerje
- pomembno
- Poročila
- predstavnik
- predstavlja
- predstavlja
- zahteva
- obvezna
- Zahteve
- vir
- spoštovan
- spoštuje
- Odgovor
- odgovorov
- omejiti
- Rezultati
- prihodki
- povrniti
- pregledovanje
- Pravica
- tveganja
- vloga
- vloge
- soba
- krog
- pravila
- Run
- deluje
- Enako
- zadovoljni
- zadovoljen z
- Shrani
- pravijo,
- Prilagodljivost
- Lestvica
- Znanost
- praska
- brezšivne
- brez težav
- Iskalnik
- drugi
- sekund
- Oddelek
- zavarovanje
- varnost
- glej
- izbor
- Prodajalci
- pošljite
- višji
- Občutek
- ločena
- Serija
- Brez strežnika
- Storitev
- Storitve
- nastavite
- Kompleti
- več
- oblikovanje
- delničarja
- Delničarji
- je
- shouldnt
- je pokazala,
- pokazale
- Razstave
- pomemben
- Enostavno
- enostavnejši
- poenostavljeno
- poenostavitev
- poenostavitev
- sam
- Velikosti
- velikosti
- manj
- pametna
- pametnejši
- Software
- Razvoj programske opreme
- Rešitev
- rešitve
- nekaj
- prefinjeno
- vir
- Viri
- napetost
- razponi
- Govori
- strokovnjaki
- specializirano
- specifična
- posebej
- Stabilnost
- sveženj
- Stage
- kolki
- stati
- stojala
- Začetek
- začel
- Začetek
- Izjava
- bivanje
- Korak
- Koraki
- zaloge
- borza
- shranjeni
- trgovine
- naravnost
- Strateško
- Struktura
- strukturirano
- Kasneje
- uspeh
- Uspešno
- taka
- dovolj
- primerna
- apartma
- Povzamemo
- POVZETEK
- podpora
- Podpira
- nadzor
- Preklop
- sintaksa
- sistem
- miza
- prilagojene
- Bodite
- sprejeti
- meni
- ob
- Naloga
- Naloge
- skupina
- tech
- tehnični
- tehnike
- Tehnologija
- telecom
- pove
- Predloga
- Test
- Testiranje
- testi
- besedilo
- kot
- Hvala
- da
- O
- Glavno mesto
- njihove
- POTEM
- Tukaj.
- te
- jih
- Razmišljanje
- ta
- 3
- skozi
- vsej
- čas
- Časovne serije
- krat
- titan
- do
- današnje
- skupaj
- žeton
- Boni
- tudi
- orodje
- orodja
- temo
- toronto
- proti
- Vlak
- usposobljeni
- usposabljanje
- transakcija
- Transakcije
- preoblikovanje
- Izlet
- Res
- Zaupajte
- OBRAT
- dva
- tip
- Vrste
- tipično
- ne morem
- pod
- osnovni
- razumeli
- razumevanje
- razume
- razumel
- edinstven
- odklepanje
- nepotrebna
- us
- uporaba
- primeru uporabe
- Rabljeni
- uporabnik
- Uporabniku prijazen
- uporabo
- izkorišča
- veljavno
- potrjevanje
- vrednost
- raznolikost
- različnih
- Prodajalec
- Preverjanje
- preverjeno
- preverjanje
- zelo
- preživetja
- Poglej
- Virtual
- Vizija
- sprehod
- hotel
- je
- način..
- we
- web
- spletne storitve
- Webinars
- Spletna stran
- Dobro
- šla
- so bili
- West
- Kaj
- Kolo
- kdaj
- medtem ko
- ki
- medtem
- bo
- z
- v
- brez
- Ženske
- besede
- delo
- delal
- potek dela
- deluje
- vredno
- bi
- pisati
- napisati kodo
- XML
- še
- york
- Vi
- Vaša rutina za
- youtube
- zefirnet