View a markdown version of this page

Agentenbasierte Abrufe zur Abfrage einer Wissensdatenbank verwenden - Amazon Bedrock

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.

Agentenbasierte Abrufe zur Abfrage einer Wissensdatenbank verwenden

Agentic Retrieval verwendet ein Basismodell, um komplexe Abfragen intelligent in Unterabfragen zu zerlegen, iterativ relevante Informationen aus Ihren Wissensdatenbanken abzurufen und zu bewerten, ob die abgerufenen Ergebnisse ausreichen, um die ursprüngliche Anfrage zu beantworten. Dieser Ansatz verbessert die Abrufgenauigkeit bei komplexen, mehrstufigen Fragen, die in einem einzelnen Abrufdurchgang möglicherweise nicht vollständig beantwortet werden.

Zum Beispiel bei der Abfrage „Welches Magazin wurde zuerst veröffentlicht, Arthur's Magazine oder First for Women?“ , agentic retrieval unterteilt dies in separate Unterabfragen wie „Wann wurde Arthur's Magazine gegründet?“ und „Wann wurde First for Women gegründet?“ , ruft die Ergebnisse für jedes Objekt ab und bewertet, ob die kombinierten Ergebnisse ausreichend sind.

So funktioniert der Agentenabruf

Wenn Sie eine Anfrage an die AgenticRetrieveStream API senden, läuft der folgende Prozess ab:

  1. Laden des Sitzungsverlaufs — Wenn Sie eine angeben, memoryConfiguration die eine enthältsessionBinding, stellt Amazon Bedrock den vorherigen Verlauf dieser Sitzung aus dem AgentCore Kurzzeitspeicher von Memory wieder her, bevor der Agent mit der Arbeit beginnt. Der wiederhergestellte Verlauf wird zum Gesprächskontext für die Anfrage.

  2. Planung — Das Foundation-Modell analysiert Ihre Abfrage und erstellt einen Plan, um sie in eine oder mehrere Unterabfragen zu zerlegen. Jede Unterabfrage zielt auf eine bestimmte Quelle ab, die Sie konfiguriert haben, entweder auf einen Knowledge Base-Retriever oder AgentCore auf das Memory-Langzeitgedächtnis. Nachdem die Abrufergebnisse gesammelt wurden, bewertet das Foundation-Modell, ob sie ausreichen, um die ursprüngliche Abfrage zu beantworten. Wenn nicht, plant und führt es zusätzliche Abruf-Iterationen bis zum konfigurierten Maximum aus.

  3. Abruf — Die Unterabfragen werden für die konfigurierten Quellen ausgeführt. Die Ergebnisse werden bei jedem Abruf gesammelt.

  4. Vollständige Dokumenterweiterung — Wenn das Basismodell feststellt, dass der gesamte Inhalt eines Dokuments benötigt wird (z. B. für eine Zusammenfassung, zur Überprüfung der Vollständigkeit oder für den Zugriff auf bestimmte Abschnitte), ruft es die GetDocumentContent API auf, um den vollständigen Dokumentinhalt abzurufen.

  5. Antwortgenerierung — Wenn diese Option auf true (Standardeinstellung) gesetzt generateResponse ist, synthetisiert das Foundation-Modell eine Antwort in natürlicher Sprache aus den abgerufenen Ergebnissen. Amazon Bedrock streamt die Antwort anhand von Ereignissen an Sie zurück. responseEvent Wenn gesetzt sessionBinding ist und persistenceMode istDEFAULT, speichert Amazon Bedrock die Frage und die generierte Antwort auf die Sitzung.

  6. Ergebnisereignis — Die deduplizierten Abrufergebnisse aller Iterationen, die vollständig synthetisierte Antwort in natürlicher Sprache und Zitate werden an Sie zurückgegeben. Trace-Ereignisse werden aus Gründen der Beobachtbarkeit während des gesamten Prozesses gestreamt.

Voraussetzungen

Bevor Sie Agentic Retrieval verwenden können, müssen Sie über Folgendes verfügen:

  • Eine vollständig verwaltete Amazon Bedrock-Wissensdatenbank. Agentic Retrieval unterstützt derzeit nur verwaltete Wissensdatenbanken.

  • Zugriff auf ein Basismodell in Amazon Bedrock, das für die Planung und Bewertung von Abfragen verwendet werden kann.

  • Die erforderlichen IAM-Berechtigungen. Weitere Informationen finden Sie unter Erforderliche Berechtigungen für den agentischen Abruf.

