Nutzen Sie ein generatives KI-Grundlagenmodell zur Zusammenfassung und Beantwortung von Fragen anhand Ihrer eigenen Daten | Amazon Web Services

Nutzen Sie ein generatives KI-Grundlagenmodell zur Zusammenfassung und Beantwortung von Fragen anhand Ihrer eigenen Daten | Amazon Web Services

Mithilfe großer Sprachmodelle (LLMs) können komplexe Dokumente analysiert und Zusammenfassungen sowie Antworten auf Fragen bereitgestellt werden. Die Post Domänenanpassung Feinabstimmung von Foundation-Modellen in Amazon SageMaker JumpStart auf Finanzdaten beschreibt, wie Sie ein LLM mithilfe Ihres eigenen Datensatzes optimieren. Sobald Sie über ein solides LLM verfügen, möchten Sie dieses LLM Geschäftsanwendern zur Verfügung stellen, um neue Dokumente zu verarbeiten, die Hunderte von Seiten lang sein können. In diesem Beitrag zeigen wir, wie man eine Echtzeit-Benutzeroberfläche erstellt, damit Geschäftsanwender ein PDF-Dokument beliebiger Länge verarbeiten können. Sobald die Datei verarbeitet ist, können Sie das Dokument zusammenfassen oder Fragen zum Inhalt stellen. Die in diesem Beitrag beschriebene Beispiellösung ist verfügbar unter GitHub.

Arbeiten mit Finanzdokumenten

Finanzberichte wie vierteljährliche Gewinnberichte und Jahresberichte an die Aktionäre umfassen häufig Dutzende oder Hunderte von Seiten. Diese Dokumente enthalten viele Standardtexte wie Haftungsausschlüsse und Rechtstexte. Wenn Sie die wichtigsten Datenpunkte aus einem dieser Dokumente extrahieren möchten, benötigen Sie sowohl Zeit als auch eine gewisse Vertrautheit mit der Standardsprache, damit Sie die interessanten Fakten identifizieren können. Und natürlich können Sie einem LLM keine Fragen zu einem Dokument stellen, das er noch nie gesehen hat.

Bei für die Zusammenfassung verwendeten LLMs ist die Anzahl der an das Modell übergebenen Token (Zeichen) begrenzt. Mit einigen Ausnahmen sind dies in der Regel nicht mehr als einige tausend Token. Dies schließt normalerweise die Möglichkeit aus, längere Dokumente zusammenzufassen.

Unsere Lösung verarbeitet Dokumente, die die maximale Token-Sequenzlänge eines LLM überschreiten, und stellt das Dokument dem LLM zur Beantwortung von Fragen zur Verfügung.

Lösungsüberblick

Unser Design besteht aus drei wichtigen Teilen:

  • Es verfügt über eine interaktive Webanwendung für Geschäftsanwender zum Hochladen und Verarbeiten von PDFs
  • Es verwendet die Langchain-Bibliothek, um eine große PDF-Datei in überschaubarere Teile aufzuteilen
  • Es nutzt die Retrieval-Augmented-Generation-Technik, um Benutzern die Möglichkeit zu geben, Fragen zu neuen Daten zu stellen, die das LLM zuvor noch nicht gesehen hat

Wie im folgenden Diagramm gezeigt, verwenden wir ein Frontend, das mit React JavaScript implementiert ist und in einem gehostet wird Amazon Simple Storage-Service (Amazon S3) Eimer mit Vorderseite Amazon CloudFront. Mit der Front-End-Anwendung können Benutzer PDF-Dokumente auf Amazon S3 hochladen. Nachdem der Upload abgeschlossen ist, können Sie einen Textextraktionsauftrag powered by auslösen Amazontext. Im Rahmen der Nachbearbeitung wird eine AWS Lambda Die Funktion fügt spezielle Markierungen in den Text ein, die Seitengrenzen angeben. Wenn diese Aufgabe erledigt ist, können Sie eine API aufrufen, die den Text zusammenfasst oder Fragen dazu beantwortet.

