Käytä generatiivista tekoälyperustaista mallia yhteenvedon tekemiseen ja kysymyksiin vastaamiseen käyttämällä omia tietojasi | Amazon Web Services

Käytä generatiivista tekoälyperustaista mallia yhteenvedon tekemiseen ja kysymyksiin vastaamiseen käyttämällä omia tietojasi | Amazon Web Services

Suuria kielimalleja (LLM) voidaan käyttää monimutkaisten asiakirjojen analysointiin ja yhteenvetojen ja vastausten antamiseen kysymyksiin. Posti Verkkotunnuksen mukauttaminen Perusmallien hienosäätö Amazon SageMaker JumpStartissa taloustiedoissa kuvailee kuinka hienosäätää LLM käyttämällä omaa tietojoukkoasi. Kun sinulla on vankka LLM, haluat esitellä sen yrityskäyttäjille, jotta he voivat käsitellä uusia asiakirjoja, jotka voivat olla satoja sivuja pitkiä. Tässä viestissä näytämme, kuinka luodaan reaaliaikainen käyttöliittymä, jotta yrityskäyttäjät voivat käsitellä mielivaltaisen pituisia PDF-dokumentteja. Kun tiedosto on käsitelty, voit tehdä asiakirjasta yhteenvedon tai esittää kysymyksiä sisällöstä. Tässä viestissä kuvattu esimerkkiratkaisu on saatavilla osoitteessa GitHub.

Työskentely talousasiakirjojen kanssa

Tilinpäätökset, kuten neljännesvuosittaiset tulosraportit ja vuosiraportit osakkeenomistajille, ovat usein kymmeniä tai satoja sivuja pitkiä. Nämä asiakirjat sisältävät paljon peruskieltä, kuten vastuuvapauslausekkeita ja oikeudellista kieltä. Jos haluat poimia tärkeimmät datapisteet jostakin näistä asiakirjoista, tarvitset sekä aikaa että jonkin verran perehtyneisyyttä yleiskieleen, jotta voit tunnistaa mielenkiintoiset tosiasiat. Ja tietenkään et voi kysyä LLM:ltä kysymyksiä asiakirjasta, jota se ei ole koskaan nähnyt.

Yhteenvetoon käytetyillä LLM:illä on rajoitus malliin siirrettävien merkkien (merkkien) määrälle, ja joitakin poikkeuksia lukuun ottamatta nämä ovat tyypillisesti enintään muutama tuhat merkkiä. Tämä estää tavallisesti tiivistelmän pitemmistä asiakirjoista.

Ratkaisumme käsittelee asiakirjoja, jotka ylittävät LLM:n suurimman merkkijonon pituuden, ja asettaa asiakirjan LLM:n saataville kysymyksiin vastausta varten.

Ratkaisun yleiskatsaus

Suunnittelussamme on kolme tärkeää osaa:

  • Siinä on interaktiivinen verkkosovellus yrityskäyttäjille PDF-tiedostojen lataamiseen ja käsittelyyn
  • Se käyttää langchain-kirjastoa suuren PDF-tiedoston jakamiseen helpommin hallittavissa oleviin osiin
  • Se käyttää lisätyn sukupolven hakutekniikkaa, jotta käyttäjät voivat esittää kysymyksiä uusista tiedoista, joita LLM ei ole ennen nähnyt

Kuten seuraavassa kaaviossa näkyy, käytämme käyttöliittymää, joka on toteutettu React JavaScriptillä, jota isännöidään an Amazonin yksinkertainen tallennuspalvelu (Amazon S3) kauha edessä Amazon CloudFront. Käyttöliittymäsovelluksen avulla käyttäjät voivat ladata PDF-dokumentteja Amazon S3:een. Kun lataus on valmis, voit käynnistää tekstinpoimintatyön, joka toimii palvelimella Amazonin teksti. Osana jälkikäsittelyä an AWS Lambda toiminto lisää tekstiin erityisiä merkkejä, jotka osoittavat sivun rajat. Kun työ on valmis, voit kutsua API:n, joka tekee yhteenvedon tekstistä tai vastaa siihen liittyviin kysymyksiin.