Fragen Sie eine Wissensdatenbank mit agentischem Abruf ab

Um Agentic Retrieval zu verwenden, senden Sie eine Anfrage. AgenticRetrieveStream Die Antwort ist ein Stream, der Abrufergebnisse und Ablaufverfolgungsereignisse enthält.

In der folgenden Tabelle werden die wichtigsten Anforderungsfelder beschrieben:

Pflichtfelder
Feld Description
messages Die Eingabeabfrage und der Konversationsverlauf. Jede Nachricht enthält ein content Feld mit einem text Wert und ein role Feld (useroderassistant).
Retriever Die Wissensdatenbank ruft ab, um Daten abzurufen. Sie können bis zu 5 Abrufer angeben, von denen jeder anhand seiner ID auf eine verwaltete Wissensdatenbank verweist. Jeder Abrufer kann optional Metadatenfilter und eine maximale Anzahl von Ergebnissen enthalten.
agentisch RetrieveConfiguration Die Agenten-Abrufkonfiguration, einschließlich des Basismodells, das für die Planung und Bewertung von Abfragen verwendet werden soll, und optional ein Modell zur Neubewertung und die maximale Anzahl der Agenteniterationen.
Optionale Felder
Feld Description
Konfiguration der Richtlinie Konfiguriert eine Amazon Bedrock-Leitplanke, die beim automatischen Abruf angewendet wird. Geben guardrailId guardrailVersion Sie ein und an.
UserContext Stellt einen Benutzerkontext für die Filterung der Zugriffskontrolle bereit.
Konfiguration des Speichers Konfiguriert eine AgentCore Speicherressource, die beim Abruf verwendet werden soll. Geben Sie eine anmemoryId, und geben Sie dann, sessionBinding um eine Sitzung wiederherzustellen und fortzusetzen, retrievalConfigs damit der Agent Daten aus dem Langzeitspeicher abrufen kann, oder beides. Weitere Informationen finden Sie unter AgentCore Speicher mit agentischem Abruf verwenden.
Antwort generieren Ein boolesches Feld, das, wenn es auf true (Standardeinstellung) gesetzt ist, das Foundation-Modell anweist, aus den abgerufenen Ergebnissen eine Antwort in natürlicher Sprache zu generieren. Die Antwort wird in Form von Textblöcken zurückgestreamt und in das Ergebnisereignis aufgenommen.

Die vollständige Anfrage- und Antwortsyntax finden Sie AgenticRetrieveStream in der API-Referenz.

Antwort auf den Agentenabruf