Nutzen Sie ein generatives KI-Grundlagenmodell zur Zusammenfassung und Beantwortung von Fragen anhand Ihrer eigenen Daten | Amazon Web Services PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Da einige dieser Schritte einige Zeit in Anspruch nehmen können, verwendet die Architektur einen entkoppelten asynchronen Ansatz. Beispielsweise ruft der Aufruf zum Zusammenfassen eines Dokuments eine Lambda-Funktion auf, die eine Nachricht an eine sendet Amazon Simple Queue-Dienst (Amazon SQS)-Warteschlange. Eine andere Lambda-Funktion nimmt diese Nachricht auf und startet eine Amazon Elastic Container-Service (Amazon ECS) AWS Fargate Aufgabe. Die Fargate-Aufgabe ruft die auf Amazon Sage Maker Inferenzendpunkt. Wir verwenden hier eine Fargate-Aufgabe, da das Zusammenfassen einer sehr langen PDF-Datei möglicherweise mehr Zeit und Speicher benötigt, als eine Lambda-Funktion zur Verfügung hat. Wenn die Zusammenfassung abgeschlossen ist, kann die Front-End-Anwendung die Ergebnisse von einem abrufen Amazon DynamoDB Tabelle.

Für die Zusammenfassung verwenden wir das Summarize-Modell von AI21, eines der über verfügbaren Basismodelle Amazon SageMaker-JumpStart. Obwohl dieses Modell Dokumente mit bis zu 10,000 Wörtern (ungefähr 40 Seiten) verarbeitet, verwenden wir den Textsplitter von Langchain, um sicherzustellen, dass jeder Zusammenfassungsaufruf an das LLM nicht länger als 10,000 Wörter ist. Für die Textgenerierung verwenden wir das Medium-Modell von Cohere und für Einbettungen verwenden wir GPT-J, beides über JumpStart.

Zusammenfassungsverarbeitung

Bei der Bearbeitung größerer Dokumente müssen wir definieren, wie das Dokument in kleinere Teile aufgeteilt wird. Wenn wir die Ergebnisse der Textextraktion von Amazon Textract zurückerhalten, fügen wir Markierungen für größere Textblöcke (eine konfigurierbare Anzahl von Seiten), einzelne Seiten und Zeilenumbrüche ein. Langchain wird basierend auf diesen Markierungen aufgeteilt und kleinere Dokumente zusammengefügt, die unter dem Token-Limit liegen. Siehe den folgenden Code:

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)

Das LLM in der Zusammenfassungskette ist eine dünne Hülle um unseren SageMaker-Endpunkt:

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 

Frage beantworten

Bei der Retrieval-Augmented-Generierungsmethode teilen wir das Dokument zunächst in kleinere Segmente auf. Wir erstellen Einbettungen für jedes Segment und speichern sie über die Schnittstelle von Langchain in der Open-Source-Vektordatenbank Chroma. Wir speichern die Datenbank in einem Amazon Elastic File System (Amazon EFS) Dateisystem zur späteren Verwendung. Siehe den folgenden Code:

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

Wenn die Einbettungen fertig sind, kann der Benutzer eine Frage stellen. Wir durchsuchen die Vektordatenbank nach den Textblöcken, die der Frage am ehesten entsprechen:

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

Wir nehmen den am besten passenden Block und verwenden ihn als Kontext für das Textgenerierungsmodell, um die Frage zu beantworten:

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

User Experience

Obwohl LLMs eine fortgeschrittene Datenwissenschaft darstellen, beinhalten die meisten Anwendungsfälle für LLMs letztendlich die Interaktion mit technisch nicht versierten Benutzern. Unsere Beispiel-Webanwendung behandelt einen interaktiven Anwendungsfall, bei dem Geschäftsanwender ein neues PDF-Dokument hochladen und verarbeiten können.

