Amazon Nova für multimodales RAG verwenden
Sie können multimodales RAG verwenden, um Dokumente wie PDFs, Bilder oder Videos zu durchsuchen (verfügbar für Amazon Nova Lite und Amazon Nova Pro). Mit den multimodalen Verständnisfunktionen von Amazon Nova können Sie RAG-Systeme mit gemischten Daten erstellen, die sowohl Text als auch Bilder enthalten. Sie können dies entweder über Amazon Bedrock-Wissensdatenbanken oder durch den Aufbau eines benutzerdefinierten multimodalen RAG-Systems tun.
So erstellen Sie ein multimodales RAG-System:
-
Erstellen Sie eine Datenbank mit multimodalen Inhalten.
-
Führen Sie Inferenz in multimodalen RAG-Systemen für Amazon Nova aus.
-
Ermöglichen Sie Benutzern, den Inhalt abzufragen
-
Senden Sie den Inhalt zurück an Amazon Nova
-
Ermöglichen Sie Amazon Nova, auf die ursprüngliche Benutzeranfrage zu antworten.
-
Ein benutzerdefiniertes multimodales RAG-System mit Amazon Nova erstellen
Um mit Amazon Nova eine Datenbank mit multimodalen Inhalten zu erstellen, können Sie einen von zwei gängigen Ansätzen verwenden. Die Genauigkeit beider Ansätze hängt von Ihrer spezifischen Anwendung ab.
Erstellen einer Vektordatenbank mithilfe von multimodalen Einbettungen.
Sie können eine Vektordatenbank mit multimodalen Daten erstellen, indem Sie ein Einbettungsmodell wie multimodale Titan-Einbettungen verwenden. Dazu müssen Sie Dokumente zunächst effizient in Text, Tabellen und Bilder zerlegen. Anschließend übergeben Sie den analysierten Inhalt an das multimodale Einbettungsmodell Ihrer Wahl, um Ihre Vektordatenbank zu erstellen. Wir empfehlen, die Einbettungen in ihrer ursprünglichen Modalität mit den Teilen des Dokuments zu verbinden, damit der Retriever die Suchergebnisse in der ursprünglichen Inhaltsmodalität zurückgeben kann.
Erstellen einer Vektordatenbank mithilfe von Texteinbettungen.
Um ein Text-Einbettungsmodell zu verwenden, können Sie Amazon Nova verwenden, um Bilder in Text zu konvertieren. Anschließend erstellen Sie eine Vektordatenbank, indem Sie ein Text-Einbettungsmodell wie das Modell Titan Text Embeddings V2 verwenden.
Bei Dokumenten wie Folien und Infografiken können Sie jeden Teil des Dokuments in eine Textbeschreibung umwandeln und anschließend mit den Textbeschreibungen eine Vektordatenbank erstellen. Um eine Textbeschreibung zu erstellen, verwenden Sie Amazon Nova über die Converse-API mit einem Prompt wie beispielsweise:
You are a story teller and narrator who will read an image and tell all the details of the image as a story. Your job is to scan the entire image very carefully. Please start to scan the image from top to the bottom and retrieve all important parts of the image. In creating the story, you must first pay attention to all the details and extract relevant resources. Here are some important sources: 1. Please identify all the textual information within the image. Pay attention to text headers, sections/subsections anecdotes, and paragraphs. Especially, extract those pure-textual data not directly associated with graphs. 2. please make sure to describe every single graph you find in the image 3. please include all the statistics in the graph and describe each chart in the image in detail 4. please do NOT add any content that are not shown in the image in the description. It is critical to keep the description truthful 5. please do NOT use your own domain knowledge to infer and conclude concepts in the image. You are only a narrator and you must present every single data-point available in the image. Please give me a detailed narrative of the image. While you pay attention to details, you MUST give the explanation in a clear English that is understandable by a general user.
Amazon Nova antwortet dann mit einer Textbeschreibung des bereitgestellten Bildes. Die Textbeschreibungen können dann an das Text-Einbettungsmodell gesendet werden, um die Vektordatenbank zu erstellen.
Alternativ kann es bei textintensiven Dokumenten wie PDF-Dateien besser sein, die Bilder anhand des Textes zu analysieren (das hängt von Ihren spezifischen Daten und Ihrer Anwendung ab). Dazu müssen Sie Dokumente zunächst effizient in Text, Tabellen und Bilder zerlegen. Die resultierenden Bilder können dann mithilfe eines Prompts wie dem oben gezeigten in Text konvertiert werden. Anschließend können die resultierenden Textbeschreibungen der Bilder und aller anderen Texte an ein Text-Einbettungsmodell gesendet werden, um eine Vektordatenbank zu erstellen. Es ist zu empfehlen, die Einbettungen in ihrer ursprünglichen Modalität mit den Teilen des Dokuments zu verbinden, damit der Retriever die Suchergebnisse in der ursprünglichen Inhaltsmodalität zurückgeben kann.
Inferenz in RAG-Systemen für Amazon Nova ausführen
Nachdem Sie Ihre Vektordatenbank eingerichtet haben, können Sie nun Benutzerabfragen zur Suche in der Datenbank aktivieren, die abgerufenen Inhalte an Amazon Nova zurücksenden und dann mithilfe der abgerufenen Inhalte und der Benutzerabfrage Amazon-Nova-Modelle in die Lage versetzen, auf die ursprüngliche Benutzerabfrage zu reagieren.
Um die Vektordatenbank mit Text- oder multimodalen Benutzerabfragen zu durchsuchen, befolgen Sie die gleichen Designentscheidungen, die Sie auch bei der Durchführung von RAG zum Textverständnis und zur Textgenerierung treffen würden. Sie können entweder Amazon Nova mit Amazon Bedrock-Wissensdatenbanken verwenden oder ein benutzerdefiniertes RAG-System mit Amazon Nova und Converse-API erstellen.
Wenn der Retriever Inhalte an das Modell zurückgibt, empfehlen wir, den Inhalt in seiner ursprünglichen Modalität zu verwenden. Wenn also die ursprüngliche Eingabe ein Bild ist, senden Sie das Bild an Amazon Nova zurück, auch wenn Sie die Bilder zum Erstellen von Texteinbettungen in Text umgewandelt haben. Um Bilder effektiver zurückzugeben, empfehlen wir Ihnen, diese Vorlage zu verwenden, um die abgerufenen Inhalte für die Verwendung in der Converse-API zu konfigurieren:
doc_template = """Image {idx} : """ messages = [] for item in search_results: messages += [ { "text": doc_template.format(idx=item.idx) }, { "image": { "format": "jpeg", # image source is not actually used in offline inference # images input are provided to inferencer separately "source": { "bytes": BASE64_ENCODED_IMAGE } } } ] messages.append({"text": question}) system_prompt = """ In this session, you are provided with a list of images and a user's question, your job is to answer the user's question using only information from the images. When give your answer, make sure to first quote the images (by mentioning image title or image ID) from which you can identify relevant information, then followed by your reasoning steps and answer. If the images do not contain information that can answer the question, please state that you could not find an exact answer to the question. Remember to add citations to your response using markers like %[1]%, %[2]% and %[3]% for the corresponding images."""
Mit den abgerufenen Inhalten und der Benutzerabfrage in der Converse-API können Sie die Converse-API aufrufen, woraufhin Amazon Nova entweder eine Antwort generiert oder eine zusätzliche Suche anfordert. Es kommt dabei auf Ihre Anweisungen an oder darauf, ob der abgerufene Inhalt die Anfrage des Benutzers effektiv beantwortet hat.