Die AgenticRetrieveStream Antwort ist ein Stream, der die folgenden Ereignistypen enthält:

  • Result-Ereignis (AgenticRetrieveResultEvent) — Das letzte Ereignis, das ausgelöst wird, wenn die Verarbeitung abgeschlossen ist. Enthält die Abrufergebnisse und, wenn die Antwortgenerierung aktiviert ist, die generierte Antwort. Das Ergebnisereignis beinhaltet:

    • Ergebnisse abrufen (results) — Die Quellblöcke, die in allen Iterationen abgerufen wurden. Jedes Ergebnis enthält Inhalt, Quellabrufbezeichner und optionale Metadaten. Wenn derselbe Block durch mehrere Unterabfragen abgerufen wird, erscheint er in den Endergebnissen nur einmal.

    • Generierte Antwort (generatedResponse) — Wenn auf true (Standardeinstellung) gesetzt generateResponse ist, beinhaltet das Ergebnisereignis ein generatedResponse Objekt, das Folgendes enthält:

      • answer— Der vollständig synthetisierte Antworttext in natürlicher Sprache.

      • citations— Eine optionale Liste, die Bereiche der Antwort den unterstützenden Abrufergebnissen zuordnet. Jedes Zitat enthält:

        • startIndex— Der Zeichenversatz, an dem die zitierte Passage innerhalb der answer Zeichenfolge beginnt.

        • endIndex— Der Zeichenversatz, an dem die zitierte Passage endet (exklusiv — der zitierte Text läuft von startIndex bis, aber nicht einschließlichendIndex).

        • references— Eine Liste, in der jeder Verweis ein resultIndex Feld hat, das bei demselben Ergebnisereignis in das results Array indexiert und angibt, welches Abrufergebnis den angegebenen Bereich unterstützt.

  • Antwortereignisse (AgenticRetrieveResponseEvent) — Wenn auf true (Standardeinstellung) gesetzt generateResponse ist, werden responseEvent Ereignisse während der Antwortgenerierung gestreamt. Jedes Ereignis enthält ein text Feld mit einem inkrementellen Teil der synthetisierten Antwort in natürlicher Sprache.

  • Ereignisse verfolgen (AgenticRetrieveTraceEvent) — Ereignisse, die während des Agentenabrufs gestreamt werden und einen Überblick über jeden Schritt bieten. Dies sind die Typen von Trace-Ereignissen:

    • Planung — Zeigt an, dass das Foundation-Modell die Abfrage analysiert und Unterabfragen erstellt. Beinhaltet die geplanten Aktionen und Zielquellen. Jede Aktion ist entweder eine retrieve Aktion, die auf eine Wissensdatenbank abzielt, oder eine memoryRetrieve Aktion, die auf das Langzeitgedächtnis abzielt. Dazu gehören die zusammengestellte Abfrage und diememoryId.

    • Abruf — Zeigt an, dass ein Abruf für eine konfigurierte Quelle ausgeführt wird. Beinhaltet die Eingabe und Ausgabe des Abrufs sowie alle Warnungen oder Fehler. Der retrievalMetadata Eintrag gibt den Quelltyp an, entweder BedrockKnowledgeBase oderBedrockAgentCoreMemory.

    • Spekulativer Abruf — Ein erster Abruf, der vor dem ersten Planungsschritt ausgeführt wird, um die Latenz zu reduzieren. Bei einer einzelnen Wissensdatenbank werden die Ergebnisse anhand der unformatierten Benutzerabfrage abgerufen. Bei mehreren Wissensdatenbanken wird eine Sondensuche durchgeführt, um Abfragen an die entsprechenden Abrufer weiterzuleiten. Bei der Konfiguration retrievalConfigs kann dieser Schritt auch aus dem Langzeitspeicher abgerufen werden.

    • Vollständige Dokumenterweiterung — Zeigt an, dass der Agent den gesamten Inhalt eines bestimmten Dokuments abruft. Enthält die Dokument-ID, den Quellabruf und den Status (InProgress, Erfolgreich oder Fehlgeschlagen).

    • Laden des Sitzungsverlaufs — Zeigt an, dass Amazon Bedrock den Verlauf einer früheren Sitzung aus dem AgentCore Kurzzeitspeicher von Memory wiederherstellt, bevor der Agent mit der Arbeit beginnt.

AgentCore Speicher mit agentischem Abruf verwenden

Sie können Agentic Retrieval Zugriff auf eine Amazon Bedrock Memory-Ressource gewähren. AgentCore Mit Speicherzugriff kann ein Abruf eine frühere Sitzung fortsetzen und auf dem aufbauen, was der Agent in früheren Sitzungen gelernt hat. Füllen Sie das memoryConfiguration Feld mit memoryId einer Speicherressource in Ihrem Konto aus, die sich im ACTIVE Status befindet.

Speicher ist optional. AmemoryConfiguration, das nur a festlegt, memoryId ist nicht gültig. Wenn Sie angebenmemoryConfiguration, müssen Sie die Speicherressource auf mindestens eine der beiden folgenden Arten verwenden:

  • Short-term memory (sessionBinding) — Stellt den Verlauf einer früheren Sitzung wieder her, sodass die Anforderung diese Sitzung fortsetzt, anstatt neu zu beginnen. Identifizieren Sie die Sitzung mit einem actorId und einemsessionId. Der actorId Umfang ist die Geschichte, sodass die Geschichte eines Schauspielers nie für einen anderen zurückgegeben wird. Wenn gesetzt sessionBinding ist, messages darf nur die aktuelle Abfrage mit einem role von user enthalten sein. Sie können eine Sitzung nicht wiederherstellen und messages in derselben Anfrage den Verlauf früherer Konversationen angeben. Bei der Wiederherstellung werden Konversationsereignisse mit der Rolle USER oder ASSISTANT geladen.

  • Long-term memory (retrievalConfigs) — Macht die Speicheraufzeichnungen, die AgentCore Memory aus früheren Sitzungen extrahiert hat, für den Agenten verfügbar. Identifizieren Sie die Datensätze mit einem namespace Präfix oder mit einem, namespacePath um sie in jedem Namespace unter einem übergeordneten Objekt abzurufen. Sie können die Ergebnisse mit einem strategyId und mit weiter eingrenzenmetadataFilters. Der Agent entscheidet, ob er seine eigene Abfrage abrufen möchte, und erstellt sie.

