Kasutage generatiivset tehisintellekti alusmudelit kokkuvõtete tegemiseks ja küsimustele vastamiseks, kasutades oma andmeid | Amazoni veebiteenused

Kasutage generatiivset tehisintellekti alusmudelit kokkuvõtete tegemiseks ja küsimustele vastamiseks, kasutades oma andmeid | Amazoni veebiteenused

Suurte keelemudelite (LLM) abil saab analüüsida keerulisi dokumente ning anda kokkuvõtteid ja vastuseid küsimustele. Postitus Domeeni kohandamine Vundamendimudelite peenhäälestus rakenduses Amazon SageMaker JumpStart finantsandmetel kirjeldab LLM-i peenhäälestamist oma andmestiku abil. Kui teil on kindel LLM, peaksite seda ärikasutajatele tutvustama uute dokumentide töötlemiseks, mis võivad olla sadu lehekülgi pikad. Selles postituses näitame, kuidas luua reaalajas kasutajaliides, mis võimaldab ärikasutajatel töödelda suvalise pikkusega PDF-dokumenti. Kui fail on töödeldud, saate teha dokumendist kokkuvõtte või esitada sisu kohta küsimusi. Selles postituses kirjeldatud näidislahendus on saadaval aadressil GitHub.

Töö finantsdokumentidega

Finantsaruanded, nagu kvartali kasumiaruanded ja aktsionäridele esitatavad aastaaruanded, on sageli kümneid või sadu lehekülgi pikad. Need dokumendid sisaldavad palju põhikeelt, nagu lahtiütlused ja õiguskeel. Kui soovite mõnest neist dokumentidest peamised andmepunktid eraldada, vajate huvitavate faktide tuvastamiseks nii aega kui ka põhjalikku keelt. Ja loomulikult ei saa te LLM-ile esitada küsimusi dokumendi kohta, mida ta pole kunagi näinud.

Kokkuvõtete tegemiseks kasutatavatel LLM-idel on mudelisse edastatavate märkide (märkide) arv piiratud ja mõne erandiga ei ületa need tavaliselt mõne tuhande märgi. Tavaliselt välistab see pikemate dokumentide kokkuvõtete tegemise.

Meie lahendus käsitleb dokumente, mis ületavad LLM-i maksimaalset märgijada pikkust, ja teeb selle dokumendi LLM-ile kättesaadavaks küsimustele vastamiseks.

Lahenduse ülevaade

Meie disainil on kolm olulist osa:

  • Sellel on interaktiivne veebirakendus ärikasutajatele PDF-ide üleslaadimiseks ja töötlemiseks
  • See kasutab langchaini teeki, et jagada suur PDF paremini hallatavateks tükkideks
  • See kasutab täiustatud genereerimise tehnikat, et kasutajad saaksid esitada küsimusi uute andmete kohta, mida LLM pole varem näinud

Nagu on näidatud järgmisel diagrammil, kasutame esiotsa, mis on realiseeritud React JavaScriptiga, mis on hostitud an Amazoni lihtne salvestusteenus (Amazon S3) kopp ees Amazon CloudFront. Esiotsa rakendus võimaldab kasutajatel PDF-dokumente Amazon S3-sse üles laadida. Kui üleslaadimine on lõppenud, saate käivitada toitega teksti väljatõmbetöö Amazoni tekst. Järeltöötluse raames tehakse an AWS Lambda funktsioon lisab teksti spetsiaalsed markerid, mis näitavad lehe piire. Kui see töö on tehtud, saate käivitada API, mis võtab teksti kokku või vastab selle kohta küsimustele.

Kasutage generatiivset AI alusmudelit kokkuvõtte tegemiseks ja küsimustele vastamiseks, kasutades oma andmeid | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Kuna mõned neist sammudest võivad võtta aega, kasutab arhitektuur lahtisidutud asünkroonset lähenemist. Näiteks kutsub üleskutse dokumendi kokkuvõtte tegemiseks Lambda funktsiooni, mis postitab sõnumi aadressile Amazoni lihtsa järjekorra teenus (Amazon SQS) järjekord. Teine Lambda funktsioon võtab selle teate ja käivitab Amazoni elastsete konteinerite teenus (Amazon ECS) AWS Fargate ülesanne. Fargate'i ülesanne kutsub esile Amazon SageMaker järelduse lõpp-punkt. Kasutame siin Fargate'i ülesannet, kuna väga pika PDF-faili kokkuvõtte tegemine võib võtta rohkem aega ja mälu kui Lambda-funktsioonil. Kui kokkuvõte on tehtud, saab esiotsa rakendus tulemused hankida Amazon DynamoDB tabelis.

