Használjon generatív mesterségesintelligencia-alapmodellt az összegzéshez és a kérdések megválaszolásához saját adatai alapján | Amazon webszolgáltatások

Használjon generatív mesterségesintelligencia-alapmodellt az összegzéshez és a kérdések megválaszolásához saját adatai alapján | Amazon webszolgáltatások

A nagy nyelvi modellek (LLM) segítségével összetett dokumentumokat elemezhetünk, és összefoglalókat és válaszokat adhatunk a kérdésekre. A poszt Domain-adaptáció Az alapozási modellek finomhangolása az Amazon SageMaker JumpStartban a pénzügyi adatokon leírja, hogyan lehet finomhangolni egy LLM-et saját adatkészlete segítségével. Ha szilárd LLM-vel rendelkezik, azt az üzleti felhasználóknak meg kell adnia új dokumentumok feldolgozásához, amelyek akár több száz oldalasak is lehetnek. Ebben a bejegyzésben bemutatjuk, hogyan lehet valós idejű felhasználói felületet létrehozni, amely lehetővé teszi az üzleti felhasználók számára, hogy tetszőleges hosszúságú PDF-dokumentumot dolgozzanak fel. A fájl feldolgozása után összefoglalhatja a dokumentumot, vagy kérdéseket tehet fel a tartalommal kapcsolatban. Az ebben a bejegyzésben leírt mintamegoldás elérhető a következő címen: GitHub.

Pénzügyi dokumentumokkal való munka

A pénzügyi kimutatások, például a negyedéves eredményjelentések és a részvényeseknek szóló éves jelentések gyakran több tíz vagy száz oldalasak. Ezek a dokumentumok sok általános nyelvezetet tartalmaznak, például felelősségkizárásokat és jogi nyelvezetet. Ha e dokumentumok egyikéből szeretné kivonni a kulcsfontosságú adatpontokat, időre és némi jártasságra van szüksége a sablonnyelvben, hogy azonosítani tudja az érdekes tényeket. És természetesen nem tehet fel kérdéseket egy LLM-nek olyan dokumentumról, amelyet soha nem látott.

Az összegzésre használt LLM-ek korlátozzák a modellbe átvitt tokenek (karakterek) számát, és néhány kivételtől eltekintve ezek jellemzően nem haladják meg néhány ezer tokenek számát. Ez általában kizárja a hosszabb dokumentumok összefoglalásának lehetőségét.

Megoldásunk olyan dokumentumokat kezel, amelyek meghaladják egy LLM maximális token sorozathosszát, és ezt a dokumentumot elérhetővé teszik az LLM számára kérdések megválaszolásához.

Megoldás áttekintése

Tervezésünk három fontos elemből áll:

  • Interaktív webalkalmazással rendelkezik az üzleti felhasználók számára PDF-fájlok feltöltésére és feldolgozására
  • A langchain könyvtárat használja a nagy PDF-fájlok könnyebben kezelhető darabokra osztására
  • A kibővített generálási technikát használja, hogy a felhasználók olyan új adatokkal kapcsolatos kérdéseket tegyenek fel, amelyeket az LLM még nem látott.

Amint az a következő ábrán látható, egy olyan kezelőfelületet használunk, amely a React JavaScript-tel van megvalósítva, amely az an Amazon egyszerű tárolási szolgáltatás (Amazon S3) vödör elől Amazon CloudFront. A front-end alkalmazás lehetővé teszi a felhasználók számára, hogy PDF dokumentumokat töltsenek fel az Amazon S3-ra. A feltöltés befejezése után elindíthat egy szövegkivonatolási feladatot Amazon szöveg. Az utófeldolgozás részeként egy AWS Lambda funkció speciális markereket szúr be a szövegbe, jelezve az oldalhatárokat. Amikor ez a munka elkészült, meghívhat egy API-t, amely összefoglalja a szöveget, vagy válaszol a rá vonatkozó kérdésekre.

Use a generative AI foundation model for summarization and question answering using your own data | Amazon Web Services PlatoBlockchain Data Intelligence. Vertical Search. Ai.

Mivel ezen lépések némelyike ​​eltarthat egy ideig, az architektúra leválasztott aszinkron megközelítést használ. Például egy dokumentum összegzésére irányuló hívás egy Lambda függvényt hív meg, amely üzenetet küld egy Amazon Simple Queue Service (Amazon SQS) sor. Egy másik Lambda funkció felveszi ezt az üzenetet, és elindít egy Amazon Elastic Container Service (Amazon ECS) AWS Fargate feladat. A Fargate feladat a Amazon SageMaker következtetés végpontja. Itt egy Fargate-feladatot használunk, mert egy nagyon hosszú PDF összegzése több időt és memóriát igényelhet, mint egy Lambda-függvény. Amikor az összegzés elkészült, az előtér-alkalmazás felveheti az eredményeket egy Amazon DynamoDB táblázat.

Összegzésként az AI21 Summarize modelljét használjuk, amely az egyik alapmodell, amelyen keresztül elérhető Amazon SageMaker JumpStart. Bár ez a modell legfeljebb 10,000 40 szavas (körülbelül 10,000 oldal) dokumentumokat kezel, a langchain szövegelosztóját használjuk annak biztosítására, hogy az LLM-hez intézett összesítő hívás ne legyen hosszabb XNUMX XNUMX szónál. Szöveggeneráláshoz a Cohere's Medium modellt, a beágyazáshoz pedig a GPT-J-t használjuk, mindkettőt a JumpStart segítségével.