Das folgende Diagramm zeigt die Benutzeroberfläche. Ein Benutzer beginnt mit dem Hochladen einer PDF-Datei. Nachdem das Dokument in Amazon S3 gespeichert wurde, kann der Benutzer den Textextraktionsauftrag starten. Sobald dies abgeschlossen ist, kann der Benutzer die Zusammenfassungsaufgabe aufrufen oder Fragen stellen. Die Benutzeroberfläche bietet einige erweiterte Optionen wie die Blockgröße und die Blocküberlappung, die für fortgeschrittene Benutzer nützlich wären, die die Anwendung an neuen Dokumenten testen.

Benutzeroberfläche

Nächste Schritte

LLMs bieten bedeutende neue Möglichkeiten zur Informationsbeschaffung. Geschäftsanwender benötigen bequemen Zugriff auf diese Funktionen. Für zukünftige Arbeiten sind zwei Richtungen zu berücksichtigen:

  • Nutzen Sie die leistungsstarken LLMs, die bereits in den Jumpstart-Grundlagenmodellen verfügbar sind. Mit nur wenigen Codezeilen könnte unsere Beispielanwendung erweiterte LLMs von AI21 und Cohere für die Textzusammenfassung und -generierung bereitstellen und nutzen.
  • Machen Sie diese Funktionen auch technisch nicht versierten Benutzern zugänglich. Eine Voraussetzung für die Verarbeitung von PDF-Dokumenten ist das Extrahieren von Text aus dem Dokument. Die Ausführung von Zusammenfassungsaufträgen kann mehrere Minuten dauern. Dafür ist eine einfache Benutzeroberfläche mit asynchronen Backend-Verarbeitungsfunktionen erforderlich, die mithilfe cloudnativer Dienste wie Lambda und Fargate einfach zu entwerfen ist.

Wir weisen außerdem darauf hin, dass es sich bei einem PDF-Dokument um halbstrukturierte Informationen handelt. Wichtige Hinweise wie Abschnittsüberschriften sind programmgesteuert schwer zu identifizieren, da sie auf Schriftgrößen und anderen visuellen Indikatoren basieren. Die Identifizierung der zugrunde liegenden Informationsstruktur hilft dem LLM, die Daten genauer zu verarbeiten, zumindest bis zu dem Zeitpunkt, an dem LLMs Eingaben unbegrenzter Länge verarbeiten können.

Zusammenfassung

In diesem Beitrag haben wir gezeigt, wie man eine interaktive Webanwendung erstellt, mit der Geschäftsanwender PDF-Dokumente zur Zusammenfassung und Beantwortung von Fragen hochladen und verarbeiten können. Wir haben gesehen, wie wir die Jumpstart-Grundlagenmodelle nutzen können, um auf erweiterte LLMs zuzugreifen, und wie wir Textaufteilungs- und Retrieval-Augmented-Generierungstechniken nutzen können, um längere Dokumente zu verarbeiten und sie dem LLM als Informationen zur Verfügung zu stellen.

Zum jetzigen Zeitpunkt gibt es keinen Grund, Ihren Benutzern diese leistungsstarken Funktionen nicht zur Verfügung zu stellen. Wir empfehlen Ihnen, mit der Nutzung zu beginnen Starthilfe für Fundamentmodelle heute.


Über den Autor

AutorenbildRandy DeFauw ist Senior Principal Solutions Architect bei AWS. Er besitzt einen MSEE von der University of Michigan, wo er an Computer Vision für autonome Fahrzeuge arbeitete. Er verfügt außerdem über einen MBA der Colorado State University. Randy hatte verschiedene Positionen im Technologiebereich inne, von der Softwareentwicklung bis zum Produktmanagement. Im Jahr 2013 stieg ich in den Big-Data-Bereich ein und erforscht diesen Bereich weiterhin. Er arbeitet aktiv an Projekten im ML-Bereich und hat auf zahlreichen Konferenzen, darunter Strata und GlueCon, Vorträge gehalten.

Zeitstempel:

Mehr von AWS Maschinelles Lernen