Geben Sie die Namespaces genau so an, wie sie in der Speicherstrategie konfiguriert sind, wobei die Platzhalter bereits aufgelöst sind. Wenn die Strategie beispielsweise den Namespace definiert, geben Sie den aufgelösten Wert /strategy/{memoryStrategyId}/actor/{actorId} und nicht die Vorlage an. Weitere Informationen zu Namespaces, Strategien und Speicherdatensätzen finden Sie unter Speicher-Terminologie im Amazon Bedrock Developer Guide. AgentCore

Anmerkung

Sie sind dafür verantwortlich, die richtigenmemoryId, sessionBinding und -Werte anzugeben. retrievalConfigs Agentic Retrieval überprüft nicht, ob die Sitzung oder die von Ihnen angegebenen Namespaces der Konversation entsprechen, die Sie fortsetzen möchten. Wenn Sie falsche Werte angeben, erhalten Sie unerwartete Ergebnisse.

Wenn gesetzt sessionBinding ist, verwenden Sie, persistenceMode um zu steuern, ob der aktuelle Austausch in die Sitzung zurückgeschrieben wird:

  • DEFAULT(Standardeinstellung) — Behält die Frage und die generierte Antwort auf die Sitzung als einzelnes Ereignis bei. Dieser Wert muss 1 generateResponse sein. true

  • NONE— Die Sitzung bleibt unverändert. Verwenden Sie diesen Wert, um den Sitzungsverlauf zu lesen, ohne ihn zu ergänzen.

Das folgende Beispiel stellt eine frühere Sitzung wieder her, gewährt dem Agenten Zugriff auf das Langzeitgedächtnis dieses Akteurs und speichert den Austausch zurück in die Sitzung:

{ "messages": [ { "content": { "text": "What did we decide about the migration timeline?" }, "role": "user" } ], "retrievers": [ { "configuration": { "knowledgeBase": { "knowledgeBaseId": "KB12345678" } } } ], "agenticRetrieveConfiguration": { "foundationModelType": "MANAGED", "rerankingModelType": "MANAGED" }, "memoryConfiguration": { "memoryId": "projectAssistantMemory-1a2b3c4d5e", "sessionBinding": { "actorId": "user-123", "sessionId": "session-456" }, "retrievalConfigs": [ { "namespace": "/strategy/summarization-1a2b3c4d5e/actor/user-123" } ], "persistenceMode": "DEFAULT" } }

Der Antwortstream meldet Speicheraktivität. Die Wiederherstellung wird als Load-Trace-Ereignis für den Sitzungsverlauf angezeigt. Die Datensätze, die das Langzeitgedächtnis zurückgibt, werden im Trace-Ereignis „Abruf“ mit dem Quelltyp angezeigt, unabhängig davonBedrockAgentCoreMemory, welcher Schritt sie abgerufen hat.

Wie der Abruf selbst aussieht, hängt davon ab, wann er stattfindet. Wenn sich das Foundation-Modell dafür entscheidet, den Speicher zu durchsuchen (typischerweise bei einer fortgesetzten Sitzung), wird der Abruf als memoryRetrieve Aktion für das Planning-Trace-Ereignis angezeigt. In einer neuen Sitzung kann der Agent stattdessen während des spekulativen Abrufs vor dem ersten Planungsschritt das Langzeitgedächtnis abrufen. In diesem Fall gibt er keine Aktion aus. memoryRetrieve Weitere Informationen finden Sie unter Antwort auf den Agentenabruf.

