As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Usar a recuperação com agente para consultar uma base de conhecimentos
A recuperação agente usa um modelo básico para decompor de forma inteligente consultas complexas em subconsultas, recuperar iterativamente informações relevantes de suas bases de conhecimento e avaliar se os resultados recuperados são suficientes para responder à consulta original. Essa abordagem melhora a precisão da recuperação de questões complexas de várias etapas que um único passe de recuperação pode não resolver totalmente.
Por exemplo, dada a pergunta “Qual revista foi criada primeiro, Arthur's Magazine ou First for Women?” , a recuperação agente divide isso em subconsultas separadas, como “Quando foi fundada a Arthur's Magazine?” e “Quando foi fundada a First for Women?” , recupera os resultados de cada um e avalia se os resultados combinados são suficientes.
Como funciona a recuperação de agentes
Quando você envia uma solicitação para a AgenticRetrieveStream API, ocorre o seguinte processo:
-
Carga do histórico da sessão — Quando você fornece um
memoryConfigurationque inclui umsessionBinding, o Amazon Bedrock restaura o histórico anterior dessa sessão a partir da AgentCore memória de curto prazo antes que o agente comece a trabalhar. O histórico restaurado se torna o contexto da conversa para a solicitação. -
Planejamento — O modelo básico analisa sua consulta e cria um plano para decompô-la em uma ou mais subconsultas. Cada subconsulta tem como alvo uma fonte específica que você configurou, seja um recuperador da base de conhecimento ou AgentCore memória de longo prazo. Depois que os resultados da recuperação são coletados, o modelo básico avalia se eles são suficientes para responder à consulta original. Caso contrário, ele planeja e executa iterações de recuperação adicionais, até o máximo configurado.
-
Recuperação — As subconsultas são executadas nas fontes configuradas. Os resultados são coletados de cada recuperação.
-
Expansão total do documento — Quando o modelo básico determina que o conteúdo completo de um documento é necessário (por exemplo, para resumir, verificar a integridade ou acessar seções específicas), ele chama a GetDocumentContent API para recuperar o conteúdo completo do documento.
-
Geração de resposta — Quando
generateResponsedefinido comotrue(o padrão), o modelo básico sintetiza uma resposta em linguagem natural a partir dos resultados recuperados. O Amazon Bedrock envia a resposta para você por meioresponseEventde eventos. QuandosessionBindingestá definido epersistenceModeestáDEFAULT, o Amazon Bedrock mantém a pergunta e a resposta gerada na sessão. -
Evento de resultado — Os resultados da recuperação desduplicada de todas as iterações, a resposta completa em linguagem natural sintetizada e as citações são devolvidas a você. Os eventos de rastreamento são transmitidos ao longo do processo para fins de observação.
Pré-requisitos
Antes de usar a recuperação agente, você deve ter o seguinte:
-
Uma base de conhecimento totalmente gerenciada da Amazon Bedrock. Atualmente, a recuperação agente oferece suporte somente a bases de conhecimento gerenciadas.
-
Acesso a um modelo básico no Amazon Bedrock para uso no planejamento e avaliação de consultas.
-
As permissões de IAM necessárias. Para obter mais informações, consulte Permissões necessárias para recuperação de agentes.
Consulte uma base de conhecimento com recuperação de agentes
Para usar a recuperação agente, envie uma solicitação. AgenticRetrieveStream A resposta é um fluxo que inclui resultados de recuperação e eventos de rastreamento.
A tabela a seguir descreve os principais campos de solicitação:
| Campo | Description |
|---|---|
| mensagens | A consulta de entrada e o histórico da conversa. Cada mensagem contém um content campo com um text valor e um role campo (userouassistant). |
| recuperadores | A base de conhecimento recupera os dados. Você pode especificar até 5 recuperadores, cada um apontando para uma base de conhecimento gerenciada por meio de seu ID. Opcionalmente, cada recuperador pode incluir filtros de metadados e um número máximo de resultados. |
| agente RetrieveConfiguration | A configuração de recuperação do agente, incluindo o modelo básico a ser usado para planejamento e avaliação de consultas e, opcionalmente, um modelo de reclassificação e a contagem máxima de iterações do agente. |
| Campo | Description |
|---|---|
| Configuração de política | Configura uma grade de proteção Amazon Bedrock para ser aplicada durante a recuperação do agente. Especifique um guardrailId guardrailVersion e. |
| Contexto do usuário | Fornece um contexto de usuário para filtragem de controle de acesso. |
| Configuração de memória | Configura um recurso AgentCore de memória para usar com a recuperação. Especifique a ememoryId, em seguida, sessionBinding para restaurar e continuar uma sessão, retrievalConfigs para permitir que o agente a recupere da memória de longo prazo, ou ambas. Para obter mais informações, consulte Use AgentCore memória com recuperação agente. |
| Gerar resposta | Um campo booleano que, quando definido como true (o padrão), instrui o modelo básico a gerar uma resposta em linguagem natural a partir dos resultados recuperados. A resposta é transmitida de volta como pedaços de texto e incluída no evento resultante. |
Para ver a sintaxe completa de solicitação e resposta, consulte AgenticRetrieveStream na referência da API.
Resposta de recuperação de agentes
A AgenticRetrieveStream resposta é um fluxo que contém os seguintes tipos de eventos:
-
Evento de resultado (
AgenticRetrieveResultEvent) — O evento final entregue quando o processamento é concluído. Contém os resultados da recuperação e, quando a geração de respostas está ativada, a resposta gerada. O evento resultante inclui:-
Resultados da recuperação (
results) — Os fragmentos de origem recuperados em todas as iterações. Cada resultado inclui conteúdo, identificador do recuperador de origem e metadados opcionais. Quando o mesmo bloco é recuperado por várias subconsultas, ele aparece apenas uma vez nos resultados finais. -
Resposta gerada (
generatedResponse) — QuandogenerateResponsedefinido comotrue(o padrão), o evento resultante inclui umgeneratedResponseobjeto contendo:-
answer— O texto completo da resposta em linguagem natural sintetizado. -
citations— Uma lista opcional que mapeia extensões da resposta para apoiar os resultados da recuperação. Cada citação contém:-
startIndex— O deslocamento de caracteres em que a passagem citada começa dentro daanswerstring. -
endIndex— O deslocamento de caracteres onde a passagem citada termina (exclusivo — o texto citado vai destartIndexaté, mas não incluiendIndex). -
references— Uma lista em que cada referência tem umresultIndexcampo indexado naresultsmatriz no mesmo evento de resultado, indicando qual resultado de recuperação suporta o intervalo citado.
-
-
-
-
Eventos de resposta (
AgenticRetrieveResponseEvent) — QuandogenerateResponsedefinido comotrue(o padrão), osresponseEventeventos são transmitidos durante a geração da resposta. Cada evento contém umtextcampo com uma parte incremental da resposta sintetizada em idioma natural. -
Trace events (
AgenticRetrieveTraceEvent) — Eventos transmitidos durante o processo de recuperação do agente que fornecem visibilidade de cada etapa. Estes são os tipos de eventos de rastreamento:-
Planejamento — indica que o modelo básico está analisando a consulta e criando subconsultas. Inclui as ações planejadas e as fontes alvo. Cada ação é uma
retrieveação direcionada a uma base de conhecimento ou umamemoryRetrieveação direcionada à memória de longo prazo, que inclui a consulta composta e a.memoryId -
Recuperação — Indica que uma recuperação está sendo executada em uma fonte configurada. Inclui a entrada de recuperação, a saída e quaisquer avisos ou falhas. A
retrievalMetadataentrada relata o tipo de fonte,BedrockKnowledgeBaseouBedrockAgentCoreMemory. -
Recuperação especulativa — Uma recuperação inicial que é executada antes da primeira etapa de planejamento para reduzir a latência. Para uma única base de conhecimento, isso recupera resultados usando a consulta bruta do usuário. Para várias bases de conhecimento, isso realiza uma pesquisa de sonda para ajudar a encaminhar as consultas para os recuperadores apropriados. Quando você configura
retrievalConfigs, essa etapa também pode ser recuperada da memória de longo prazo. -
Expansão completa do documento — Indica que o agente está recuperando todo o conteúdo de um documento específico. Inclui a ID do documento, o recuperador de origem e o status (InProgresssucesso ou falha).
-
Carregamento do histórico da sessão — Indica que o Amazon Bedrock está restaurando o histórico de uma sessão anterior a partir da AgentCore memória de curto prazo, antes que o agente comece a trabalhar.
-
Use AgentCore memória com recuperação agente
Você pode conceder acesso de recuperação agente a um recurso da Amazon Bedrock AgentCore Memory. Com o acesso à memória, uma recuperação pode continuar uma sessão anterior e aproveitar o que o agente aprendeu nas sessões anteriores. Forneça ao memoryConfiguration campo o memoryId de um recurso de memória em sua conta que esteja no ACTIVE estado.
A memória é opcional. Um memoryConfiguration que define somente a não memoryId é válido. Ao fornecermemoryConfiguration, você deve usar o recurso de memória em pelo menos uma das duas maneiras a seguir:
-
Short-term memory (
sessionBinding) — Restaura o histórico de uma sessão anterior para que a solicitação continue aquela sessão em vez de começar do zero. Identifique a sessão com umactorIdesessionIda. OactorIdescopo da história, para que a história de um ator nunca seja devolvida para outro. QuandosessionBindingdefinido,messagesdeve conter somente a consulta atual, com umroledeuser. Você não pode restaurar uma sessão e fornecer o histórico de conversas anterioresmessagesna mesma solicitação. A restauração carrega eventos de conversação com uma função deUSERouASSISTANT. -
Long-term memory (
retrievalConfigs) — Disponibiliza para o agente os registros de AgentCore memória que a Memória extraiu de sessões anteriores. Identifique os registros com umnamespaceprefixo ou com umnamespacePathpara recuperar em cada namespace abaixo de um pai. Você pode restringir ainda mais os resultados com astrategyIde commetadataFilters. O agente decide se deseja recuperar e compõe sua própria consulta.
Forneça namespaces exatamente como estão configurados na estratégia de memória, com espaços reservados já resolvidos. Por exemplo, se a estratégia definir o namespace/strategy/{memoryStrategyId}/actor/{actorId}, forneça o valor resolvido em vez do modelo. Para obter mais informações sobre namespaces, estratégias e registros de memória, consulte Terminologia de memória no Amazon Bedrock AgentCore Developer Guide.
nota
Você é responsável por fornecer os retrievalConfigs valores corretos memoryIdsessionBinding, e. A recuperação agente não verifica se a sessão ou os namespaces fornecidos correspondem à conversa que você pretende continuar. Se você fornecer valores incorretos, receberá resultados inesperados.
Quando sessionBinding definido, use persistenceMode para controlar se a troca atual é gravada de volta na sessão:
-
DEFAULT(o padrão) — Persiste a pergunta e a resposta gerada para a sessão como um único evento. Esse valorgenerateResponseprecisa sertrue. -
NONE—Deixa a sessão inalterada. Use esse valor para ler o histórico da sessão sem adicioná-lo.
O exemplo a seguir restaura uma sessão anterior, dá ao agente acesso à memória de longo prazo desse ator e persiste a troca de volta para a sessão:
{ "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" } }
O fluxo de resposta relata a atividade da memória. A restauração aparece como um evento de rastreamento de carregamento do histórico da sessão. Os registros que a memória de longo prazo retorna aparecem no evento de rastreamento de recuperação com um tipo de fonte deBedrockAgentCoreMemory, qualquer que seja a etapa recuperada.
A aparência da recuperação em si depende de quando ela acontece. Quando o modelo básico opta por pesquisar a memória (típico em uma sessão contínua), a recuperação aparece como uma memoryRetrieve ação no evento de rastreamento do Planning. Em uma nova sessão, o agente pode, em vez disso, recuperar a memória de longo prazo durante a recuperação especulativa, antes da primeira etapa de planejamento; nesse caso, ele não emite nenhuma ação. memoryRetrieve Para obter mais informações, consulte Resposta de recuperação de agentes.
Permissões necessárias para recuperação de agentes
Para usar a AgenticRetrieveStream API, a identidade do IAM de chamada deve ter as seguintes permissões:
{ "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": "*" } ] }
Se você usar grades de proteção com recuperação de agentes, adicione as seguintes permissões:
{ "Effect": "Allow", "Action": [ "bedrock:GetGuardrail", "bedrock:ApplyGuardrail" ], "Resource": "*" }
Se você usar um recurso de AgentCore memória com recuperação de agente, adicione as seguintes permissões:
{ "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:ListEventsé necessário somente quando você definesessionBinding. bedrock-agentcore:RetrieveMemoryRecordsé necessário somente quando você defineretrievalConfigs. bedrock-agentcore:CreateEventé necessário somente quando persistenceMode éDEFAULT.
Se o recurso de memória estiver criptografado com uma chave gerenciada pelo cliente, adicione a seguinte permissão nessa chave:
{ "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "arn:aws:kms:region:account-id:key/key-id" }
Considerações
Lembre-se do seguinte ao usar a recuperação agente:
-
A recuperação agente só oferece suporte às bases de conhecimento gerenciadas do Amazon Bedrock.
-
Para obter cotas de recuperadores por solicitação, resultados por chamada de recuperação e máximo de iterações de agentes, consulte. Cotas de serviço para bases de conhecimento gerenciadas
-
Reduzir a contagem máxima de iterações pode fazer com que o agente pare mais cedo, potencialmente reduzindo a precisão de consultas complexas.
-
Ao configurar guardrails, somente a
BLOCKação é suportada. AMASKação não é suportada pela recuperação de agentes. -
O cliente fornece e é proprietário do modelo básico, do modelo de incorporação e do modelo de reclassificação usados durante a recuperação do agente, se fornecidos. Suas credenciais do IAM são usadas para invocar esses modelos.
-
Quando você usa um recurso de AgentCore memória, o recurso deve estar na mesma conta da base de conhecimento e deve estar no
ACTIVEestado. -
Quando você define
sessionBinding,messagesdeve carregar somente a consulta atual, com umroledeuser. Você não pode restaurar uma sessão e fornecer o histórico de conversas anterioresmessagesna mesma solicitação. -
A restauração de uma sessão carrega eventos de conversação com a função de
USERou.ASSISTANTAgentCore A memória também aceita asOTHERfunçõesTOOLe, que uma restauração não carrega. Para obter mais informações, consulteConversationala Referência da AgentCore API Amazon Bedrock. -
retrievalConfigsatualmente aceita no máximo uma entrada, e cada entrada aceita no máximo 5metadataFiltersexpressões. -
A
persistenceModedeDEFAULTgenerateResponseprecisa sertrue, porque a sessão persiste com a resposta gerada.