See postitus on kirjutatud koos Stanislav Ještšenkoga ettevõttest Q4 Inc.
Ettevõtted kasutavad küsimuste ja vastuste vestlusrobotite loomisel peavoolu lähenemisviisina Retrieval Augmented Generation (RAG). Me näeme jätkuvalt esile kerkivaid väljakutseid, mis tulenevad saadaolevate andmekogumite valiku olemusest. Need andmekogumid on sageli arvuliste ja tekstiandmete segu, mis on mõnikord struktureeritud, struktureerimata või poolstruktureeritud.
Q4 Inc. vaja lahendada mõned neist väljakutsetest ühes nende paljudest AWS-ile ehitatud tehisintellekti kasutusjuhtudest. Selles postituses käsitleme Q4 rakendatud Q&A roboti kasutusjuhtumit, väljakutseid, mida numbrilised ja struktureeritud andmekogumid esitasid, ja seda, kuidas Q4 järeldas, et SQL-i kasutamine võib olla elujõuline lahendus. Lõpuks vaatame lähemalt, kuidas Q4 meeskond kasutas Amazonase aluspõhi ja SQLDatabaseChain, et rakendada SQL-i genereerimisega RAG-põhist lahendust.
Kasutusjuhtumi ülevaade
Q4 Inc., mille peakontor asub Torontos ja mille kontorid asuvad New Yorgis ja Londonis, on juhtiv kapitaliturgude juurdepääsuplatvorm, mis muudab emitentide, investorite ja müüjate tõhusat suhtlemist, suhtlemist ja suhtlemist. Q4 platvorm hõlbustab suhtlust kapitaliturgudel läbi IR veebisaidi toodete, virtuaalsete sündmuste lahenduste, kaasamisanalüütika, investorsuhete kliendisuhete juhtimise (CRM), aktsionäride ja turuanalüüsi, järelevalve ja ESG tööriistade.
Tänasel kiirel ja andmepõhisel finantsmaastikul mängivad investorsuhete ametnikud (IRO) olulist rolli ettevõtte ja selle aktsionäride, analüütikute ja investorite vahelise suhtluse edendamisel. Oma igapäevaste tööülesannete osana analüüsivad IRO-d erinevaid andmekogumeid, sealhulgas CRM-i, omandiõigusi ja aktsiaturu andmeid. Nende andmete kogumit kasutatakse finantsaruannete koostamiseks, investorsuhete eesmärkide seadmiseks ning suhtluse haldamiseks olemasolevate ja potentsiaalsete investoritega.
Et rahuldada kasvavat nõudlust tõhusa ja dünaamilise andmeotsingu järele, oli Q4 eesmärk luua vestlusroboti Q&A tööriist, mis pakuks IRO-dele intuitiivset ja arusaadavat meetodit, et pääseda juurde vajalikule teabele kasutajasõbralikus vormingus.
Lõppeesmärk oli luua vestlusrobot, mis integreeriks sujuvalt avalikult kättesaadavad andmed koos patenteeritud kliendispetsiifiliste Q4 andmetega, säilitades samal ajal kõrgeima turvalisuse ja andmete privaatsuse. Mis puutub jõudlusesse, siis eesmärk oli säilitada päringule vastamise aeg sekundites, et tagada lõppkasutajatele positiivne kogemus.
Finantsturud on reguleeritud tööstusharu, millesse on kaasatud suured panused. Ebaõige või aegunud teabe esitamine võib lisaks muudele võimalikele andmekaitseriskidele mõjutada investorite ja aktsionäride usaldust. Mõistes tööstust ja nõudeid, seab Q4 oma juhtpõhimõteteks andmete privaatsuse ja reageerimise täpsuse mis tahes lahenduse hindamisel enne selle turule toomist.
Kontseptsiooni tõestamiseks otsustas Q4 kasutada finantsomandi andmestikku. Andmekogum koosneb aegridade andmepunktidest, mis näitavad omandis olevate varade arvu; investeerimisasutuste, eraisikute ja avalik-õiguslike äriühingute vaheliste tehingute ajalugu; ja palju muid elemente.
Kuna Q4 soovis tagada, et see vastaks kõigile funktsionaalsetele ja mittefunktsionaalsetele nõuetele, mida oleme arutanud, pidi projekt jääma ka äriliselt teostatavaks. Seda austati kogu lähenemisviisi, arhitektuuri, tehnoloogia valiku ja lahendusspetsiifiliste elementide üle otsustamisel.
Katsetamine ja väljakutsed
Algusest peale oli selge, et inimkeele küsimuse mõistmiseks ja täpsete vastuste genereerimiseks on Q4 tarvis kasutada suuri keelemudeleid (LLM).
Järgnevalt on toodud mõned katsed, mille meeskond läbi viis, koos tuvastatud väljakutsete ja saadud õppetundidega.
- Eelkoolitus – Q4 mõistis keerukust ja väljakutseid, mis kaasnevad LLM-i eelkoolitusega, kasutades oma andmestikku. Kiiresti sai selgeks, et see lähenemisviis on ressursimahukas ja sisaldab palju mittetriviaalseid etappe, nagu andmete eeltöötlus, koolitus ja hindamine. Lisaks sellega kaasnevale pingutusele oleks see kallis. Võttes arvesse aegridade andmestiku olemust, mõistis IV kvartal ka seda, et uute andmete saabudes peab ta pidevalt läbi viima järkjärgulist eelkoolitust. See oleks nõudnud pühendunud valdkondadevahelist meeskonda, kellel on teadmised andmeteaduse, masinõppe ja domeenide alal. teadmisi.
- Peenhäälestus – Eelkoolitatud vundamendimudeli (FM) peenhäälestamiseks kasutati mitut märgistatud näidet. See lähenemine näitas esialgset edu, kuid paljudel juhtudel oli mudeli hallutsinatsioon väljakutse. Mudel nägi vaeva, et mõista nüansirikkaid kontekstuaalseid vihjeid ja andis valesid tulemusi.
- RAG semantilise otsinguga – Tavapärane semantilise otsinguga RAG oli viimane samm enne SQL-i genereerimisele üleminekut. Meeskond katsetas konteksti eraldamiseks otsingut, semantilist otsingut ja manustamist. Manustamiskatse ajal teisendati andmestik manustamisteks, salvestati vektorandmebaasi ja seejärel sobitati konteksti eraldamiseks küsimuse manustega. Seejärel kasutati kolmes katses leitud konteksti algse viipa lisamiseks LLM-i sisendiks. See lähenemisviis toimis hästi tekstipõhise sisu puhul, kus andmed koosnevad loomulikust keelest sõnade, lausete ja lõikudega. Arvestades neljanda kvartali andmestiku olemust, mis koosneb peamiselt numbritest, finantstehingutest, aktsiapakkumistest ja kuupäevadest koosneva finantsandmetega, olid tulemused kõigil kolmel juhul ebaoptimaalsed. Isegi manustamist kasutades olid numbritest genereeritud manustused hädas sarnasuse järjestamisega ja viisid paljudel juhtudel ebaõige teabe hankimiseni.
Q4 järeldus: SQL-i genereerimine on tee edasi
Arvestades tavapärase RAG-i metoodika kasutamisega seotud väljakutseid, hakkas meeskond kaaluma SQL-i genereerimist. Idee oli kasutada LLM-i, et esmalt genereerida kasutaja küsimusest SQL-lause, mis esitatakse LLM-ile loomulikus keeles. Loodud päring käivitatakse seejärel andmebaasi vastu, et tuua asjakohane kontekst. Lõpuks kasutatakse konteksti kokkuvõtte sammu sisendviipa täiendamiseks.
Q4 hüpotees seisnes selles, et otsinguetapi, eriti numbrilise andmestiku suurema meeldetuletuse saamiseks pidid nad esmalt genereerima kasutaja küsimusest SQL-i. Usuti, et see mitte ainult ei suurenda täpsust, vaid hoiab ka antud küsimuse konteksti ärivaldkonnas. Päringu genereerimiseks ja täpse SQL-i genereerimiseks oli Q4 vaja, et LLM oleks oma andmestiku struktuurist täielikult kontekstis teadlik. See tähendas viipa, mis oli vajalik andmebaasi skeemi, mõne näidisandmerea ja inimloetavate väljade selgituste lisamiseks väljadele, mida pole lihtne mõista.
Esialgsete testide põhjal näitas see meetod suurepäraseid tulemusi. Kogu vajaliku teabega varustatud LLM suutis genereerida õige SQL-i, mis seejärel käivitati andmebaasi vastu, et leida õige kontekst. Pärast ideega katsetamist otsustas Q4, et SQL-i genereerimine on viis nende endi konkreetse andmestiku konteksti eraldamise väljakutsete lahendamiseks.
Alustame üldise lahendusviisi kirjeldamisega, jagame selle komponentideks ja seejärel paneme osad kokku.
Lahenduse ülevaade
LLM-id on miljardite parameetritega suured mudelid, mis on eelnevalt koolitatud, kasutades väga suuri andmemahtusid erinevatest allikatest. Koolitusandmete kogumite laiuse tõttu eeldatakse, et LLM-idel on üldteadmised erinevates valdkondades. LLM-id on tuntud ka oma arutlusvõime poolest, mis on mudeliti erinevad. Seda üldist käitumist saab optimeerida konkreetse domeeni või tööstusharu jaoks, optimeerides täiendavalt vundamendi mudelit, kasutades täiendavaid domeenispetsiifilisi eelkoolitusandmeid või täpsustades märgistatud andmeid. Õige konteksti, metaandmete ja juhiste korral suudab hästi valitud üldotstarbeline LLM toota kvaliteetset SQL-i, kui sellel on juurdepääs õigele domeenispetsiifilisele kontekstile.
Q4 kasutusjuhul alustame kliendi küsimuse tõlkimisest SQL-i. Teeme seda, ühendades kasutaja küsimuse, andmebaasi skeemi, mõned andmebaasi näidisread ja üksikasjalikud juhised LLM-ile SQL-i genereerimiseks. Kui meil on SQL, saame käivitada valideerimisetapi, kui seda vajalikuks peame. Kui oleme SQL-i kvaliteediga rahul, käivitame päringu andmebaasis, et hankida järgmiseks sammuks vajalik asjakohane kontekst. Nüüd, kui meil on asjakohane kontekst, saame saata kasutaja algse küsimuse, otsitud konteksti ja juhiste komplekti tagasi LLM-ile, et koostada lõplik kokkuvõtlik vastus. Viimase sammu eesmärk on lasta LLM-il tulemused kokku võtta ja anda kontekstipõhine ja täpne vastus, mille saab seejärel kasutajale edastada.
Protsessi igas etapis kasutatava LLM-i valik mõjutab suuresti täpsust, kulusid ja jõudlust. Sellise platvormi või tehnoloogia valimine, mis võimaldab teil paindlikult vahetada LLM-ide vahel sama kasutusjuhu piires (mitu LLM-i reisi erinevate ülesannete jaoks) või erinevate kasutusjuhtude vahel, võib olla kasulik väljundi kvaliteedi, latentsuse ja kulude optimeerimisel. . LLM-i valikut käsitleme hiljem selles postituses.
Lahenduste ehitusplokid
Nüüd, kui oleme lähenemise kõrgel tasemel esile tõstnud, sukeldume detailidesse, alustades lahenduse ehitusplokkidest.
Amazonase aluspõhi
Amazon Bedrock on täielikult hallatav teenus, mis pakub valikut suure jõudlusega FM-e juhtivatelt ettevõtetelt, sealhulgas AI21 Labs, Anthropic, Cohere, Meta, Stability AI ja Amazon. Amazon Bedrock pakub ka laia valikut tööriistu, mida on vaja generatiivsete AI-rakenduste loomiseks, arendusprotsessi lihtsustamiseks ning privaatsuse ja turvalisuse säilitamiseks. Lisaks saate Amazon Bedrockiga valida erinevate FM-suvandite hulgast ja mudeleid privaatselt täpsustada, kasutades oma andmeid, et viia mudelite vastused vastavusse teie kasutusjuhtuminõuetega. Amazon Bedrock on täielikult serverivaba, ilma alusinfrastruktuurita, mis võimaldaks hallata juurdepääsu laiendamist saadaolevatele mudelitele ühe API kaudu. Lõpuks toetab Amazon Bedrock mitmeid turva- ja privaatsusnõudeid, sealhulgas HIPAA sobivust ja GDPR-i järgimist.
Neljanda kvartali lahenduses kasutame Amazon Bedrocki serverita API-põhise mitme aluse mudeli ehitusplokina. Kuna kavatseme teha LLM-i mitu reisi ühe ja sama kasutusjuhu raames, saame ülesande tüübi alusel valida mudeli, mis on konkreetse ülesande jaoks kõige optimaalsem, olgu selleks SQL-i genereerimine, valideerimine või kokkuvõte.
LangChain
LangChain on avatud lähtekoodiga integreerimis- ja orkestreerimisraamistik koos eelehitatud moodulite komplektiga (I/O, otsimine, ahelad ja agendid), mida saate kasutada FM-ide, andmeallikate ja tööriistade vaheliste ülesannete integreerimiseks ja orkestreerimiseks. Raamistik hõlbustab generatiivsete AI-rakenduste loomist, mis nõuavad soovitud väljundi saamiseks mitut etappi, ilma et peaksite koodi nullist kirjutama. LangChain toetab Amazon Bedrocki mitme aluse mudeli API-na.
Q4 kasutusjuhtumi puhul kasutame LangChaini oma töövoo ülesannete koordineerimiseks ja korraldamiseks, sealhulgas andmeallikate ja LLM-idega ühenduse loomiseks. See lähenemine on meie koodi lihtsustanud, kuna saame kasutada olemasolevaid LangChaini mooduleid.
SQLDatabaseChain
SQLDatabaseChain on LangChaini kett, mida saab importida saidist langchain_experimental. SLDatabaseChain muudab SQL-päringute loomise, juurutamise ja käitamise lihtsaks, kasutades selle tõhusaid tekstist SQL-i teisendusi ja rakendusi.
Meie kasutusjuhul kasutame SQL-i genereerimisel SQLDatabaseChaini, mis lihtsustab ja korraldab andmebaasi ja LLM-i vahelisi koostoimeid.
Andmekogum
Meie struktureeritud andmestik võib asuda SQL-i andmebaasis, andmejärves või andmelaos seni, kuni meil on SQL-i tugi. Meie lahenduses saame kasutada mis tahes andmestikutüüpi SQL toega; see peaks olema lahendusest lahutatud ja see ei tohiks lahendust mingil viisil muuta.
Rakenduse üksikasjad
Nüüd, kui oleme uurinud lahenduse lähenemisviisi, lahenduse komponente, tehnoloogia valikut ja tööriistu, saame tükid kokku panna. Järgmine diagramm tõstab esile otsast lõpuni lahenduse.
Tutvustame juurutamise üksikasju ja protsessi kulgu.
Genereerige SQL-päring
Kodeerimise lihtsustamiseks kasutame olemasolevaid raamistikke. Orkestreerimisraamistikuna kasutame LangChaini. Alustame sisestusfaasist, kus saame kasutaja küsimuse loomulikus keeles.
Selles esimeses etapis võtame selle sisendi ja genereerime samaväärse SQL-i, mida saame konteksti ekstraheerimiseks andmebaasiga käivitada. SQL-i genereerimiseks kasutame SQLDatabaseChaini, mis tugineb meie soovitud LLM-ile juurdepääsu saamiseks Amazon Bedrockile. Amazon Bedrockiga, kasutades ühte API-d, saame juurdepääsu mitmele aluseks olevale LLM-ile ja saame valida iga LLM-i reisi jaoks õige. Esmalt loome ühenduse andmebaasiga ja hangime vajaliku tabeliskeemi koos mõne näidisreaga tabelitest, mida kavatseme kasutada.
Meie testimise käigus leidsime, et 2–5 rida tabeliandmeid on piisav, et anda mudelile piisavalt teavet ilma liigset tarbetut üldkulusid lisamata. Kolmest reast piisas konteksti loomiseks, ilma mudelit liigse sisendiga üle koormamata. Meie kasutusjuhtumi puhul alustasime Anthropicuga Claude V2. Mudel on tuntud oma täiustatud arutluskäigu ja sõnastatud kontekstuaalsete vastuste poolest, kui see on varustatud õige konteksti ja juhistega. Osana juhistest võime lisada LLM-ile rohkem täpsustavaid üksikasju. Näiteks võime seda veergu kirjeldada Comp_NAME
tähistab ettevõtte nime. Nüüd saame koostada viipa, kombineerides kasutajaküsimuse sellisel kujul, nagu see on, andmebaasi skeemi, kolme näidisrea tabelist, mida kavatseme kasutada, ja juhiste komplekti vajaliku SQL-i genereerimiseks puhtas SQL-vormingus ilma kommentaaride ja täiendusteta.
Kõiki kombineeritud sisendelemente käsitletakse mudeli sisendviipadena. Mudeli eelistatud süntaksiga kohandatud hästi läbimõeldud sisestusviip mõjutab oluliselt nii väljundi kvaliteeti kui ka jõudlust. Konkreetse ülesande jaoks kasutatava mudeli valik on samuti oluline mitte ainult seetõttu, et see mõjutab väljundi kvaliteeti, vaid ka seetõttu, et sellel on mõju kuludele ja jõudlusele.
Mudelivalikut ning kiiret projekteerimist ja optimeerimist käsitleme selles postituses hiljem, kuid väärib märkimist, et päringu genereerimise etapis märkasime, et Claude Instant suutis anda võrreldavaid tulemusi, eriti kui kasutaja küsimus on hästi sõnastatud ja mitte nii keerukas. Claude V2 andis aga paremaid tulemusi isegi keerukama ja kaudsema kasutaja sisendiga. Saime teada, et kuigi mõnel juhul Claude Instant võib pakkuda piisavat täpsust parema latentsus- ja hinnapunktis, meie päringu genereerimise juhtum sobis paremini Claude V2 jaoks.
Kontrollige SQL-päringut
Meie järgmine samm on kontrollida, kas LLM on edukalt genereerinud õige päringu süntaksi ja et päringul on andmebaasi skeeme ja esitatud näiteridu arvestades kontekstipõhine mõte. Selle kontrollietapi jaoks saame naasta natiivse päringu valideerimisele SQLDatabaseChainis või käivitada teise reisi LLM-i, sealhulgas päringu koos valideerimisjuhistega.
Kui kasutame valideerimisetapis LLM-i, saame kasutada sama LLM-i nagu varem (Claude V2) või väiksemat, suurema jõudlusega LLM-i lihtsama ülesande jaoks, näiteks Claude Instant. Kuna me kasutame Amazon Bedrocki, peaks see olema väga lihtne reguleerimine. Kasutades sama API-d, saame oma API-kõnes mudeli nime muuta, mis muudatuse eest hoolitseb. Oluline on märkida, et enamikul juhtudel võib väiksem LLM pakkuda paremat efektiivsust nii kulude kui ka latentsuse osas ning seda tuleks kaaluda – seni, kuni saavutate soovitud täpsuse. Meie puhul näitas testimine, et genereeritud päring on pidevalt täpne ja õige süntaksiga. Seda teades suutsime selle valideerimisetapi vahele jätta ning säästa latentsust ja kulusid.
Käivitage SQL-päring
Nüüd, kui meil on kinnitatud SQL-päring, saame käivitada SQL-päringu andmebaasis ja hankida asjakohase konteksti. See peaks olema otsene samm.
Võtame loodud konteksti, edastame selle meie valitud LLM-ile koos esialgse kasutaja küsimuse ja juhistega ning palume mudelil luua kontekstuaalne ja liigendatud kokkuvõte. Seejärel esitame loodud kokkuvõtte kasutajale vastusena esialgsele küsimusele, mis kõik on kooskõlas meie andmestikust eraldatud kontekstiga.
Kokkuvõtte tegemise etapis osaleva LLM-i jaoks saame kasutada kas Titan Text Expressi või Claude Instanti. Nad mõlemad pakuksid häid võimalusi kokkuvõtlikuks ülesandeks.
Rakenduste integreerimine
Küsimuste ja vastuste vestlusrobot on üks neljanda kvartali AI-teenustest. Modulaarsuse ja mastaapsuse tagamiseks loob Q4 AI-teenused mikroteenustena, mis on Q4 rakendustele API-de kaudu juurdepääsetavad. See API-põhine lähenemine võimaldab sujuvat integreerimist Q4 platvormi ökosüsteemiga ja hõlbustab tehisintellekti teenuste võimaluste paljastamist platvormirakenduste täielikule komplektile.
AI-teenuste põhieesmärk on pakkuda lihtsaid võimalusi andmete hankimiseks mis tahes avalikust või omandiõigusega kaitstud andmeallikast, kasutades sisendina loomulikku keelt. Lisaks pakuvad AI-teenused täiendavaid abstraktsioonikihte, et tagada funktsionaalsete ja mittefunktsionaalsete nõuete (nt andmete privaatsus ja turvalisus) täitmine. Järgmine diagramm näitab integratsiooni kontseptsiooni.
Rakendamise väljakutsed
Lisaks varem käsitletud struktureeritud numbrilise andmestiku olemusest tulenevatele väljakutsetele seisis 4. kvartal silmitsi mitmete muude rakendusprobleemidega, millega tuli tegeleda.
LLM-i valik ja jõudlus
Ülesande jaoks õige LLM-i valimine on ülioluline, kuna see mõjutab otseselt nii väljundi kvaliteeti kui ka jõudlust (edasi-tagasi latentsus). Siin on mõned tegurid, mis mõjutavad LLM-i valikuprotsessi:
- LLM-i tüüp – FM-ide ülesehitusviis ja mudeli eelkoolituse lähteandmed määravad, millist tüüpi ülesandeid LLM oskaks teha ja kui hea see saab olema. Näiteks teksti LLM oleks hea teksti genereerimisel ja kokkuvõtete tegemisel, samas kui tekst-pildiks või pilt-tekstiks mudel oleks rohkem suunatud pildianalüütikale ja genereerimisülesannetele.
- LLM suurus – FM-i suurusi mõõdetakse konkreetse mudeli mudeliparameetrite arvu järgi, tänapäevaste LLM-ide puhul tavaliselt miljardites. Tavaliselt, mida suurem on mudel, seda kallim on esmane treenimine või hilisem peenhäälestus. Teisest küljest, üldiselt sama mudeliarhitektuuri puhul, mida suurem on mudel, seda nutikamalt eeldame, et see täidab seda tüüpi ülesandeid, millele see on suunatud.
- LLM-i jõudlus – Tavaliselt, mida suurem on mudel, seda rohkem aega kulub väljundi genereerimiseks, eeldades, et kasutate samu arvutus- ja sisend-väljundparameetreid (viip ja väljundi suurus). Lisaks mõjutab sama mudeli suuruse toimivust suuresti teie viipa optimeerimine, sisend- ja väljundmärkide suurus ning viiba selgus ja süntaks. Hästi läbimõeldud viip koos optimeeritud sisend-/väljundmärgi suurusega võivad parandada mudeli reageerimisaega.
Seetõttu võtke ülesande optimeerimisel arvesse järgmisi parimaid tavasid.
- Valige antud ülesande jaoks sobiv mudel
- Valige väikseim mudeli suurus, mis suudab pakkuda soovitud täpsust
- Optimeerige oma viipade struktuur ja rääkige juhistest võimalikult täpselt nii, et mudelile oleks lihtne aru saada
- Kasutage väikseimat sisendviipa, mis võib pakkuda piisavalt juhiseid ja konteksti, et saavutada soovitud täpsusaste
- Piirake väljundi suurus väikseima suurusega, mis võib teie jaoks olla tähenduslik ja rahuldada teie väljundnõudeid
Võttes arvesse mudelivalikut ja jõudluse optimeerimise tegureid, asusime tööle oma SQL-i genereerimise kasutusjuhtumi optimeerimise nimel. Pärast mõningast testimist märkasime, et kui meil on õige kontekst ja juhised, annaks Claude Instant samade kiirete andmetega SQL-i võrreldava kvaliteediga kui Claude V2 palju parema jõudluse ja hinnaga. See kehtib siis, kui kasutaja sisend on olemuselt otsesem ja lihtsam. Keerulisema sisendi jaoks oli soovitud täpsuse saavutamiseks vajalik Claude V2.
Sama loogika rakendamine kokkuvõtliku ülesande puhul viis meid järeldusele, et Claude Instanti või Titan Text Expressi kasutamine annaks palju parema jõudluspunkti jaoks vajaliku täpsuse kui suurema mudeli (nt Claude V2) kasutamisel. Titan Text Expressed pakkus ka paremat hinna ja kvaliteedi suhet, nagu varem arutasime.
Orkestreerimise väljakutse
Mõistsime, et enne, kui saame kasutaja küsimusele sisuka väljundvastuse, on vaja palju orkestreerida. Nagu on näidatud lahenduse ülevaates, hõlmas protsess mitut andmebaasi reisi ja mitut LLM-i reisi, mis on omavahel põimunud. Kui peaksime ehitama nullist, oleksime pidanud tegema märkimisväärse investeeringu eristamata raskete tõsteseadmetesse, et saada valmis põhikood. Otsustasime kiiresti kasutada LangChaini orkestreerimisraamistikuna, kasutades ära avatud lähtekoodiga kogukonna võimsust ja taaskasutades olemasolevaid mooduleid ilma jalgratast uuesti leiutamata.
SQL-i väljakutse
Samuti mõistsime, et SQL-i genereerimine ei ole nii lihtne kui konteksti ekstraheerimise mehhanismid, nagu semantiline otsing või manustamise kasutamine. Peame esmalt hankima andmebaasi skeemi ja mõned näidisread, mida LLM-i viipa lisada. Samuti on olemas SQL-i valideerimise etapp, kus pidime suhtlema nii andmebaasi kui ka LLM-iga. SQLDatabaseChain oli ilmselge tööriista valik. Kuna see on osa LangChainist, oli seda lihtne kohandada ja nüüd saame hallata SQL-i genereerimist ja kinnitamist, mida ahela abil abistame, minimeerides töömahtu, mida vajasime.
Esinemisprobleemid
Kasutades Claude V2 ja pärast korralikku kiiret projekteerimist (mida käsitleme järgmises jaotises), suutsime toota kvaliteetse SQL-i. Arvestades genereeritud SQL-i kvaliteeti, hakkasime uurima, kui palju väärtust valideerimisetapp tegelikult lisab. Pärast tulemuste täiendavat analüüsimist sai selgeks, et loodud SQL-i kvaliteet oli pidevalt täpne, muutes SQL-i valideerimisetapi lisamise kulu/tulu ebasoodsaks. Lõppkokkuvõttes kaotasime SQL-i valideerimisetapi, ilma et see mõjutaks negatiivselt meie väljundi kvaliteeti, ja vähendasime SQL-i valideerimise edasi-tagasi aega.
Lisaks optimeerimisele kokkuvõtte etapi jaoks kulu- ja jõudlustõhusama LLM-i jaoks, saime parema jõudluse ja kuluefektiivsuse saavutamiseks kasutada Titan Text Expressi.
Edasine jõudluse optimeerimine hõlmas päringu genereerimise protsessi peenhäälestamist, kasutades tõhusaid kiireid inseneritehnikaid. Selle asemel, et pakkuda arvukalt märke, keskenduti sellele, et pakkuda võimalikult vähe sisendmärke, õiges süntaksis, mida mudel on õpetatud mõistma, ja minimaalse, kuid optimaalse juhiste komplektiga. Arutame seda lähemalt järgmises jaotises – see on oluline teema, mis ei kehti mitte ainult siin, vaid ka muudel kasutusjuhtudel.
Kiire projekteerimine ja optimeerimine
Saate kohandada Amazon Bedrocki Claude'i erinevate äriliste kasutusjuhtude jaoks, kui kasutatakse õigeid kiireid inseneritehnikaid. Claude tegutseb peamiselt vestlusabilisena, kes kasutab inimese/assistendi vormingut. Claude on koolitatud assistendi rolli jaoks teksti täitma. Arvestades soovitud juhiseid ja viipeid, saame Claude'i jaoks optimeerida, kasutades mitmeid tehnikaid.
Alustame korralikult vormindatud viipamalliga, mis annab kehtiva lõpu, seejärel saame vastuseid veelgi optimeerida, katsetades küsimist erinevate sisendite komplektidega, mis esindavad tegelikke andmeid. Viipamalli väljatöötamisel on soovitatav hankida palju sisendeid. Võite kasutada ka eraldi kiirete arendusandmete ja testandmete komplekte.
Teine viis Claude'i vastuse optimeerimiseks on katsetada ja itereerida, lisades reegleid, juhiseid ja kasulikud optimeerimised. Nende optimeerimiste abil saate vaadata erinevat tüüpi lõpetamisi, näiteks käskides Claude'il hallutsinatsioonide vältimiseks mainida "ma ei tea", mõtlema samm-sammult, kasutades kiiret aheldamist, andes vastuseid genereerides ruumi "mõtlemiseks". , ning topeltkontroll arusaamise ja täpsuse osas.
Kasutame päringu genereerimise ülesannet ja arutame mõningaid tehnikaid, mida kasutasime oma viipa optimeerimiseks. Mõned põhielemendid olid meie päringute loomisel kasuks.
- Õige inimese/assistendi süntaksi kasutamine
- XML-märgendite kasutamine (Claude austab ja mõistab XML-märgendeid)
- Modellile selgete juhiste lisamine hallutsinatsioonide vältimiseks
Järgmine üldine näide näitab, kuidas kasutasime inimese/assistendi süntaksit, rakendasime XML-i silte ja lisasime juhiseid, et piirata väljundit SQL-iga ja anda mudelile käsk öelda "vabandust, ma ei saa aidata", kui see ei suuda asjakohast SQL-i toota. . XML-märgendeid kasutati juhiste, täiendavate vihjete, andmebaasi skeemi, täiendavate tabeli selgituste ja näidisridade raamimiseks.
Lõplik töölahendus
Pärast seda, kui olime lahendanud kõik kontseptsiooni tõestamise käigus tuvastatud väljakutsed, olime täitnud kõik lahendusnõuded. Q4 oli rahul LLM-i loodud SQL-i kvaliteediga. See kehtib lihtsate ülesannete puhul, mis nõudsid andmete filtreerimiseks ainult WHERE-klauslit, ja ka keerukamate ülesannete puhul, mis nõudsid kontekstipõhist koondamist GROUP BY ja matemaatiliste funktsioonidega. Üldlahenduse otspunktidevaheline latentsusaeg jäi kasutusjuhtumi jaoks vastuvõetavaks määratletud piiridesse – ühekohalised sekundid. See kõik oli tänu optimaalse LLM-i valikule igas etapis, õigele kiirele projekteerimisele, SQL-i kontrollimisetapi välistamisele ja tõhusa LLM-i kasutamisele kokkuvõtte etapis (Titan Text Express või Claude Instant).
Väärib märkimist, et Amazon Bedrocki kasutamine täielikult hallatava teenusena ja sama API kaudu juurdepääs LLM-ide komplektile võimaldas eksperimenteerida ja sujuvalt LLM-ide vahel vahetada, muutes API-kõnes mudeli nime. Selle paindlikkuse tasemega suutis Q4 valida iga LLM-kõne jaoks kõige tõhusama LLM-i, lähtudes ülesande olemusest, olgu selleks siis päringu genereerimine, kontrollimine või kokkuvõte.
Järeldus
Pole olemas ühte lahendust, mis sobiks kõikidele kasutusjuhtudele. RAG-lähenemise korral sõltub väljundi kvaliteet suurel määral õige konteksti pakkumisest. Õige konteksti eraldamine on võtmetähtsusega ja iga andmestik on oma ainulaadsete omadustega erinev.
Selles postituses näitasime, et numbriliste ja struktureeritud andmekogumite puhul võib SQL-i kasutamine suurendamiseks kasutatava konteksti eraldamiseks anda soodsamaid tulemusi. Samuti näitasime, et sellised raamistikud nagu LangChain võivad kodeerimistööd minimeerida. Lisaks arutasime vajadust lülituda LLM-ide vahel sama kasutusjuhtumi piires, et saavutada optimaalne täpsus, jõudlus ja hind. Lõpuks rõhutasime, kuidas Amazon Bedrock, olles serverita ja mille katte all on mitmesugused LLM-id, pakub paindlikkust, mis on vajalik turvaliste, tulemuslike ja kulutõhusate rakenduste loomiseks kõige väiksema raskusega.
Alustage oma teekonda generatiivsete AI-toega rakenduste loomise poole, tuvastades oma ettevõtte jaoks väärtusliku kasutusjuhtumi. Nagu Q4 meeskond õppis, võib SQL-i genereerimine olla mängu muutja teie andmesalvedega integreeritavate nutikate rakenduste loomisel, vabastades seeläbi tulupotentsiaali.
Autoritest
Tamer Soliman on AWSi vanemlahenduste arhitekt. Ta aitab sõltumatu tarkvara tarnija (ISV) klientidel AWS-i uuendada, luua ja skaleerida. Tal on üle kahe aastakümne kogemusi nõustamise, koolituse ja professionaalsete teenuste valdkonnas. Ta on mitme patendi leiutaja, kellel on kolm välja antud patenti, ja tema kogemused hõlmavad mitut tehnoloogiavaldkonda, sealhulgas telekommunikatsiooni, võrgundust, rakenduste integreerimist, AI/ML-i ja pilve juurutamist. Ta on spetsialiseerunud AWS-i võrgundusele ja tunneb sügavat kirge masinate kalduvuse, AI ja generatiivse AI vastu.
Mani Khanuja on tehniline juht – generatiivsed tehisintellekti spetsialistid, raamatu – Applied Machine Learning and High Performance Computing on AWS autor ning naiste tootmishariduse sihtasutuse juhatuse liige. Ta juhib masinõppe (ML) projekte erinevates valdkondades, nagu arvutinägemine, loomuliku keele töötlemine ja generatiivne AI. Ta aitab klientidel suuri masinõppemudeleid mastaapselt luua, koolitada ja juurutada. Ta esineb sise- ja väliskonverentsidel, nagu näiteks re:Invent, Women in Manufacturing West, YouTube'i veebiseminarid ja GHC 23. Vabal ajal meeldib talle rannas pikki jookse teha.
Stanislav Ještšenko on tarkvaraarhitekt ettevõttes Q4 Inc.. Tal on üle kümne aasta kogemusi tarkvaraarenduse ja süsteemiarhitektuuri vallas. Tema mitmekülgne taust, mis hõlmab selliseid rolle nagu tehniline juht ja vanem täisstacki arendaja, annab tema panuse Q4 platvormi innovatsiooni edendamisse. Stanislav on pühendunud tehniliste uuenduste edendamisele ja valdkonna strateegiliste lahenduste kujundamisele.
- SEO-põhise sisu ja PR-levi. Võimenduge juba täna.
- PlatoData.Network Vertikaalne generatiivne Ai. Jõustage ennast. Juurdepääs siia.
- PlatoAiStream. Web3 luure. Täiustatud teadmised. Juurdepääs siia.
- PlatoESG. Süsinik, CleanTech, Energia, Keskkond päikeseenergia, Jäätmekäitluse. Juurdepääs siia.
- PlatoTervis. Biotehnoloogia ja kliiniliste uuringute luureandmed. Juurdepääs siia.
- Allikas: 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/
- :on
- :on
- :mitte
- : kus
- $ UP
- 100
- 118
- 125
- 15%
- 23
- 7
- a
- võimeid
- võime
- Võimalik
- abstraktsioon
- küllus
- vastuvõetav
- juurdepääs
- juurdepääsetav
- konto
- täpsus
- täpne
- Saavutada
- üle
- õigusaktid
- tegelikult
- kohandama
- lisatud
- lisades
- lisamine
- Täiendavad lisad
- Lisaks
- täiendused
- aadress
- adresseeritud
- Korrigeerimine
- edasijõudnud
- edeneb
- ADEelis
- pärast
- vastu
- ained
- agregaat
- AI
- AI teenused
- ai kasutusjuhtumeid
- AI / ML
- eesmärk
- viia
- joondatud
- Materjal: BPA ja flataatide vaba plastik
- võimaldama
- lubatud
- mööda
- Ka
- Kuigi
- am
- Amazon
- Amazon Web Services
- summa
- summad
- an
- analüüs
- Analüütikud
- analytics
- analüüsima
- analüüsides
- ja
- Teine
- vastus
- vastuseid
- Antroopne
- mistahes
- midagi
- API
- API-liidesed
- kohaldatav
- taotlus
- rakendused
- rakendatud
- lähenemine
- arhitektuur
- OLEME
- AS
- küsima
- vara
- assistent
- abistab
- valik
- At
- suurendama
- suurendatud
- autor
- saadaval
- teadlik
- AWS
- tagasi
- tagapõhi
- põhineb
- põhiline
- BE
- rand
- sai
- sest
- olnud
- enne
- Algus
- käitumine
- on
- Arvatakse
- kasulik
- BEST
- parimaid tavasid
- Parem
- vahel
- miljardeid
- Blokeerima
- Plokid
- juhatus
- juhatus
- raamat
- Bot
- mõlemad
- laius
- Murdma
- lai
- ehitama
- Ehitus
- Ehitab
- ehitatud
- äri
- kuid
- by
- helistama
- tuli
- CAN
- Saab
- võimeid
- võime
- kapital
- Kapitaliturud
- mis
- juhul
- juhtudel
- kett
- ketid
- väljakutse
- väljakutseid
- väljakutsed ehitamisel
- muutma
- Changer
- muutuv
- omadused
- chatbot
- jututoad
- valik
- Vali
- valimine
- selgus
- puhastama
- selge
- lähemale
- Cloud
- kood
- Kodeerimine
- Veerg
- kombineeritud
- kombineerimine
- Tulema
- kommentaarid
- kaubanduslikult
- edastama
- KOMMUNIKATSIOON
- kogukond
- Ettevõtted
- ettevõte
- võrreldav
- lõpetamist
- keeruline
- keerukus
- Vastavus
- komponendid
- mõista
- Arvutama
- arvuti
- Arvuti visioon
- arvutustehnika
- mõiste
- lõpetama
- sõlmitud
- järeldus
- läbi
- konverentsid
- Võta meiega ühendust
- ühendamine
- ühendus
- Arvestama
- kaaluda
- arvestades
- järjepidevalt
- Koosneb
- koosneb
- ehitama
- nõustamine
- sisu
- kontekst
- kontekstuaalne
- jätkama
- pidevalt
- sissemaksed
- tavaline
- jutukas
- konversioonid
- ümber
- koordineerimine
- tuum
- parandada
- Maksma
- võiks
- looma
- kriitiline
- CRM
- otsustav
- klient
- Kliendid
- iga päev
- andmed
- andmejärv
- andmepunktid
- andmekaitse
- Andmete privaatsus ja turvalisus
- andmeteadus
- andmepõhistele
- andmebaas
- andmekogumid
- Kuupäevad
- kümme aastat
- aastakümnete
- otsustatud
- Otsustamine
- pühendunud
- loetakse
- määratletud
- Nõudlus
- Näidatud
- näitab
- sõltub
- juurutada
- kasutuselevõtt
- kirjeldama
- Kirjeldades
- soovitud
- üksikasjalik
- detailid
- määrab
- arendaja
- arenev
- & Tarkvaraarendus
- erinev
- otsene
- otse
- Direktorid
- arutama
- arutatud
- sukelduma
- mitu
- do
- domeen
- Domeenid
- Ära
- topeltkontroll
- alla
- sõidu
- kaks
- ajal
- dünaamiline
- iga
- Ajalugu
- lihtne
- ökosüsteemi
- Käsitöö
- Tõhus
- efektiivsus
- tõhus
- tõhusalt
- jõupingutusi
- jõupingutusi
- kumbki
- elemendid
- abikõlblikkus
- kõrvaldades
- smirgel
- töötavad
- võimaldab
- lõpp
- Lõpuks-lõpuni
- lõppes
- tegelema
- tegevus
- Inseneriteadus
- piisavalt
- tagama
- varustatud
- Samaväärne
- ESG
- eriti
- looma
- hindamine
- hindamine
- Isegi
- sündmused
- Iga
- näide
- näited
- olemasolevate
- ootama
- oodatav
- kallis
- kogemus
- eksperiment
- katseid
- ekspert
- teadmised
- uurida
- ekspress
- väljendatud
- laiendades
- väline
- väljavõte
- kaevandamine
- silmitsi seisnud
- hõlbustab
- tegurid
- tempokas
- soodne
- teostatav
- vähe
- väli
- Valdkonnad
- täitma
- filtreerida
- lõplik
- Lõpuks
- finants-
- finantsandmed
- esimene
- Paindlikkus
- voog
- Keskenduma
- järgima
- Järel
- eest
- formaat
- edasi
- edendamine
- avastatud
- Sihtasutus
- FRAME
- Raamistik
- raamistikud
- tasuta
- Alates
- täis
- Täis virna
- täielikult
- funktsionaalne
- funktsioonid
- edasi
- mäng
- mängu-Box
- GDPR
- GDPR vastavus
- suunatud
- Üldine
- tekitama
- loodud
- genereerib
- teeniva
- põlvkond
- generatiivne
- Generatiivne AI
- saama
- saamine
- Andma
- antud
- annab
- andmine
- Go
- eesmärk
- Eesmärgid
- hea
- antud
- suur
- Grupp
- Kasvavad
- olnud
- käsi
- õnnelik
- Olema
- võttes
- he
- peakorter
- raske
- raske tõstmine
- aitama
- aitab
- siin
- siin
- Suur
- suure jõudlusega
- kvaliteetne
- rohkem
- kõrgeim
- Esiletõstetud
- rõhutab
- kõrgelt
- vihjed
- tema
- ajalugu
- kapuuts
- Kuidas
- aga
- HTTPS
- inim-
- inimesele loetav
- i
- idee
- tuvastatud
- identifitseerimiseks
- if
- pilt
- mõju
- mõjutatud
- mõjutavad
- Mõjud
- rakendada
- täitmine
- rakendused
- rakendatud
- mõjud
- oluline
- parandama
- in
- Teistes
- Inc
- sisaldama
- Kaasa arvatud
- Suurendama
- kasvav
- sõltumatud
- inimesed
- tööstus
- info
- Infrastruktuur
- esialgne
- esialgu
- uuendama
- Innovatsioon
- sisend
- sisendite
- kiire
- institutsioonid
- juhised
- integreerima
- integratsioon
- kavatsevad
- suhelda
- interaktsioonid
- sisemine
- põimunud
- sisse
- intuitiivne
- investeering
- investor
- Investorid
- seotud
- emiteerijad
- isv
- IT
- ITS
- teekond
- jpg
- lihtsalt
- hoidma
- Võti
- Teades
- teadmised
- teatud
- Labs
- järv
- maastik
- keel
- suur
- suurem
- viimane
- viimaseks
- Hilinemine
- pärast
- kihid
- viima
- juhtivate
- Leads
- õppinud
- õppimine
- kõige vähem
- Led
- Lessons
- Õppetunnid
- Tase
- tõstmine
- nagu
- meeldib
- LLM
- loogika
- London
- Pikk
- Vaata
- otsin
- Partii
- masin
- masinõpe
- tehtud
- põhiline
- peamiselt
- mainstream
- säilitada
- säilitamine
- tegema
- TEEB
- juhtima
- juhitud
- juhtimine
- tootmine
- palju
- Turg
- Turuanalüüs
- Turuinfo
- turud
- sobitatud
- matemaatiline
- mai..
- tähendusrikas
- tähendas
- mehhanismid
- Vastama
- liige
- mõdu
- Meta
- Metaandmed
- meetod
- Metoodika
- mikroteenused
- minimaalne
- minimeerimine
- segu
- ML
- mudel
- mudelid
- Kaasaegne
- Moodulid
- rohkem
- kõige
- enamasti
- liikuv
- palju
- multi
- mitmekordne
- nimi
- emakeelena
- Natural
- Natural Language Processing
- loodus
- vajalik
- Vajadus
- vaja
- negatiivselt
- võrgustike loomine
- Uus
- New York
- järgmine
- ei
- meeles
- märkides
- nüüd
- number
- numbrid
- eesmärk
- Ilmne
- of
- maha
- pakutud
- Pakkumised
- ametnikud
- bürood
- sageli
- on
- ONE
- ainult
- avatud
- avatud lähtekoodiga
- optimaalselt
- optimeerimine
- optimeerima
- optimeeritud
- optimeerimine
- Valikud
- or
- orkestreerides
- Korraldus
- et
- originaal
- Muu
- meie
- väljund
- üle
- üldine
- ülevaade
- tohutu
- enda
- omanikuks
- omandiõigus
- parameetrid
- osa
- eriline
- Vastu võetud
- kirg
- patent
- Patendi
- tee
- täitma
- jõudlus
- esitades
- valima
- tükki
- inimesele
- Platon
- Platoni andmete intelligentsus
- PlatoData
- mängima
- Punkt
- võrra
- positiivne
- võimalik
- post
- potentsiaal
- võim
- volitused
- tavad
- eelistatud
- esitada
- esitatud
- vältida
- hind
- põhimõtted
- privaatsus
- Privaatsus ja turvalisus
- protsess
- töötlemine
- tootma
- Toodetud
- Toodet
- professionaalne
- sügav
- projekt
- projektid
- küsib
- tõend
- tõendi mõiste
- korralik
- varaline
- tõestatud
- anda
- tingimusel
- annab
- pakkudes
- avalik
- aktsiaseltsid
- avalikult
- eesmärk
- panema
- Küsimused ja vastused
- kvaliteet
- päringud
- küsimus
- kiiresti
- quotes
- Edetabel
- pigem
- RE
- valmis
- päris maailm
- realiseeritud
- saama
- soovitatav
- andmed
- viitamine
- reguleeritud
- suhted
- suhe
- asjakohane
- Aruanded
- esindaja
- esindavad
- esindab
- nõudma
- nõutav
- Nõuded
- ressurss
- austatud
- austab
- vastus
- vastuste
- piirata
- Tulemused
- tulu
- naasma
- läbivaatamine
- õige
- riskide
- Roll
- rollid
- ruum
- ümber
- eeskirjade
- jooks
- jookseb
- sama
- rahul
- rahul
- Säästa
- ütlema
- Skaalautuvus
- Skaala
- teadus
- kriimustada
- sujuv
- sujuvalt
- Otsing
- Teine
- sekundit
- Osa
- kindlustama
- turvalisus
- vaata
- valik
- Sellers
- saatma
- vanem
- tunne
- eri
- Seeria
- Serverita
- teenus
- Teenused
- komplekt
- Komplektid
- mitu
- vormimine
- aktsionär
- Aktsionärid
- ta
- peaks
- näitas
- näidatud
- Näitused
- märkimisväärne
- lihtne
- lihtsam
- lihtsustatud
- lihtsustama
- lihtsustamine
- ühekordne
- SUURUS
- suurused
- väiksem
- nutikas
- targemaks
- tarkvara
- tarkvaraarenduse
- lahendus
- Lahendused
- mõned
- keeruline
- allikas
- Allikad
- Pinge
- ulatub
- Räägib
- spetsialistid
- spetsialiseerunud
- konkreetse
- eriti
- Stabiilsus
- Kestab
- Stage
- panused
- seisma
- seisab
- algus
- alustatud
- Käivitus
- väljavõte
- jääma
- Samm
- Sammud
- varu
- aktsiaturg
- ladustatud
- kauplustes
- lihtne
- Strateegiline
- struktuur
- struktureeritud
- Järgnevalt
- edu
- Edukalt
- selline
- piisav
- sobiv
- komplekt
- Kokku võtta
- KOKKUVÕTE
- toetama
- Toetab
- järelevalve
- Lüliti
- süntaks
- süsteem
- tabel
- kohandatud
- Võtma
- võtnud
- võtab
- võtmine
- Ülesanne
- ülesanded
- meeskond
- tech
- Tehniline
- tehnikat
- Tehnoloogia
- telekommunikatsiooni
- paljuütlev
- šabloon
- test
- Testimine
- testid
- tekst
- kui
- tänan
- et
- .
- Pealinn
- oma
- SIIS
- Seal.
- Need
- nad
- Mõtlemine
- see
- kolm
- Läbi
- läbi kogu
- aeg
- Ajaseeria
- korda
- Titan
- et
- tänane
- kokku
- sümboolne
- märgid
- liiga
- tööriist
- töövahendid
- teema
- Toronto
- suunas
- Rong
- koolitatud
- koolitus
- tehing
- Tehingud
- transformeerivate
- reis
- tõsi
- Usalda
- Pöörake
- kaks
- tüüp
- liigid
- tüüpiliselt
- ei suuda
- all
- aluseks
- mõistma
- mõistmine
- mõistab
- arusaadav
- ainulaadne
- avamine
- tarbetu
- us
- kasutama
- kasutage juhtumit
- Kasutatud
- Kasutaja
- kasutajasõbralik
- kasutamine
- kasutab ära
- kehtiv
- kinnitamine
- väärtus
- sort
- eri
- müüja
- Kontrollimine
- kinnitatud
- kontrollima
- väga
- elujõuline
- vaade
- virtuaalne
- nägemus
- kõndima
- tagaotsitav
- oli
- Tee..
- we
- web
- veebiteenused
- Webinars
- veebisait
- Hästi
- läks
- olid
- Läände
- M
- Ratas
- millal
- samas kui
- mis
- kuigi
- will
- koos
- jooksul
- ilma
- Naised
- sõnad
- Töö
- töötas
- töövoog
- töö
- väärt
- oleks
- kirjutama
- kirjutada kood
- XML
- veel
- york
- sa
- Sinu
- youtube
- sephyrnet