Erforderliche Berechtigungen für den agentischen Abruf

Um die AgenticRetrieveStream API verwenden zu können, muss die aufrufende IAM-Identität über die folgenden Berechtigungen verfügen:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "bedrock:AgenticRetrieveStream", "Resource": "*" }, { "Effect": "Allow", "Action": [ "bedrock:Retrieve", "bedrock:GetDocumentContent" ], "Resource": "arn:aws:bedrock:region:account-id:knowledge-base/*" }, { "Effect": "Allow", "Action": "bedrock:InvokeModelWithResponseStream", "Resource": "*" } ] }

Wenn Sie Guardrails mit agentischem Abruf verwenden, fügen Sie die folgenden Berechtigungen hinzu:

{ "Effect": "Allow", "Action": [ "bedrock:GetGuardrail", "bedrock:ApplyGuardrail" ], "Resource": "*" }

Wenn Sie eine AgentCore Speicherressource mit agentischem Abruf verwenden, fügen Sie die folgenden Berechtigungen hinzu:

{ "Effect": "Allow", "Action": [ "bedrock-agentcore:GetMemory", "bedrock-agentcore:ListEvents", "bedrock-agentcore:RetrieveMemoryRecords", "bedrock-agentcore:CreateEvent" ], "Resource": "arn:aws:bedrock-agentcore:region:account-id:memory/memory-id" }

bedrock-agentcore:ListEventsist nur erforderlich, wenn Sie Folgendes festlegen. sessionBinding bedrock-agentcore:RetrieveMemoryRecordsist nur erforderlich, wenn Sie festlegenretrievalConfigs. bedrock-agentcore:CreateEventist nur erforderlich, wenn persistenceMode es istDEFAULT.

Wenn die Speicherressource mit einem vom Kunden verwalteten Schlüssel verschlüsselt ist, fügen Sie diesem Schlüssel die folgende Berechtigung hinzu:

{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region:account-id:key/key-id" }

Überlegungen

Beachten Sie Folgendes, wenn Sie Agentic Retrieval verwenden:

  • Agentic Retrieval unterstützt nur verwaltete Amazon Bedrock-Wissensdatenbanken.

  • Informationen zu den Quoten für Abrufer pro Anfrage, zu Ergebnissen pro Abrufanruf und zur maximalen Anzahl von Agenteniterationen finden Sie unter. Servicekontingente für verwaltete Wissensdatenbanken

  • Eine Reduzierung der maximalen Anzahl von Iterationen kann dazu führen, dass der Agent früher stoppt, was möglicherweise die Genauigkeit komplexer Abfragen verringert.

  • Bei der Konfiguration von Leitplanken wird nur die BLOCK Aktion unterstützt. Die MASK Aktion wird beim agentischen Abruf nicht unterstützt.

  • Der Kunde stellt das Basismodell, das Einbettungsmodell und das Modell zur Neurangierung bereit, die beim Agentenabruf verwendet werden, und ist dessen Eigentümer, sofern vorhanden. Ihre IAM-Anmeldeinformationen werden verwendet, um diese Modelle aufzurufen.

  • Wenn Sie eine AgentCore Speicherressource verwenden, muss sich die Ressource im selben Konto wie die Wissensdatenbank befinden und sich im ACTIVE Status befinden.

  • Wenn Sie diese sessionBinding Option angeben, messages darf nur die aktuelle Abfrage mit einem role von enthalten seinuser. Sie können eine Sitzung nicht wiederherstellen und messages in derselben Anfrage den Verlauf früherer Konversationen angeben.

  • Beim Wiederherstellen einer Sitzung werden Konversationsereignisse mit der Rolle USER oder ASSISTANT geladen. AgentCore Der Speicher akzeptiert auch die OTHER Rollen TOOL und, die bei einer Wiederherstellung nicht geladen werden. Weitere Informationen finden Sie Conversational in der Amazon Bedrock AgentCore API-Referenz.

  • retrievalConfigsakzeptiert derzeit höchstens einen Eintrag, und jeder Eintrag akzeptiert maximal 5 metadataFilters Ausdrücke.

  • Ein persistenceMode Wert von DEFAULT generateResponse muss seintrue, da die Sitzung die generierte Antwort beibehält.