Kokkuvõtte tegemiseks kasutame AI21 mudelit Summarize, mis on üks põhimudeleid, mis on saadaval Amazon SageMaker JumpStart. Kuigi see mudel käsitleb kuni 10,000 40-sõnalisi dokumente (ligikaudu 10,000 lehekülge), kasutame langchaini tekstijaoturit, et tagada, et iga LLM-ile saadetud kokkuvõttekutse ei oleks pikem kui XNUMX XNUMX sõna. Teksti genereerimiseks kasutame Cohere'i meediumimudelit ja manustamiseks GPT-J, mõlemad KiirStardi kaudu.

Kokkuvõtte töötlemine

Suuremate dokumentide käsitlemisel peame määratlema, kuidas dokument väiksemateks tükkideks jagada. Kui saame Amazon Textractilt teksti ekstraheerimise tulemused tagasi, lisame markerid suuremate tekstitükkide (konfigureeritav arv lehekülgi), üksikute lehtede ja reavahede jaoks. Langchain jaguneb nende markerite põhjal ja koondab väiksemad dokumendid, mis on alla lubade piirangu. Vaadake järgmist koodi:

text_splitter = RecursiveCharacterTextSplitter( separators = ["<CHUNK>", "<PAGE>", "n"], chunk_size = int(chunk_size), chunk_overlap = int(chunk_overlap)) with open(local_path) as f: doc = f.read() texts = text_splitter.split_text(doc) print(f"Number of splits: {len(texts)}") llm = SageMakerLLM(endpoint_name = endpoint_name) responses = [] for t in texts: r = llm(t) responses.append(r) summary = "n".join(responses)

Kokkuvõteahela LLM on õhuke ümbris meie SageMakeri lõpp-punkti ümber:

class SageMakerLLM(LLM): endpoint_name: str @property
def _llm_type(self) -> str: return "summarize" def _call(self, prompt: str, stop: Optional[List[str]] = None) -> str: response = ai21.Summarize.execute( source=prompt, sourceType="TEXT", sm_endpoint=self.endpoint_name ) return response.summary 

Küsimusele vastamine

Otsimise laiendatud genereerimise meetodi puhul jagasime dokumendi esmalt väiksemateks segmentideks. Loome iga segmendi jaoks manuseid ja salvestame need avatud lähtekoodiga Chroma vektorite andmebaasis langchaini liidese kaudu. Salvestame andmebaasi an Amazon elastne failisüsteem (Amazon EFS) failisüsteemi hilisemaks kasutamiseks. Vaadake järgmist koodi:

documents = loader.load()
text_splitter = RecursiveCharacterTextSplitter(chunk_size = 500, chunk_overlap = 0)
texts = text_splitter.split_documents(documents)
print(f"Number of splits: {len(texts)}") embeddings = SMEndpointEmbeddings( endpoint_name=endpoint_name,
)
vectordb = Chroma.from_documents(texts, embeddings, persist_directory=persist_directory)
vectordb.persist()

Kui manustused on valmis, saab kasutaja esitada küsimuse. Otsime vektori andmebaasist tekstitükke, mis vastavad küsimusele kõige paremini:

embeddings = SMEndpointEmbeddings( endpoint_name=endpoint_embed
)
vectordb = Chroma(persist_directory=persist_directory, embedding_function=embeddings)
docs = vectordb.similarity_search_with_score(question)

Võtame lähima sobiva osa ja kasutame seda teksti genereerimise mudeli kontekstina, et vastata küsimusele:

cohere_client = Client(endpoint_name=endpoint_qa)
context = docs[high_score_idx][0].page_content.replace("n", "")
qa_prompt = f'Context={context}nQuestion={question}nAnswer='
response = cohere_client.generate(prompt=qa_prompt, max_tokens=512, temperature=0.25, return_likelihoods='GENERATION')
answer = response.generations[0].text.strip().replace('n', '')

