Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Aufbau eines benutzerdefinierten RAG-Systems mit Amazon Nova
Anmerkung
Amazon Nova Premier ist noch nicht über die RetrieveAndGenerateAPI verfügbar. Um die RetrieveAndGenerateAPI mit Amazon Nova Premier zu verwenden, müssen Sie beim Aufrufen der RetrieveAndGenerateAPI eine benutzerdefinierte Aufforderung angeben. Dies geschieht, indem Sie promptTemplate im generationConfiguration Argument des RetrieveAndGenerateAPI-Aufrufs das angeben, wie unten gezeigt:
'generationConfiguration': { 'promptTemplate': { 'textPromptTemplate': promptTemplate } }
Informationen zum Erstellen einer benutzerdefinierten Prompt-Vorlage finden Sie in der Anleitung zu Prompts für RAG.
Sie können Amazon-Nova-Modelle als LLM innerhalb eines benutzerdefinierten Text-RAG-Systems verwenden. Um Ihr eigenes RAG-System mit Amazon Nova zu erstellen, können Sie Ihr RAG-System entweder so konfigurieren, dass es eine Wissensdatenbank direkt abfragt, oder Sie können eine Wissensdatenbank mit einem Agenten verknüpfen (weitere Informationen finden Sie unter KI-Agenten mit Amazon Nova erstellen).
Bei der Verwendung von Amazon Nova in einem beliebigen RAG-System gibt es zwei allgemeine Ansätze.
-
Verwendung eines Retrievers als Tool (empfohlen): Sie können Ihren Retriever für die Verwendung als Tool in der Converse-API oder ToolParameter der Invokemodel-API definieren. Sie können beispielsweise die Bedrock Retrieve API oder einen anderen Retriever als „Tool“ definieren.
-
Verwenden von benutzerdefinierten Anweisungen für RAG-Systeme: Sie können Ihre eigenen benutzerdefinierten Anweisungen definieren, um ein benutzerdefiniertes RAG-System zu erstellen.
Einen Retriever als Tool verwenden
Definieren Sie ein Tool, mit dem das Modell einen Retriever aufrufen kann. Die Definition des Tools ist ein JSON-Schema, das Sie im Anforderungsparameter toolConfig (ToolConfiguration) an die Operation übergeben. Converse
{ "tools": [ { "toolSpec": { "name": "Retrieve information tool", "description": "This tool retrieves information from a custom database", "inputSchema": { "json": { "type": "object", "properties": { "query": { "type": "string", "description": "This is the description of the query parameter" } }, "required": [ "query" ] } } } } ] }
Nachdem das Tool definiert wurde, können Sie die Tool-Konfiguration als Parameter in der Converse-API übergeben.
Interpretieren der Antwortelemente
Sie erhalten eine Antwort vom Modell als eine JSON-Datei unter der „Rolle” des Assistenten mit dem Inhaltstyp „toolUse” oder als einen Kontext vom Typ „text”, falls das Modell das Retriever-Tool nicht verwendet. Wenn das Modell das Retriever-Tool verwendet, identifiziert die Antwort das Tool (tool_name). Informationen darüber, wie das angeforderte Tool verwendet werden sollte, finden Sie in der Meldung, die das Modell im Feld output (ConverseOutput) zurückgibt. Insbesondere das Feld toolUse (ToolUseBlock). Sie verwenden das Feld toolUseId, um die Tool-Anforderung bei späteren Aufrufen zu identifizieren.
{ "output": { "message": { "role": "assistant", "content": [ { "toolUse": { "toolUseId": "tooluse_1234567", "name": "Retrieve information tool", "input": { "query": "Reformatted user query" #various arguments needed by the chosen tool } } } ] } }, "stopReason": "tool_use" }
Verwenden Sie das Feld name aus dem Feld toolUse in der Modellantwort, um den Namen des Tools zu identifizieren zu können. Rufen Sie dann Ihre Implementierung des Tools auf und übergeben Sie die Eingabeparameter aus dem Feld input.
Abgerufenen Inhalt wieder in die Converse-API eingeben
Um die abgerufenen Ergebnisse erneut an Amazon Nova weiterzuleiten, können Sie jetzt eine Tool Block-Nachricht erstellen, die einen Inhaltsblock toolResult (ToolResultBlock) innerhalb der Benutzerrolle enthält. Fügen Sie in den Inhaltsblock die Antwort des Tools und die ID für die Tool-Anforderung ein, welche Sie im vorherigen Schritt erhalten haben.
{ "role": "user", "content": [ { "toolResult": { "toolUseId": "tooluse_1234567", "content": [ { "json": { "Text chunk 1": "retrieved information chunk 1", "Text chunk 2": "retrieved information chunk 2" } } ], "status": "success | error" } } ] }
Das ToolResult kann „Inhalt“ enthalten, der „Text“, „JSON“ und „Bild“ enthalten kann (abhängig vom verwendeten Modell). Sollte ein Fehler im Tool auftreten, beispielsweise eine Anforderung für nicht vorhandene oder falsche Argumente, können Sie die Fehlerinformationen an das Modell im toolResult-Feld senden. Um auf einen Fehler hinzuweisen, geben Sie error in das Feld status ein.