Összegzés feldolgozása

Nagyobb dokumentumok kezelésekor meg kell határoznunk, hogyan lehet a dokumentumot kisebb darabokra osztani. Amikor visszakapjuk a szövegkivonási eredményeket az Amazon Textracttól, jelölőket szúrunk be a nagyobb szövegrészekhez (konfigurálható oldalszám), az egyes oldalakhoz és a sortörésekhez. A Langchain felosztja a jelölők alapján, és összeállítja a kisebb dokumentumokat, amelyek a token-korlát alatt vannak. Lásd a következő kódot:

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)

Az összefoglaló láncban az LLM egy vékony burkolat a SageMaker végpontja körül:

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érdés válasz

A kibővített generálási módszerben a dokumentumot először kisebb szegmensekre bontjuk. Minden szegmenshez beágyazást készítünk, és a nyílt forráskódú Chroma vektor adatbázisban tároljuk a langchain felületén keresztül. Az adatbázist elmentjük egy Amazon elasztikus fájlrendszer (Amazon EFS) fájlrendszer későbbi használatra. Lásd a következő kódot:

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()

Amikor a beágyazás készen áll, a felhasználó feltehet kérdést. A vektoros adatbázisban megkeressük azokat a szövegrészeket, amelyek a leginkább megfelelnek a kérdésnek:

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

A legközelebbi egyező darabot vesszük, és a szöveggenerálási modell kontextusaként használjuk a kérdés megválaszolásához:

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

Felhasználói élmény

Bár az LLM-ek fejlett adattudományt képviselnek, az LLM-ek legtöbb felhasználási esete végső soron a nem műszaki felhasználókkal való interakciót jelenti. Példa webalkalmazásunk egy interaktív használati esetet kezel, ahol az üzleti felhasználók új PDF-dokumentumot tölthetnek fel és dolgozhatnak fel.

Az alábbi ábra a felhasználói felületet mutatja be. A felhasználó először feltölt egy PDF-fájlt. Miután a dokumentumot az Amazon S3-ban tárolták, a felhasználó elindíthatja a szövegkivonási feladatot. Ha ez kész, a felhasználó elindíthatja az összegzési feladatot, vagy kérdéseket tehet fel. A felhasználói felület felfed néhány speciális beállítást, például a darabméretet és a darabok átfedését, amelyek hasznosak lehetnek a haladó felhasználók számára, akik új dokumentumokon tesztelik az alkalmazást.

Felhasználói felület

A következő lépések

Az LLM-ek jelentős új információ-visszakeresési lehetőségeket biztosítanak. Az üzleti felhasználóknak kényelmes hozzáférésre van szükségük ezekhez a képességekhez. A jövőbeni munkának két irányt kell figyelembe vennie:

  • Használja ki a Jumpstart alapozó modellekben már elérhető hatékony LLM-eket. Csupán néhány sornyi kóddal példaalkalmazásunk telepítheti és felhasználhatja az AI21 és a Cohere fejlett LLM-jeit szövegösszegzésre és -generálásra.
  • Tegye elérhetővé ezeket a képességeket a nem műszaki felhasználók számára. A PDF-dokumentumok feldolgozásának előfeltétele a szöveg kinyerése a dokumentumból, és az összefoglaló feladatok futtatása több percig is eltarthat. Ez egy egyszerű felhasználói felületet igényel aszinkron háttérfeldolgozási képességekkel, amelyet könnyű megtervezni a felhőalapú szolgáltatások, például a Lambda és a Fargate segítségével.

Azt is megjegyezzük, hogy a PDF-dokumentum félig strukturált információ. A fontos jelzéseket, például a szakaszfejléceket nehéz programozottan azonosítani, mert a betűméretre és más vizuális mutatókra támaszkodnak. Az információk mögöttes szerkezetének azonosítása segíti az LLM-et az adatok pontosabb feldolgozésében, legalább addig, amíg az LLM-ek nem tudnak korlátlan hosszúságú bemeneteket kezelni.

Következtetés

Ebben a bejegyzésben bemutattuk, hogyan készítsünk interaktív webalkalmazást, amely lehetővé teszi az üzleti felhasználók számára, hogy PDF-dokumentumokat töltsenek fel és dolgozzanak fel összegzés és kérdések megválaszolása céljából. Láttuk, hogyan lehet kihasználni a Jumpstart alapozó modelljeit a fejlett LLM-ekhez való hozzáféréshez, és hogyan használhatunk szövegfelosztási és visszakeresési kiterjesztett generálási technikákat a hosszabb dokumentumok feldolgozásához és információként az LLM számára elérhetővé tételéhez.

Jelenleg nincs ok arra, hogy ezeket a hatékony képességeket ne tegyük elérhetővé a felhasználók számára. Javasoljuk, hogy kezdje el használni a Jumpstart alapozó modellek Ma.


A szerzőről

Szerző képRandy DeFauw az AWS vezető megoldásokért felelős építésze. MSEE diplomával rendelkezik a Michigani Egyetemen, ahol autonóm járművek számítógépes látásmódjával foglalkozott. Emellett a Colorado Állami Egyetemen szerzett MBA fokozatot. Randy számos pozíciót töltött be a technológiai területen, a szoftverfejlesztéstől a termékmenedzsmentig. In 2013-ban lépett be a Big Data térbe, és továbbra is kutatja ezt a területet. Aktívan dolgozik projekteken az ML területen, és számos konferencián prezentált, köztük a Stratán és a GlueConon.

Időbélyeg:

Még több AWS gépi tanulás