Kasutaja kogemus

Kuigi LLM-id esindavad arenenud andmeteadust, hõlmab enamik LLM-ide kasutusjuhtumeid lõpuks suhtlemist mittetehniliste kasutajatega. Meie näidisveebirakendus käsitleb interaktiivset kasutusjuhtumit, kus ärikasutajad saavad uue PDF-dokumendi üles laadida ja töödelda.

Järgmine diagramm näitab kasutajaliidest. Kasutaja alustab PDF-i üleslaadimisega. Pärast dokumendi salvestamist Amazon S3-sse saab kasutaja alustada teksti väljavõtmist. Kui see on lõpetatud, saab kasutaja käivitada kokkuvõtte tegemise ülesande või esitada küsimusi. Kasutajaliides pakub mõningaid täpsemaid valikuid, nagu tükkide suurus ja osade kattumine, mis oleks kasulikud kogenud kasutajatele, kes testivad rakendust uute dokumentidega.

Kasutajaliides

Järgmised sammud

LLM-id pakuvad olulisi uusi teabeotsinguvõimalusi. Ärikasutajad vajavad neile võimalustele mugavat juurdepääsu. Tulevases töös tuleb kaaluda kahte suunda:

  • Kasutage Kiirstardi alusmudelites juba olemasolevaid võimsaid LLM-e. Vaid mõne koodirea abil saab meie näidisrakendus juurutada ja kasutada teksti kokkuvõtete tegemiseks ja genereerimiseks AI21 ja Cohere'i täiustatud LLM-e.
  • Tehke need võimalused kättesaadavaks mittetehnilistele kasutajatele. PDF-dokumentide töötlemise eeltingimus on dokumendist teksti eraldamine ja kokkuvõtete tegemiseks võib kuluda mitu minutit. See nõuab lihtsat kasutajaliidest koos asünkroonse taustatöötluse võimalustega, mida on lihtne kujundada pilvepõhiste teenuste, nagu Lambda ja Fargate, abil.

Samuti märgime, et PDF-dokument on poolstruktureeritud teave. Olulisi näpunäiteid, nagu jaotiste pealkirjad, on programmiliselt raske tuvastada, kuna need sõltuvad fondi suurusest ja muudest visuaalsetest indikaatoritest. Teabe aluseks oleva struktuuri tuvastamine aitab LLM-il andmeid täpsemalt töödelda, vähemalt seni, kuni LLM-id saavad hakkama piiramatu pikkusega sisendiga.

Järeldus

Selles postituses näitasime, kuidas luua interaktiivset veebirakendust, mis võimaldab ärikasutajatel PDF-dokumente kokkuvõtete tegemiseks ja küsimustele vastamiseks üles laadida ja töödelda. Nägime, kuidas kasutada Kiirstardi vundamendimudeleid, et pääseda juurde täiustatud LLM-idele, ning kasutada teksti jagamise ja otsimise täiustatud genereerimise tehnikaid, et töödelda pikemaid dokumente ja teha need teabena LLM-ile kättesaadavaks.

Praegusel ajahetkel pole põhjust mitte teha neid võimsaid võimalusi oma kasutajatele kättesaadavaks. Soovitame teil hakata kasutama Kiirstardi vundamendi mudelid täna.


Andmeid autor

Autori piltRandy DeFauw on AWS-i vanemlahenduste arhitekt. Tal on MSEE Michigani ülikoolist, kus ta töötas autonoomsete sõidukite arvutinägemise kallal. Tal on ka MBA kraad Colorado osariigi ülikoolist. Randy on olnud tehnoloogiavaldkonnas erinevatel ametikohtadel, alates tarkvaratehnikast kuni tootehalduseni. In sisenes suurandmete ruumi 2013. aastal ja jätkab selle valdkonna uurimist. Ta töötab aktiivselt ML-ruumi projektidega ja on esinenud paljudel konverentsidel, sealhulgas Strata ja GlueCon.

Ajatempel:

Veel alates AWS-i masinõpe