Käytä generatiivista tekoälyperustaista mallia yhteenvedon tekemiseen ja kysymyksiin vastaamiseen käyttämällä omia tietojasi | Amazon Web Services PlatoBlockchain Data Intelligence. Pystysuuntainen haku. Ai.

Koska jotkin näistä vaiheista voivat kestää jonkin aikaa, arkkitehtuuri käyttää irrotettua asynkronista lähestymistapaa. Esimerkiksi asiakirjan yhteenvedon kutsu kutsuu Lambda-funktion, joka lähettää viestin osoitteeseen Amazonin yksinkertainen jonopalvelu (Amazon SQS) -jonossa. Toinen Lambda-toiminto poimii tämän viestin ja käynnistää Amazonin elastisten säiliöiden palvelu (Amazon ECS) AWS-veljeskunta tehtävä. Fargate-tehtävä kutsuu Amazon Sage Maker päätelmän päätepiste. Käytämme tässä Fargate-tehtävää, koska erittäin pitkän PDF-tiedoston yhteenveto voi viedä enemmän aikaa ja muistia kuin Lambda-funktiolla on käytettävissä. Kun yhteenveto on tehty, käyttöliittymäsovellus voi poimia tulokset sovelluksesta Amazon DynamoDB pöytä.

Yhteenvetona käytämme AI21:n Summarize-mallia, joka on yksi perusmalleista, jotka ovat saatavilla kautta Amazon SageMaker JumpStart. Vaikka tämä malli käsittelee jopa 10,000 40 sanan (noin 10,000 sivua) dokumentteja, käytämme langchainin tekstinjakajaa varmistaaksemme, että jokainen yhteenvetokutsu LLM:lle on enintään XNUMX XNUMX sanaa pitkä. Tekstin luomiseen käytämme Coheren Medium-mallia ja käytämme GPT-J:tä upottamiseen, molemmat JumpStartin kautta.

Yhteenvetokäsittely

Kun käsittelemme suurempia asiakirjoja, meidän on määritettävä, kuinka asiakirja jaetaan pienempiin osiin. Kun saamme tekstinpoistotulokset takaisin Amazon Textractista, lisäämme merkit suuremmille tekstipaloille (määritettävä määrä sivuja), yksittäisille sivuille ja rivinvaihdoille. Langchain jakaa näiden merkintöjen perusteella ja kokoaa pienempiä asiakirjoja, jotka ovat alle merkkirajan. Katso seuraava 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)

Yhteenvetoketjun LLM on ohut kääre SageMaker-päätepisteemme ympärillä:

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 

Kysymykseen vastaaminen

Haun lisätyn sukupolven menetelmässä jaamme asiakirjan ensin pienempiin osiin. Luomme jokaiselle segmentille upotukset ja tallennamme ne avoimen lähdekoodin Chroma-vektoritietokantaan langchainin käyttöliittymän kautta. Tallennamme tietokannan an Amazonin elastinen tiedostojärjestelmä (Amazon EFS) -tiedostojärjestelmä myöhempää käyttöä varten. Katso seuraava 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()

Kun upotukset ovat valmiit, käyttäjä voi esittää kysymyksen. Etsimme vektoritietokannasta tekstikappaleita, jotka vastaavat eniten kysymystä:

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

Otamme lähimmän vastaavan palan ja käytämme sitä kontekstina tekstin luontimallille vastataksemme kysymykseen:

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', '')

Käyttökokemus

Vaikka LLM:t edustavat edistynyttä tietotieteitä, suurin osa LLM:ien käyttötapauksista liittyy lopulta vuorovaikutukseen ei-teknisten käyttäjien kanssa. Esimerkkiverkkosovelluksemme käsittelee interaktiivista käyttötapausta, jossa yrityskäyttäjät voivat ladata ja käsitellä uuden PDF-dokumentin.

