Vestluspõhine tehisintellekt on viimastel aastatel jõudnud kaugele tänu generatiivse tehisintellekti kiirele arengule, eriti suurte keelemudelite (LLM) jõudluse paranemisele, mis on kasutusele võetud koolitustehnikatega, nagu juhendamise peenhäälestus ja inimeste tagasiside põhjal õppimine. Kui neid õigesti küsitakse, võivad need mudelid pidada sidusaid vestlusi ilma ülesandespetsiifiliste koolitusandmeteta. Kuid nad ei saa hästi üldistada ettevõttepõhistele küsimustele, sest vastuse saamiseks tuginevad nad avalikele andmetele, millega nad eelkoolituse ajal kokku puutusid. Sellistel andmetel puuduvad sageli kaasaegsetes ettevõtetes saadaolevates sisedokumentides sisalduvad eriteadmised, mida on tavaliselt vaja täpsete vastuste saamiseks sellistes valdkondades nagu farmaatsiauuringud, finantsuuringud ja klienditugi.
AI-assistentide loomiseks, kes suudavad pidada arutelusid ettevõtte eriteadmistel, peame ühendama need võimsad, kuid üldised LLM-id dokumentide sisemiste teadmistebaasidega. Seda meetodit LLM-i genereerimise konteksti rikastamiseks teie sisemistest andmeallikatest hangitud teabega nimetatakse Retrieval Augmented Generation (RAG) ja see loob assistendid, mis on domeenispetsiifilised ja usaldusväärsemad, nagu näitab Otsimisega täiendatud genereerimine teadmistemahukate NLP-ülesannete jaoks. Veel üks RAG-i populaarsuse tõukejõud on selle rakendamise lihtsus ja küpsete vektorotsingu lahenduste olemasolu, nagu näiteks Amazon Kendra (Vt Amazon Kendra käivitab Retrieval API) Ja Amazon OpenSearchi teenus (Vt k-Lähima naabri (k-NN) otsing Amazon OpenSearch Service'is), teiste hulgas.
Populaarne semantilise otsinguga RAG-disaini muster ei suuda aga vastata kõikidele dokumentide küsimustele. See kehtib eriti küsimuste puhul, mis nõuavad mitme dokumendi analüütilist arutluskäiku. Kujutage näiteks ette, et plaanite investeerimisfirma järgmise aasta strateegiat. Üks oluline samm oleks kandidaatettevõtete finantstulemuste ja võimalike riskide analüüsimine ja võrdlemine. See ülesanne hõlmab analüütilistele arutlusküsimustele vastamist. Näiteks päring "Andke mulle viimase 5 aasta 2 suurima tuluga ettevõtet ja tehke kindlaks nende peamised riskid" nõuab mitut arutluskäiku, millest mõned võivad kasutada semantilist otsingut, samas kui teised nõuavad analüüsivõimet.
Selles postituses näitame, kuidas kujundada intelligentne dokumendiassistent, mis suudab vastata analüütilistele ja mitmeastmelistele arutlusküsimustele kolmes osas. 1. osas vaatleme RAG-i disainimustrit ja selle piiranguid analüütiliste küsimuste osas. Seejärel tutvustame teile mitmekülgsemat arhitektuuri, mis ületab need piirangud. 2. osa aitab teil sukelduda sügavamale olemi eraldamise konveierisse, mida kasutatakse struktureeritud andmete ettevalmistamiseks, mis on analüütilistele küsimustele vastamise põhikomponent. 3. osa juhendab teid kasutama Amazonase aluspõhi LLM-id nende andmete päringute tegemiseks ja LLM-agendi loomiseks, mis täiustab RAG-i analüütiliste võimetega, võimaldades seeläbi luua intelligentseid dokumendiabilisi, mis suudavad vastata keerulistele domeenispetsiifilistele küsimustele mitmes dokumendis.
1. osa: RAG-i piirangud ja lahenduste ülevaade
Selles jaotises vaatleme RAG-i disainimustrit ja arutame selle piiranguid analüütilistes küsimustes. Esitame ka mitmekülgsema arhitektuuri, mis ületab need piirangud.
RAG ülevaade
RAG lahendused on inspireeritud esindusõpe ja semantiline otsing ideid, mis on järk-järgult üle võetud järjestamise probleemide (näiteks soovitamine ja otsing) ja loomuliku keele töötlemise (NLP) ülesannetes alates 2010. aastast.
Tänapäeval kasutatav populaarne lähenemisviis koosneb kolmest etapist:
- Võrguühenduseta paketttöötlustöö seob sisendteadmistebaasi dokumendid, jagab need tükkideks, loob iga tüki jaoks manuse, mis esindab selle semantikat, kasutades eelkoolitatud manustamismudelit, näiteks Amazoni titaan manustamismudelid, siis kasutab neid manuseid sisendina semantilise otsinguindeksi loomiseks.
- Uuele küsimusele reaalajas vastamisel teisendatakse sisendküsimus manustamiseks, mida kasutatakse sarnasuse mõõdiku (nt koosinussarnasuse) ja ligikaudse lähimate naabrite algoritmi abil kõige sarnasemate dokumenditükkide otsimiseks ja eraldamiseks. Otsingu täpsust saab parandada ka metaandmete filtreerimisega.
- Viip koostatakse süsteemisõnumi ühendamisest kontekstiga, mis moodustub etapis 2 ekstraktitud dokumentide asjakohastest tükkidest, ja sisendküsimusest endast. Seejärel esitatakse see viip LLM-mudelile, et luua kontekstist lõplik vastus küsimusele.
Õige aluseks oleva manustamismudeliga, mis suudab toota sisenddokumendi tükkide ja sisendküsimuste täpseid semantilisi esitusi ning tõhusa semantilise otsingu mooduliga, suudab see lahendus vastata küsimustele, mis nõuavad dokumentide andmebaasist olemasoleva teabe hankimist. Näiteks kui teil on teenus või toode, võiksite alustada selle KKK jaotise või dokumentatsiooni indekseerimisest ja luua esmase vestluse AI, mis on kohandatud teie konkreetse pakkumisega.
Semantilisel otsingul põhineva RAG-i piirangud
Kuigi RAG on tänapäevaste domeenispetsiifiliste AI-assistentide oluline komponent ja mõistlik lähtepunkt vestluspõhise tehisintellekti ülesehitamiseks spetsiaalse teadmistebaasi ümber, ei saa see vastata küsimustele, mis nõuavad skannimist, võrdlemist ja põhjendamist kõigi teie teadmistebaasi dokumentide lõikes. samaaegselt, eriti kui suurendamine põhineb ainult semantilisel otsingul.
Nende piirangute mõistmiseks vaatame uuesti näidet, kuidas otsustada, kuhu finantsaruannete põhjal investeerida. Kui kasutaksime nende aruannetega vestlemiseks RAG-i, võiksime esitada selliseid küsimusi nagu „Millised on riskid, millega ettevõte X 2022. aastal silmitsi seisis?” või „Milline on ettevõtte Y puhastulu 2022. aastal?” Kõigi nende küsimuste puhul kasutatakse vastavat manustamisvektorit, mis kodeerib küsimuse semantilist tähendust, et hankida otsinguindeksis saadaolevatest K-st semantiliselt sarnasest dokumendijupist. Tavaliselt saavutatakse see ligikaudse lähimate naabrite lahenduse kasutamisega, näiteks FAISS, NMSLIB, pgvector või teised, mis püüavad leida tasakaalu otsimiskiiruse ja tagasikutsumise vahel, et saavutada reaalajas jõudlus, säilitades samas rahuldava täpsuse.
Eelnev lähenemine ei suuda aga täpselt vastata kõikide dokumentide analüütilistele küsimustele, näiteks „Millised on 5 suurimat netotulu saanud ettevõtet 2022. aastal?”
Selle põhjuseks on asjaolu, et semantiline otsing püüab leida sisendküsimusega K kõige sarnasemat dokumendi tükki. Kuid kuna ükski dokument ei sisalda tulude põhjalikke kokkuvõtteid, tagastab see dokumentide tükid, mis sisaldavad pelgalt „puhastulu” ja võib-olla ka „2022. aasta” mainimist, täitmata aga olulist tingimust, milleks on keskendumine suurima tuluga ettevõtetele. Kui esitame need otsingutulemused LLM-ile sisendküsimusele vastamiseks kontekstina, võib see sõnastada eksitava vastuse või keelduda vastamast, kuna vajalik õige teave puudub.
Need piirangud tulenevad disainist, kuna semantiline otsing ei skaneeri asjakohaste dokumentide leidmiseks põhjalikult kõiki manustamisvektoreid. Selle asemel kasutab see mõistliku otsingukiiruse säilitamiseks ligikaudseid lähima naabri meetodeid. Nende meetodite tõhususe peamine strateegia on manustamisruumi segmenteerimine rühmadesse indekseerimise ajal. See võimaldab kiiresti tuvastada, millised rühmad võivad otsingu ajal sisaldada asjakohaseid manuseid, ilma et oleks vaja paarikaupa võrdlusi. Lisaks sellele isegi traditsioonilised lähinaabrite tehnikad, nagu KNN, mis skannivad kõiki dokumente, arvutavad ainult põhilisi kaugusmõõdikuid ega sobi analüütiliseks arutlemiseks vajalikeks keerukateks võrdlusteks. Seetõttu ei ole semantilise otsinguga RAG kohandatud vastama küsimustele, mis hõlmavad kõigi dokumentide analüütilist arutluskäiku.
Nendest piirangutest ülesaamiseks pakume välja lahenduse, mis ühendab RAG-i metaandmete ja olemi ekstraheerimise, SQL-päringute ja LLM-agentidega, nagu on kirjeldatud järgmistes jaotistes.
RAG-i piirangute ületamine metaandmete, SQL-i ja LLM-i agentidega
Uurime põhjalikumalt küsimust, mille puhul RAG ebaõnnestub, et saaksime sellele tõhusaks vastamiseks vajalikke arutluskäike jälgida. See analüüs peaks suunama meid õigele lähenemisviisile, mis võiks RAG-i üldises lahenduses täiendada.
Mõelge küsimusele: „Millised on 5. aasta 2022 suurima tuluga ettevõtet?”
Sellele küsimusele vastamiseks peaksime:
- Tuvastage iga ettevõtte tulud.
- Filtreerige alla, et säilitada igaühe 2022. aasta tulud.
- Järjesta tulud kahanevas järjekorras.
- Tükeldage ettevõtete nimede kõrval välja 5 suurimat tulu.
Tavaliselt tehakse need analüütilised toimingud struktureeritud andmetega, kasutades selliseid tööriistu nagu pandad või SQL-mootorid. Kui meil oleks juurdepääs veerge sisaldavale SQL-tabelile company
, revenue
ja year
, saaksime oma küsimusele hõlpsasti vastata, käivitades SQL-päringu, mis sarnaneb järgmise näitega:
SELECT company, revenue FROM table_name WHERE year = 2022 ORDER BY revenue DESC LIMIT 5;
Struktureeritud metaandmete salvestamine SQL-tabelisse, mis sisaldab teavet asjakohaste olemite kohta, võimaldab teil õige SQL-päringu kirjutamise kaudu vastata mitut tüüpi analüütilistele küsimustele. Seetõttu täiendame oma lahenduses RAG-i reaalajas SQL-päringumooduliga SQL-tabeli alusel, mis on täidetud võrguühenduseta protsessis ekstraktitud metaandmetega.
Kuid kuidas saaksime seda lähenemisviisi rakendada ja integreerida LLM-põhisesse vestlus-AI-sse?
SQL-i analüütiliste põhjenduste lisamiseks on kolm sammu:
- Metaandmete ekstraheerimine – Struktureerimata dokumentide metaandmete ekstraheerimine SQL-i tabelisse
- Tekst SQL-i – Formuleerige LLM-i abil sisendküsimustest täpselt SQL-päringuid
- Tööriista valik – Tehke kindlaks, kas küsimusele tuleb vastata RAG-i või SQL-päringu abil
Nende sammude rakendamiseks mõistame kõigepealt, et teabe hankimine struktureerimata dokumentidest on traditsiooniline NLP-ülesanne, mille puhul LLM-id lubavad saavutada suure täpsuse null- või mõne võttega õppimise abil. Teiseks on nende mudelite võime genereerida loomulikust keelest SQL-päringuid tõestatud juba aastaid, nagu on näha 2020 vabastamine of Amazon QuickSight Q. Lõpuks parandab konkreetse küsimuse jaoks õige tööriista automaatne valimine kasutajakogemust ja võimaldab vastata keerukatele küsimustele mitmeastmelise arutluskäigu kaudu. Selle funktsiooni rakendamiseks käsitleme hilisemas jaotises LLM-i agente.
Kokkuvõtteks võib öelda, et meie pakutav lahendus koosneb järgmistest põhikomponentidest:
- Semantilise otsingu otsimine genereerimise konteksti suurendamiseks
- Struktureeritud metaandmete ekstraheerimine ja päringute tegemine SQL-iga
- Agent, kes suudab küsimusele vastamiseks kasutada õigeid tööriistu
Lahenduse ülevaade
Järgmisel diagrammil on kujutatud lahenduse lihtsustatud arhitektuur. See aitab teil tuvastada ja mõista põhikomponentide rolli ja seda, kuidas need interakteeruvad, et rakendada LLM-i assistendi täielikku käitumist. Selle lahenduse rakendamisel numeratsioon ühtib toimingute järjekorraga.
Praktikas rakendasime selle lahenduse, nagu on kirjeldatud järgmises üksikasjalikus arhitektuuris.
Selle arhitektuuri jaoks pakume välja rakenduse GitHub, lõdvalt seotud komponentidega, kus taustaprogramm (5), andmekonveierid (1, 2, 3) ja esiots (4) saavad areneda eraldi. Selle eesmärk on lihtsustada pädevustevahelist koostööd tootmislahenduse kohandamisel ja täiustamisel.
Rakendage lahendus
Selle lahenduse installimiseks oma AWS-i kontole toimige järgmiselt.
- Kloonige hoidla GitHubis.
- Installige taustaprogramm AWS pilvearenduskomplekt (AWS CDK) app:
- avage
backend
kausta. - jooks
npm install
sõltuvuste installimiseks. - Kui te pole jooksval kontol ja regioonis kunagi AWS CDK-d kasutanud, käivitage bootstrapping koos
npx cdk bootstrap
. - jooks
npx cdk deploy
virna juurutamiseks.
- avage
- Valikuliselt käivitage
streamlit-ui
järgmiselt:- Soovitame selle hoidla kloonida an Amazon SageMaker Studio keskkond. Lisateabe saamiseks vaadake Kiirseadistuse abil Amazon SageMakeri domeeniga liitumine.
- Toas
frontend/streamlit-ui
kaust, jooksebash run-streamlit-ui.sh
. - Demo avamiseks valige link järgmises vormingus:
https://{domain_id}.studio.{region}.sagemaker.aws/jupyter/default/proxy/{port_number}/
.
- Lõpuks saate käivitada Amazon SageMaker punktis määratletud torujuhe
data-pipelines/04-sagemaker-pipeline-for-documents-processing.ipynb
märkmik sisend-PDF-dokumentide töötlemiseks ning SQL-tabeli ja LLM-i abilise kasutatava semantilise otsinguindeksi ettevalmistamiseks.
Selle postituse ülejäänud osas keskendume kõige olulisemate komponentide ja disainivalikute selgitamisele, et loodetavasti inspireerida teid sisemise teadmistebaasi põhjal oma tehisintellekti assistendi kujundamisel. Eeldame, et komponente 1 ja 4 on lihtne mõista, ning keskendume põhikomponentidele 2, 3 ja 5.
2. osa: üksuse kaevandamise torujuhe
Selles jaotises käsitleme üksikasjalikumalt struktureeritud andmete ettevalmistamiseks kasutatavat olemi eraldamise konveieri, mis on analüütilisele küsimusele vastamise põhikomponent.
Teksti väljavõte
Dokumendid salvestatakse tavaliselt PDF-vormingus või skannitud piltidena. Need võivad koosneda lihtsatest lõikude paigutustest või keerukatest tabelitest ning sisaldada digitaalset või käsitsi kirjutatud teksti. Teabe korrektseks eraldamiseks peame need töötlemata dokumendid muutma lihttekstiks, säilitades samal ajal nende esialgse struktuuri. Selleks võite kasutada Amazoni tekst, mis on masinõppe (ML) teenus, mis pakub digitaalsetest ja käsitsi kirjutatud sisenditest teksti, tabelite ja vormide jaoks küpseid API-sid.
2. komponendis eraldame teksti ja tabelid järgmiselt:
- Iga dokumendi puhul helistame teksti ja tabelite eraldamiseks Amazon Textractile.
- Kasutame järgmist Pythoni skript tabelite taasloomiseks pandade andmeraamidena.
- Koondame tulemused ühte dokumenti ja lisame allahindlustena tabelid.
Seda protsessi kirjeldatakse järgmises vooskeemis ja seda on konkreetselt näidatud notebooks/03-pdf-document-processing.ipynb
.
Olemi ekstraheerimine ja päringute tegemine LLM-ide abil
Analüütilistele küsimustele tõhusaks vastamiseks peate hankima asjakohased metaandmed ja olemid oma dokumendi teadmistebaasist juurdepääsetavasse struktureeritud andmevormingusse. Soovitame selle teabe salvestamiseks ja vastuste hankimiseks kasutada SQL-i selle populaarsuse, kasutuslihtsuse ja mastaapsuse tõttu. See valik saab kasu ka keelemudelite tõestatud võimest genereerida loomulikust keelest SQL-päringuid.
Selles jaotises käsitleme üksikasjalikumalt järgmisi komponente, mis võimaldavad analüütilisi küsimusi.
- Pakettprotsess, mis eraldab LLM-ide abil struktureeritud andmed struktureerimata andmetest
- Reaalajas moodul, mis teisendab loomuliku keele küsimused SQL-päringuteks ja hangib tulemused SQL-i andmebaasist
Analüütiliste küsimuste toetamiseks saate eraldada asjakohased metaandmed järgmiselt.
- Määratlege eraldatava teabe jaoks JSON-skeem, mis sisaldab iga välja ja selle andmetüübi kirjeldust ning eeldatavate väärtuste näiteid.
- Iga dokumendi puhul küsige JSON-skeemiga LLM-i ja paluge tal asjakohased andmed täpselt eraldada.
- Kui dokumendi pikkus ületab konteksti pikkust ja LLM-idega ekstraheerimiskulude vähendamiseks saate kasutada semantilist otsingut, et hankida väljavõtte ajal LLM-ile asjakohased dokumenditükid ja esitada need.
- Parsige JSON-väljund ja kinnitage LLM-i ekstraktimine.
- Soovi korral varundage Amazon S3 tulemused CSV-failidena.
- Laadige SQL-i andmebaasi hilisemaks päringute tegemiseks.
Seda protsessi haldab järgmine arhitektuur, kus tekstivormingus dokumendid laaditakse Pythoni skriptiga, mis töötab Amazon SageMakeri töötlemine kaevandamise teostamise töö.
Iga olemirühma jaoks koostame dünaamiliselt viipa, mis sisaldab teabe eraldamise ülesande selget kirjeldust ja JSON-skeemi, mis määratleb eeldatava väljundi ja sisaldab kontekstina asjakohaseid dokumenditükke. Lisame ka mõned sisendi ja õige väljundi näited, et parandada ekstraheerimise jõudlust mõne võttega õppimisega. Seda demonstreeritakse aastal notebooks/05-entities-extraction-to-structured-metadata.ipynb
.
3. osa: looge Amazon Bedrocki abil dokumendiassistent
Selles jaotises demonstreerime, kuidas kasutada Amazon Bedrocki LLM-e andmete päringute tegemiseks ja LLM-agendi loomiseks, mis täiustab RAG-i analüütiliste võimetega, võimaldades seeläbi luua intelligentseid dokumendiabilisi, mis suudavad vastata keerulistele domeenispetsiifilistele küsimustele mitmes dokumendis. Võite viidata Lambda funktsioon GitHubis selles osas kirjeldatud agendi ja tööriistade konkreetseks rakendamiseks.
Sõnastage SQL-päringuid ja vastake analüütilistele küsimustele
Nüüd, kui meil on struktureeritud metaandmete pood, millest on ekstraheeritud ja SQL-andmebaasi laaditud asjakohased olemid, millest saame päringuid teha, jääb alles küsimus, kuidas luua sisend loomuliku keele küsimustest õige SQL-päring?
Kaasaegsed LLM-id oskavad hästi SQL-i genereerida. Näiteks kui taotlete Anthropic Claude LLM-i kaudu Amazonase aluspõhi SQL-päringu genereerimiseks näete usutavaid vastuseid. Täpsemate SQL-päringuteni jõudmiseks peame viipa kirjutamisel järgima mõnda reeglit. Need reeglid on eriti olulised keerukate päringute puhul, et vähendada hallutsinatsioone ja süntaksivigu:
- Kirjeldage ülesannet viipas täpselt
- Lisage viipa SQL-i tabelite skeem, kirjeldades samas tabeli iga veergu ja määrates selle andmetüübi
- Öelge LLM-ile selgesõnaliselt, et ta kasutaks ainult olemasolevaid veergude nimesid ja andmetüüpe
- Lisage paar rida SQL-i tabeleid
Samuti saate genereeritud SQL-päringu järeltöödelda, kasutades a latern nagu sqlfluff vormingu parandamiseks või parseri, näiteks sqlglot süntaksivigade tuvastamiseks ja päringu optimeerimiseks. Veelgi enam, kui jõudlus ei vasta nõuetele, võiksite viipa sees esitada mõned näited, et juhtida mudelit mõne sammuga õppimisega täpsemate SQL-päringute genereerimise suunas.
Rakendamise seisukohast kasutame me an AWS Lambda funktsioon järgmise protsessi korraldamiseks:
- Vastava SQL-päringu saamiseks helistage sisendküsimusega Amazon Bedrockis Anthropic Claude'i mudelile. Siin kasutame SQL-andmebaas klassi LangChainilt, et lisada asjakohaste SQL-tabelite skeemikirjeldused ja kasutada kohandatud viipa.
- Parsige, kinnitage ja käivitage SQL-päring selle vastu Amazon Aurora PostgreSQL-iga ühilduv väljaanne andmebaas.
Lahenduse selle osa arhitektuur on esile tõstetud järgmisel diagrammil.
Turvakaalutlused SQL-i süstimise rünnakute vältimiseks
Kuna võimaldame AI-assistendil SQL-i andmebaasi päringuid teha, peame tagama, et see ei tekitaks turvaauke. Selle saavutamiseks pakume SQL-i süstimise rünnakute vältimiseks järgmisi turvameetmeid:
- Rakendage IAM-i vähimate privileegide õigusi – Piirake selle Lambda-funktsiooni õigusi, mis käitab SQL-päringuid, kasutades a AWS-i identiteedi- ja juurdepääsuhaldus (IAM) poliitika ja roll, mis järgib vähimate privileegide põhimõte. Sel juhul anname kirjutuskaitstud juurdepääsu.
- Piirata juurdepääsu andmetele – Teabe avaldamise rünnakute vältimiseks võimaldage juurdepääs ainult minimaalsele arvule tabelitele ja veergudele.
- Lisage modereerimiskiht – Võtke kasutusele modereerimiskiht, mis tuvastab kiired süstimiskatsed varakult ja takistab nende levimist ülejäänud süsteemi. See võib esineda reeglipõhiste filtrite, sarnasuse sobitamise ja teadaolevate viipade sisestamise näidete andmebaasi või ML-klassifikaatori kujul.
Semantilise otsingu otsimine genereerimise konteksti suurendamiseks
Meie pakutud lahendus kasutab 3. komponendis semantilise otsinguga RAG-i. Seda moodulit saate rakendada kasutades Amazon Bedrocki teadmistebaasid. Lisaks on RAG-i rakendamiseks palju muid võimalusi, näiteks Amazon Kendra Retrieval API, Amazon OpenSearch vektori andmebaasja Amazon Aurora PostgreSQL koos pgvektoriga, teiste hulgas. Avatud lähtekoodiga pakett aws-genai-llm-chatbot demonstreerib, kuidas kasutada paljusid neist vektorotsingu valikutest LLM-toega vestlusroboti rakendamiseks.
Kuna vajame selles lahenduses nii SQL päringut kui ka vektorotsingut, otsustasime kasutada Amazon Aurora PostgreSQL pgvector laiendus, mis toetab mõlemat funktsiooni. Seetõttu rakendame semantilise otsingu RAG-i komponendi järgmise arhitektuuriga.
Eelneva arhitektuuri abil küsimustele vastamise protsess toimub kahes põhietapis.
Esiteks loob võrguühenduseta pakettprotsess, mida käitatakse SageMakeri töötlemistööna, semantilise otsinguindeksi järgmiselt:
- Kas perioodiliselt või uute dokumentide saamisel käivitatakse SageMakeri töö.
- See laadib Amazon S3 tekstidokumendid ja jagab need kattuvateks tükkideks.
- Iga tüki jaoks kasutab see manustusvektori loomiseks Amazon Titani manustamismudelit.
- Ta kasutab PGVector klassi LangChainist, et neelata manustused koos nende dokumenditükkide ja metaandmetega Amazon Aurora PostgreSQL-i ja luua semantiline otsinguindeks kõikidele manustamisvektoritele.
Teiseks koostame reaalajas ja iga uue küsimuse jaoks vastuse järgmiselt:
- Küsimuse võtab vastu orkestraator, mis töötab lambda funktsioonil.
- Orkester manustab küsimuse sama manustamismudeliga.
- See hangib PostgreSQL-i semantilisest otsinguindeksist K kõige asjakohasema dokumendi tükid. Täpsuse parandamiseks kasutab see valikuliselt metaandmete filtreerimist.
- Need tükid sisestatakse dünaamiliselt sisendküsimuse kõrvale LLM-viipa.
- Viip esitatakse Anthropic Claude'ile Amazon Bedrockis, et anda talle korraldus vastata sisendküsimusele olemasoleva konteksti alusel.
- Lõpuks saadetakse genereeritud vastus orkestreerijale tagasi.
Agent, kes on võimeline kasutama tööriistu arutlemiseks ja tegutsemiseks
Siiani oleme selles postituses käsitlenud küsimusi, mis nõuavad kas RAG-i või analüütilist põhjendust, eraldi käsitlemist. Paljud reaalse maailma küsimused nõuavad lõpliku vastuse saamiseks mõlemat võimalust, mõnikord mitme arutlusastmega. Nende keerukamate küsimuste toetamiseks peame kasutusele võtma agendi mõiste.
LLM-agendid, näiteks Amazon Bedrocki esindajad, on hiljuti esile kerkinud kui paljulubav lahendus, mis suudab kasutada LLM-e, et arutleda ja kohaneda praeguses kontekstis ning valida sobivaid toiminguid valikute loendist, mis kujutab endast üldist probleemide lahendamise raamistikku. Nagu artiklis arutatud LLM-iga töötavad autonoomsed agendid, on LLM-agentide jaoks mitu küsimisstrateegiat ja disainimustrit, mis toetavad keerulist arutluskäiku.
Üks selline kujundusmuster on Reason and Act (ReAct), mida tutvustati aastal ReAct: Arutlemise ja tegutsemise sünergiseerimine keelemudelites. ReActis võtab agent sisendiks eesmärgi, mis võib olla küsimus, tuvastab sellele vastamiseks puudu oleva teabe ja pakub korduvalt välja õige tööriista teabe kogumiseks olemasolevate tööriistade kirjelduste põhjal. Pärast antud tööriistalt vastuse saamist hindab LLM uuesti, kas tal on kogu teave, mida ta vajab küsimusele täielikuks vastamiseks. Kui ei, siis teeb ta uue arutluskäigu ja kasutab sama või muud vahendit lisateabe kogumiseks, kuni lõplik vastus on valmis või piir saavutatakse.
Järgmine jadaskeem selgitab, kuidas ReActi agent töötab, et vastata küsimusele "Tootke mulle viimase 5 aasta 2 suurima tuluga ettevõtet ja tehke kindlaks suurima ettevõttega seotud riskid."
Selle lähenemisviisi rakendamise üksikasju Pythonis kirjeldatakse artiklis Kohandatud LLM-agent. Meie lahenduses on agent ja tööriistad rakendatud järgmise esiletõstetud osalise arhitektuuriga.
Sisendküsimusele vastamiseks kasutame AWS-i teenuseid järgmiselt:
- Kasutaja sisestab oma küsimuse kasutajaliidese kaudu, mis kutsub API sisse Amazon API värav.
- API Gateway saadab küsimuse Lambda funktsioonile, mis rakendab agenditäiturit.
- Agent kutsub LLM-i viipaga, mis sisaldab saadaolevate tööriistade kirjeldust, ReActi käsuvormingut ja sisendküsimust, ning analüüsib seejärel järgmise toimingu lõpuleviimiseks.
- Toiming sisaldab, millist tööriista kutsuda ja mis on toimingu sisend.
- Kui kasutatav tööriist on SQL, kutsub agent täitur SQLQA-d, et teisendada küsimus SQL-iks ja käivitada. Seejärel lisab see tulemuse viipale ja helistab uuesti LLM-ile, et näha, kas see suudab vastata algsele küsimusele või on vaja teha rohkem toiminguid.
- Samamoodi, kui kasutatav tööriist on semantiline otsing, sõelutakse toimingu sisend välja ja seda kasutatakse PostgreSQL-i semantilisest otsinguindeksist toomiseks. See lisab tulemused viipale ja kontrollib, kas LLM suudab vastata või vajab teist toimingut.
- Kui kogu küsimusele vastamiseks vajalik teave on saadaval, sõnastab LLM-agent lõpliku vastuse ja saadab selle kasutajale tagasi.
Saate agenti laiendada täiendavate tööriistadega. Rakenduses saadaval GitHub, demonstreerime, kuidas saate eelnimetatud SQL-mootori ja semantiliste otsingutööriistade juurde lisatööriistadena lisada otsingumootori ja kalkulaatori. Käimasoleva vestluse ajaloo salvestamiseks kasutame a Amazon DynamoDB tabelis.
Senise kogemuse põhjal oleme näinud, et eduka agendi võtmed on järgmised:
- Aluseks olev LLM, mis suudab ReActi vorminguga arutleda
- Saadaolevate tööriistade selge kirjeldus, millal neid kasutada, ja nende sisendargumentide kirjeldus koos potentsiaalse sisendi ja eeldatava väljundi näitega
- ReActi vormingu selge ülevaade, mida LLM peab järgima
- Õiged tööriistad äriküsimuse lahendamiseks, mis on tehtud LLM-agendi käsutusse
- LLM-agendi vastuste väljundite korrektne sõelumine selle põhjuste kohaselt
Kulude optimeerimiseks soovitame kõige levinumad küsimused koos vastustega vahemällu salvestada ja seda vahemälu perioodiliselt värskendada, et vähendada kõnesid aluseks olevale LLM-ile. Näiteks saate luua semantilise otsinguindeksi kõige levinumate küsimustega, nagu eelnevalt selgitatud, ja enne LLM-i helistamist uue kasutaja küsimuse indeksiga sobitada. Teiste vahemällu salvestamise võimaluste uurimiseks vaadake LLM-i vahemälu integratsioonid.
Teiste vormingute, näiteks video-, pildi-, heli- ja 3D-failide toetamine
Sama lahendust saate rakendada erinevat tüüpi teabele, nagu pildid, videod, heli ja 3D-kujundusfailid, nagu CAD- või võrgufailid. See hõlmab väljakujunenud ML-tehnikate kasutamist faili sisu kirjeldamiseks tekstis, mida saab seejärel sisestada varem uuritud lahendusse. See lähenemisviis võimaldab teil korraldada nende erinevate andmetüüpide kvaliteedikontrolli vestlusi. Näiteks saate oma dokumentide andmebaasi laiendada, luues piltide, videote või helisisu tekstilisi kirjeldusi. Samuti saate metaandmete tabelit täiustada, tuvastades nendes vormingutes elementide klassifikatsiooni või objektituvastuse atribuudid. Pärast seda, kui need eraldatud andmed on indekseeritud kas metaandmete salves või dokumentide semantilises otsinguindeksis, jääb kavandatava süsteemi üldine arhitektuur suures osas järjepidevaks.
Järeldus
Selles postituses näitasime, kuidas LLM-ide kasutamine RAG-kujundusmustriga on vajalik domeenispetsiifilise AI-assistendi loomiseks, kuid sellest ei piisa äriväärtuse loomiseks vajaliku usaldusväärsuse taseme saavutamiseks. Seetõttu tegime ettepaneku laiendada populaarset RAG-i disainimustrit agentide ja tööriistade kontseptsioonidega, kus tööriistade paindlikkus võimaldab meil kasutada nii traditsioonilisi NLP-tehnikaid kui ka kaasaegseid LLM-i võimalusi, et võimaldada AI-assistendil rohkem võimalusi teabe otsimiseks ja abistamiseks. kasutajaid äriprobleemide tõhusal lahendamisel.
Lahendus demonstreerib projekteerimisprotsessi LLM-i assistendi poole, kes suudab vastata erinevat tüüpi otsingu-, analüütilistele ja mitmeastmelistele arutlusküsimustele kogu teie teadmistebaasi ulatuses. Samuti rõhutasime, kui oluline on mõelda tagasi, lähtudes küsimustest ja ülesannetest, mille puhul teie LLM-i assistent kasutajaid peaks aitama. Sel juhul viis disainitee meid kolmest komponendist koosneva arhitektuurini: semantiline otsing, metaandmete ekstraheerimine ja SQL-päring ning LLM-agent ja tööriistad, mis meie arvates on mitmekordseks kasutamiseks piisavalt üldine ja paindlik. Usume ka, et sellest lahendusest inspiratsiooni ammutades ja oma kasutajate vajadustesse sügavale sukeldudes saate seda lahendust veelgi laiendada teie jaoks sobivaima lahenduse suunas.
Autoritest
Mohamed Ali Jamaoui on ML prototüüpimise vanemarhitekt, kellel on 10-aastane tootmismasinõppe kogemus. Talle meeldib lahendada äriprobleeme masinõppe ja tarkvaratehnika abil ning aidata klientidel ML abil äriväärtust hankida. AWS EMEA prototüüpide ja pilvetehnoloogia osana aitab ta klientidel luua ärilahendusi, mis võimendavad uuendusi MLOP-de, NLP-de, CV-de ja LLM-ide vallas.
Giuseppe Hannen on ProServe'i assotsieerunud konsultant. Giuseppe rakendab oma analüüsioskusi koos AI&ML-iga, et töötada välja oma klientidele selged ja tõhusad lahendused. Talle meeldib keerulistele probleemidele, eriti uusimate tehnoloogiliste arengute ja teadustööga seotud probleemidele lihtsaid lahendusi välja mõelda.
Laurens kümme Cate on vanemandmeteadlane. Laurens teeb koostööd ettevõtete klientidega EMEA-s, aidates neil AWS AI/ML tehnoloogiate abil oma äritulemusi kiirendada. Ta on spetsialiseerunud NLP-lahendustele ning keskendub tarneahela ja logistikatööstusele. Vabal ajal naudib ta lugemist ja kunsti.
Irina Radu on prototüüpimise kaasamise juht, osa AWS EMEA prototüüpimisest ja pilvetehnoloogiast. Ta aitab klientidel uusimast tehnoloogiast parimat kasu saada, kiiremini uuendusi teha ja laiemalt mõelda.
- 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/boosting-rag-based-intelligent-document-assistants-using-entity-extraction-sql-querying-and-agents-with-amazon-bedrock/
- :on
- :on
- :mitte
- : kus
- $ UP
- 1
- 10
- 100
- 2022
- 3d
- 7
- a
- võime
- Võimalik
- MEIST
- kiirendama
- juurdepääs
- juurdepääsetav
- saavutatud
- konto
- täpsus
- täpne
- täpselt
- Saavutada
- saavutamisel
- üle
- tegu
- kohusetäitja
- tegevus
- meetmete
- kohandama
- lisama
- Lisaks
- Lisab
- vastu
- pärast
- jälle
- vastu
- Agent
- ained
- AI
- AI assistent
- AI / ML
- algoritm
- Joondab
- Materjal: BPA ja flataatide vaba plastik
- võimaldab
- kõrval
- Ka
- Amazon
- Amazon SageMaker
- Amazoni tekst
- Amazon Web Services
- vahel
- an
- analüüs
- Analüütiline
- analüüsima
- ja
- Teine
- vastus
- vastuseid
- Antroopne
- mistahes
- API
- API-liidesed
- kehtib
- kehtima
- lähenemine
- asjakohane
- ligikaudne
- arhitektuur
- OLEME
- argumendid
- ümber
- Kunst
- AS
- küsima
- abistama
- assistent
- assistendid
- Partner
- seotud
- eeldab
- At
- Reageerib
- Katsed
- heli-
- suurendama
- suurendatud
- Aurora
- automaatselt
- autonoomne
- saadaval
- AWS
- tagasi
- Taustaprogramm
- Saldo
- baas
- põhineb
- põhiline
- BE
- sest
- olnud
- enne
- käitumine
- taga
- Uskuma
- Kasu
- BEST
- vahel
- Peale
- suurem
- võimendamine
- mõlemad
- ehitama
- Ehitus
- äri
- ettevõtted
- kuid
- by
- Cache
- CAD
- helistama
- kutsutud
- kutsudes
- Kutsub
- CAN
- kandidaat
- võimeid
- võimeline
- viima
- juhul
- juhtudel
- kett
- chatbot
- Kontroll
- valik
- valikuid
- Vali
- klass
- klassifikatsioon
- selge
- Cloud
- SIDUS
- koostöö
- Veerg
- Veerud
- kombinatsioon
- ühendab
- Tulema
- ühine
- Ettevõtted
- ettevõte
- võrdlema
- võrrelda
- võrdlused
- Täiendus
- täitma
- keeruline
- keeruline
- komponent
- komponendid
- koostatud
- terviklik
- Arvutama
- mõisted
- betoon
- seisund
- Läbi viima
- Võta meiega ühendust
- Arvestama
- kaalutlused
- järjepidev
- Konsolideerida
- ehitama
- konsultant
- sisaldama
- sisaldub
- sisaldab
- sisu
- kontekst
- Vestlus
- jutukas
- jutukas AI
- vestlused
- muutma
- ümber
- tuum
- parandada
- õigesti
- Vastav
- Maksma
- kulud
- võiks
- seotud
- looma
- loob
- loomine
- Praegune
- tava
- klient
- Klienditugi
- Kliendid
- andmed
- juurdepääs andmetele
- andmeteadlane
- andmebaas
- otsustatud
- Otsustamine
- sügav
- sügavam
- määratletud
- Määratleb
- süvenema
- Nõudlus
- demo
- näitama
- Näidatud
- näitab
- sõltuvused
- juurutada
- kirjeldama
- kirjeldatud
- Kirjeldades
- kirjeldus
- Disain
- kujundusmustrid
- projekteerimisprotsess
- projekteerimine
- üksikasjalik
- detailid
- avastama
- Detection
- arendama
- & Tarkvaraarendus
- arenguid
- digitaalne
- avalikustamine
- arutama
- arutatud
- arutelud
- kaugus
- sukelduma
- mitu
- sukeldumine
- do
- dokument
- dokumentatsioon
- dokumendid
- ei
- Ei tee
- domeen
- Domeenid
- tehtud
- alla
- juht
- kaks
- ajal
- dünaamiliselt
- iga
- Ajalugu
- Varajane
- leevendada
- kasutusmugavus
- kergesti
- Tõhus
- tõhusalt
- efektiivsus
- tõhus
- tõhusalt
- kumbki
- elemendid
- kinnistamine
- EMEA
- tekkinud
- tööle
- võimaldama
- võimaldab
- võimaldades
- lõpp
- tegevus
- Mootor
- Inseneriteadus
- Mootorid
- suurendama
- Parandab
- piisavalt
- rikastav
- ettevõte
- üksuste
- üksus
- keskkond
- vead
- eriti
- oluline
- asutatud
- Isegi
- arenema
- uurima
- näide
- näited
- olemasolu
- olemasolevate
- Laiendama
- oodatav
- kogemus
- selgitas
- selgitades
- Selgitab
- uurima
- uurida
- avatud
- laiendama
- laiendades
- laiendamine
- lisatasu
- väljavõte
- kaevandamine
- Väljavõtted
- silmitsi seisnud
- ei
- FAQ
- kaugele
- kiiremini
- tunnusjoon
- FUNKTSIOONID
- tagasiside
- vähe
- väli
- fail
- Faile
- filtreerimine
- Filtrid
- lõplik
- Lõpuks
- finants-
- leidma
- esimene
- Paindlikkus
- paindlik
- voog
- Keskenduma
- keskendumine
- Järel
- järgneb
- eest
- vorm
- formaat
- moodustatud
- vormid
- Raamistik
- tasuta
- Alates
- esi-
- Esiots
- täitmine
- täis
- täielikult
- funktsioon
- edasi
- värav
- koguma
- Üldine
- tekitama
- loodud
- teeniva
- põlvkond
- generatiivne
- Generatiivne AI
- saama
- saamine
- GitHub
- antud
- eesmärk
- hea
- järk-järgult
- anda
- Grupp
- Grupi omad
- olnud
- Olema
- võttes
- he
- aitama
- aidates
- aitab
- siin
- Suur
- kõrgeim
- Esiletõstetud
- tema
- ajalugu
- loodetavasti
- Kuidas
- Kuidas
- aga
- HTML
- HTTPS
- inim-
- ideid
- identifitseerib
- identifitseerima
- identifitseerimiseks
- Identity
- if
- pilt
- pildid
- kujutage ette
- rakendada
- täitmine
- rakendatud
- rakendamisel
- tähtsus
- oluline
- parandama
- paranenud
- parandusi
- Paranemist
- in
- hõlmab
- indeks
- indekseeritud
- tööstus
- info
- teabe väljavõtmine
- esialgne
- uuendama
- uuendusi
- sisend
- sisendite
- Inspiratsioon
- inspireerima
- inspireeritud
- paigaldama
- Näiteks
- selle asemel
- integreerima
- Intelligentne
- suhelda
- sisemine
- sisse
- kehtestama
- sisse
- Investeeri
- uurimine
- investeering
- kaasama
- IT
- ITS
- ise
- töö
- teekond
- jpg
- Json
- hoidma
- Võti
- võtmed
- teadmised
- teatud
- keel
- suur
- suurelt jaolt
- viimane
- pärast
- hiljemalt
- käivitab
- kiht
- õppimine
- kõige vähem
- Led
- Pikkus
- Tase
- Finantsvõimendus
- nagu
- LIMIT
- piirangud
- LINK
- nimekiri
- LLM
- saadetised
- logistika
- logistikatööstus
- Pikk
- armastab
- masin
- masinõpe
- tehtud
- põhiline
- säilitada
- säilitamine
- tegema
- juhitud
- juht
- palju
- Vastama
- sobitamine
- küps
- mai..
- me
- tähendus
- meetmed
- Vastama
- mainib
- ainult
- silma
- sõnum
- Metaandmed
- meetod
- meetodid
- meetriline
- Meetrika
- miinimum
- eksitav
- puuduvad
- ML
- MLOps
- mudel
- mudelid
- mõõdukus
- Kaasaegne
- moodulid
- rohkem
- Pealegi
- kõige
- mitmekordne
- peab
- nimed
- Natural
- Natural Language Processing
- vajalik
- Vajadus
- vaja
- vajadustele
- naabrid
- neto
- puhastulu
- mitte kunagi
- Uus
- järgmine
- nlp
- mitte ükski
- märkmik
- Mõiste
- objekt
- Objekti tuvastamine
- of
- pakutud
- pakkumine
- offline
- sageli
- on
- ONE
- jätkuv
- ainult
- avatud
- avatud lähtekoodiga
- Operations
- optimeerima
- Valikud
- or
- et
- originaal
- Muu
- teised
- meie
- välja
- tulemusi
- kontuur
- välja toodud
- väljund
- väljundid
- üle
- üldine
- Ületada
- enda
- pakend
- pandas
- osa
- osad
- Muster
- mustrid
- täitma
- jõudlus
- luba
- perspektiiv
- Pharmaceutical
- tükki
- torujuhe
- tavaline
- planeerimine
- Platon
- Platoni andmete intelligentsus
- PlatoData
- usutav
- Punkt
- poliitika
- populaarne
- populaarsus
- asustatud
- võimalik
- võimalik
- post
- Postgresql
- potentsiaal
- potentsiaalselt
- sisse
- võimas
- tava
- Täpsus
- Valmistama
- esitada
- esitatud
- kingitusi
- säilitamine
- vältida
- takistab
- varem
- privileeg
- probleemi lahendamine
- probleeme
- protsess
- töötlemine
- toodab
- tootmine
- Toode
- Produktsioon
- lubadus
- paljutõotav
- omadused
- esitama
- pakutud
- teeb ettepaneku
- prototüüpimine
- tõestatud
- anda
- annab
- avalik
- Python
- Küsimused ja vastused
- päringud
- küsimus
- Küsimused
- Kiire
- kiiresti
- Edetabel
- kiire
- Töötlemata
- jõudma
- jõudis
- Reageerima
- Lugemine
- valmis
- reaalne
- päris maailm
- reaalajas
- põhjus
- mõistlik
- saadud
- vastuvõtmine
- hiljuti
- hiljuti
- tunnistama
- soovitama
- Soovitus
- vähendama
- viitama
- piirkond
- asjakohane
- usaldusväärsus
- lootma
- jäänused
- Aruanded
- Hoidla
- esindama
- taotleda
- nõudma
- nõutav
- nõue
- Vajab
- teadustöö
- vastus
- vastuste
- REST
- kaasa
- Tulemused
- tagasipöördumine
- tulu
- tulud
- läbi
- õige
- riskide
- Roll
- eeskirjade
- jooks
- jooksmine
- jookseb
- salveitegija
- sama
- Skaalautuvus
- skaneerida
- skaneerimine
- teadlane
- käsikiri
- Otsing
- otsingumootor
- Teine
- Osa
- lõigud
- turvalisus
- Turvameetmed
- vaata
- otsima
- nähtud
- valides
- valik
- semantika
- saadab
- vanem
- Saadetud
- Jada
- teenus
- Teenused
- ta
- peaks
- näitama
- näitas
- näidatud
- sarnane
- lihtne
- lihtsustatud
- lihtsustama
- üheaegselt
- alates
- ühekordne
- oskused
- So
- nii kaugel
- tarkvara
- tarkvaraarendus
- Ainult
- lahendus
- Lahendused
- Lahendamine
- mõned
- mõnikord
- allikas
- Allikad
- Ruum
- spetsialiseeritud
- spetsialiseerunud
- konkreetse
- kiirus
- Poolitab
- Kestab
- etappidel
- algus
- Käivitus
- juhtima
- Samm
- Sammud
- salvestada
- ladustatud
- lihtne
- strateegiad
- Strateegia
- lööma
- püüdma
- struktuur
- struktureeritud
- stuudio
- edukas
- selline
- soovitama
- sobiv
- Kokku võtta
- varustama
- tarneahelas
- toetama
- Toetab
- kindel
- süntaks
- süsteem
- tabel
- kohandatud
- Võtma
- võtab
- Ülesanne
- ülesanded
- tech
- tehnikat
- tehnoloogiline
- Tehnoloogiad
- öelda
- kümme
- tekst
- tekstiline
- tänan
- et
- .
- teave
- oma
- Neile
- SIIS
- Seal.
- sellega
- seetõttu
- Need
- nad
- mõtlema
- Mõtlemine
- see
- need
- kolm
- Läbi
- aeg
- Titan
- et
- täna
- tööriist
- töövahendid
- ülemine
- top 5
- suunas
- suunas
- Jälg
- traditsiooniline
- koolitus
- Muutma
- ravimisel
- tõsi
- usaldusväärne
- kaks
- tüüp
- liigid
- tüüpiliselt
- ui
- aluseks
- mõistma
- kuni
- ajakohastamine
- peale
- us
- kasutama
- Kasutatud
- Kasutaja
- User Experience
- Kasutajad
- kasutusalad
- kasutamine
- KINNITAGE
- väärtus
- Väärtused
- sort
- eri
- mitmekülgne
- Video
- Videod
- Haavatavused
- kõnnib
- Tee..
- we
- web
- veebiteenused
- Hästi
- olid
- M
- millal
- samas kui
- kas
- mis
- kuigi
- miks
- Wikipedia
- will
- koos
- jooksul
- ilma
- töötab
- oleks
- kirjutamine
- X
- aasta
- aastat
- sa
- Sinu
- sephyrnet