Seuraava kaavio näyttää käyttöliittymän. Käyttäjä aloittaa lataamalla PDF-tiedoston. Kun asiakirja on tallennettu Amazon S3:een, käyttäjä voi aloittaa tekstinpoistotyön. Kun se on valmis, käyttäjä voi käynnistää yhteenvetotehtävän tai esittää kysymyksiä. Käyttöliittymä paljastaa joitain lisäasetuksia, kuten kappaleen koon ja osien päällekkäisyyden, mikä olisi hyödyllistä kokeneille käyttäjille, jotka testaavat sovellusta uusilla asiakirjoilla.

Käyttöliittymä

Seuraavat vaiheet

LLM:t tarjoavat merkittäviä uusia tiedonhakuvalmiuksia. Yrityskäyttäjät tarvitsevat kätevän pääsyn näihin ominaisuuksiin. Tulevaisuuden työssä on kaksi pohdittavaa:

  • Hyödynnä Jumpstart Foundation -malleissa jo saatavilla olevia tehokkaita LLM:itä. Vain muutamalla koodirivillä esimerkkisovelluksemme voisi ottaa käyttöön ja käyttää edistyneitä LLM:itä AI21:stä ja Coheresta tekstin yhteenvetoon ja luomiseen.
  • Tee näistä ominaisuuksista ei-teknisten käyttäjien saatavilla. PDF-dokumenttien käsittelyn edellytys on tekstin purkaminen asiakirjasta, ja yhteenvetotyöt voivat kestää useita minuutteja. Tämä edellyttää yksinkertaista käyttöliittymää asynkronisilla taustaprosessoinneilla, jotka on helppo suunnitella käyttämällä pilvipohjaisia ​​palveluita, kuten Lambda ja Fargate.

Huomaa myös, että PDF-dokumentti on osittain jäsenneltyä tietoa. Tärkeitä vihjeitä, kuten osion otsikoita, on vaikea tunnistaa ohjelmallisesti, koska ne perustuvat kirjasinkokoihin ja muihin visuaalisiin ilmaisimiin. Tietojen taustalla olevan rakenteen tunnistaminen auttaa LLM:ää käsittelemään tietoja tarkemmin ainakin siihen asti, että LLM:t voivat käsitellä rajattoman pituisia syötteitä.

Yhteenveto

Tässä viestissä näytimme, kuinka luodaan interaktiivinen verkkosovellus, jonka avulla yrityskäyttäjät voivat ladata ja käsitellä PDF-dokumentteja yhteenvetoa ja kysymyksiin vastaamista varten. Näimme, kuinka voit hyödyntää Jumpstart-säätiön malleja päästäksesi edistyneisiin LLM:ihin ja käyttää tekstinjako- ja noutotekniikkaa pidempien asiakirjojen käsittelemiseen ja niiden saataville tietona LLM:n käyttöön.

Tällä hetkellä ei ole mitään syytä olla antamatta näitä tehokkaita ominaisuuksia käyttäjien saataville. Kehotamme sinua aloittamaan sen käytön Jumpstart-perusmallit tänään.


Kirjailijasta

Tekijän kuvaRandy DeFauw on AWS:n vanhempi ratkaisuarkkitehti. Hän on suorittanut MSEE-tutkinnon Michiganin yliopistosta, jossa hän työskenteli autonomisten ajoneuvojen tietokonenäön parissa. Hän on myös suorittanut MBA-tutkinnon Colorado State Universitystä. Randy on toiminut erilaisissa tehtävissä teknologia-alalla ohjelmistosuunnittelusta tuotehallintaan. In astui Big Data -avaruuteen vuonna 2013 ja jatkaa tämän alueen tutkimista. Hän työskentelee aktiivisesti projekteissa ML-tilassa ja on esiintynyt lukuisissa konferensseissa, mukaan lukien Strata ja GlueCon.

Aikaleima:

Lisää aiheesta AWS-koneoppiminen