Usar a verificação de base contextual para filtrar alucinações nas respostas - Amazon Bedrock

Usar a verificação de base contextual para filtrar alucinações nas respostas

O Amazon Bedrock Guardrails permite a verificação de base contextual para detectar e filtrar alucinações nas respostas do modelo quando uma fonte de referência e uma consulta do usuário são fornecidas. Os casos de uso compatíveis abrangem geração aumentada via recuperação (RAG), resumo, paráfrase ou agentes conversacionais que dependem de uma fonte de referência, como passes recuperados na RAG ou histórico de conversas, para que os agentes fundamentem as conversas.

A verificação de base contextual verifica a relevância de cada parte processada. Se qualquer parte for considerada relevante, toda a resposta será considerada relevante, pois contém a resposta à consulta do usuário. Para a API de streaming, isso pode resultar em um cenário em que uma resposta irrelevante seja retornada ao usuário e só ser marcada como irrelevante depois que toda a resposta for transmitida.

A verificação de base contextual avalia alucinações em dois paradigmas:

  • De base: verifica se a resposta do modelo é factualmente precisa com base na fonte e se está fundamentada na fonte. Qualquer nova informação introduzida na resposta será considerada infundada.

  • Relevância: verifica se a resposta do modelo é relevante para a consulta do usuário.

Considere um exemplo em que a fonte de referência contém “Londres é a capital do Reino Unido. Tóquio é a capital do Japão” e a consulta do usuário é “Qual é a capital do Japão?”. Uma resposta como “A capital do Japão é Londres” será considerada infundada e factualmente incorreta, enquanto uma resposta como “A capital do Reino Unido é Londres” será considerada irrelevante, mesmo que esteja correta e fundamentada na fonte.

nota

Quando uma solicitação inclui várias tags grounding_source, a barreira de proteção combina e avalia todos os valores de grounding_source fornecidos em conjunto, em vez de considerar cada grounding_source separadamente. Esse comportamento é idêntico para a tag query.

nota

Atualmente, a política de base contextual é compatível com no máximo 100.000 caracteres para a fonte de base, 1.000 caracteres para a consulta e 5.000 caracteres para a resposta.

Pontuações e limites de confiança

A verificação de base contextual gera pontuações de confiança correspondentes ao fundamento e à relevância de cada resposta do modelo processada com base na fonte e na consulta fornecida pelo usuário. É possível configurar limites para filtrar as respostas do modelo com base nas pontuações geradas. O limite de filtragem determina a pontuação de confiança mínima permitida para que a resposta do modelo seja considerada fundamentada e relevante na aplicação de IA generativa. Por exemplo, se o limite de base e o limite de relevância estiverem definidos em 0,7, todas as respostas do modelo com uma pontuação de base ou relevância inferior a 0,7 serão detectadas como alucinações e bloqueadas na aplicação. À medida que o limite de filtragem aumenta, a probabilidade de bloquear conteúdo não fundamentado e irrelevante aumenta, e a probabilidade de ver conteúdo alucinado na aplicação diminui. É possível configurar valores limite de base e de relevância entre 0 e 0,99. Um limite de 1 é inválido, pois bloqueará todo o conteúdo.

A verificação de base contextual requer três componentes para realizar a verificação: a fonte de base, a consulta e o conteúdo a ser protegido (ou a resposta do modelo). Eles são configurados de forma diferente, dependendo de se você está usando APIs Invoke, APIs Converse ou ApplyGuardrail diretamente.

  • Fonte de base: as informações contextuais necessárias para responder a qualquer consulta do usuário. Por exemplo, “Londres é a capital do Reino Unido. Tóquio é a capital do Japão”.

  • Consulta: uma pergunta que um usuário pode fazer. Por exemplo, “Qual é a capital do Japão?”.

  • Conteúdo a ser protegido: o texto que deve ser protegido em relação à fonte de base e à consulta. Para as APIs Invoke e Converse, essa é a resposta do modelo. Por exemplo, pode ser “A capital do Japão é Tóquio”.

Exemplo não fundamentado

  • Fonte de base: “Londres é a capital do Reino Unido. Tóquio é a capital do Japão”.

  • Consulta: “Qual é a capital do Japão?”

  • Conteúdo a ser protegido: “A capital do Japão é Londres”.

Neste exemplo, o conteúdo a ser protegido é relevante para a consulta, mas não é fundamentado, pois não usa a fonte de base corretamente. Isso teria uma pontuação de base baixa.

Exemplo irrelevante

  • Fonte de base: “Londres é a capital do Reino Unido. Tóquio é a capital do Japão”.

  • Consulta: “Qual é a capital do Japão?”

  • Conteúdo para proteger: “A capital do Reino Unido é Londres”.

Neste exemplo, o conteúdo a ser protegido é fundamentado, mas não é relevante. Ele usa informações da fonte de base, mas não responde à consulta. Esse exemplo teria uma pontuação de relevância baixa.

Exemplo infundado e irrelevante

  • Fonte de base: “Londres é a capital do Reino Unido. Tóquio é a capital do Japão”.

  • Consulta: “Qual é a capital do Japão?”

  • Conteúdo para proteger: “Está chovendo lá fora”.

Neste exemplo, o conteúdo a ser protegido não é fundamentado e não é relevante. Ele não usa informações da fonte de base, nem responde à consulta. Esse exemplo teria uma pontuação de base baixa e uma relevância baixa.

Mais exemplos

Considere uma aplicação bancária criada para responder a perguntas relacionadas a taxas e cobranças.

Fonte:

  • Não há taxas associadas à abertura de uma conta corrente.

  • A taxa mensal de manutenção de uma conta corrente é de USD 10.

  • Há uma cobrança de 1% para transações de transferências internacionais.

  • Não há cobranças associadas às transferências domésticas.

  • As cobranças associadas a pagamentos atrasados da fatura do cartão de crédito é de 23,99%.

Com base na fonte acima, pode haver quatro cenários, dependendo da consulta do usuário.

Fundamentado e relevante

  • P: Quais são as taxas associadas à conta corrente?

  • R: A taxa mensal de manutenção de uma conta corrente é de USD 10. Não há cobranças associadas às transferências domésticas. No entanto, há uma cobrança de 1% para transações de transferências internacionais. Não há taxas associadas à abertura de uma conta corrente.

Não fundamentado, mas relevante

  • P: Qual é a taxa de transação associada a cartão de crédito?

  • R: As cobranças de transações associadas a cartão de crédito é de 23,99%.

Fundamentado, mas irrelevante

  • P: Quais são as cobranças pelo uso de uma conta corrente bancária?

  • R: Com base nas informações fornecidas, a taxa de atraso no pagamento de um cartão de crédito é de 23,99%.

Não fundamentado, mas irrelevante

  • P: Quais são as cobranças pelo uso de uma conta corrente bancária?

  • R: As cobranças da conta de corretagem são de USD 0,5 por transação comercial.

Chamar a verificação de base contextual com APIs Invoke

Para marcar a fonte de base e a consulta na entrada, fornecemos duas tags que funcionam da mesma forma que as tags de entrada. Essas tags são amazon-bedrock-guardrails-groundingSource_xyz e amazon-bedrock-guardrails-query_xyz supondo que o sufixo da tag seja xyz. Por exemplo:

{ "text": """ <amazon-bedrock-guardrails-groundingSource_xyz>London is the capital of UK. Tokyo is the capital of Japan. </amazon-bedrock-guardrails-groundingSource_xyz> <amazon-bedrock-guardrails-query_xyz>What is the capital of Japan?</amazon-bedrock-guardrails-query_xyz> """, "amazon-bedrock-guardrailConfig": { "tagSuffix": "xyz", }, }

Observe que a resposta do modelo é necessária para realizar a verificação de base contextual e, portanto, a verificação só será executada na saída e não no prompt.

Essas tags podem ser usadas com as tags guardContent. Se nenhuma tag guardContent for usada, a barreira de proteção usará como padrão a aplicação de todas as políticas configuradas em toda a entrada, incluindo a fonte de base e a consulta. Se as tags guardContent forem usadas, a política de verificação de base contextual investigará apenas a fonte de base, a consulta e a resposta, enquanto as demais políticas investigarão o conteúdo dentro das tags guardContent.

Chamar a verificação de base contextual com APIs Converse

Para marcar a fonte de base e a consulta das APIs Converse, use o campo de qualificadores em cada bloco de conteúdo de proteção. Por exemplo:

[ { "role": "user", "content": [ { "guardContent": { "text": { "text": "London is the capital of UK. Tokyo is the capital of Japan", "qualifiers": ["grounding_source"], } } }, { "guardContent": { "text": { "text": "What is the capital of Japan?", "qualifiers": ["query"], } } }, ], } ]

Observe que a resposta do modelo é necessária para realizar a verificação de base contextual e, portanto, a verificação só será executada na saída e não no prompt.

Se nenhum dos blocos de conteúdo estiver marcado com o qualificador guard_content, a política de verificação de base contextual investigará apenas a fonte de base, a consulta e a resposta. As demais políticas seguirão o comportamento padrão de investigação: o padrão de prompt do sistema é não ser investigado, e o padrão de mensagens é serem investigadas. No entanto, se um bloco de conteúdo estiver marcado com o qualificador guard_content, a política de verificação de base contextual investigará apenas a fonte de base, a consulta e a resposta, enquanto as demais políticas investigarão o conteúdo marcado com as tags guardContent.

Chamar a verificação de base contextual com a API ApplyGuardrail

Usar a verificação de base contextual com o ApplyGuardrail é semelhante a usá-la com as APIs Converse. Para marcar a fonte de base e a consulta de ApplyGuardrail, use o campo de qualificadores em cada bloco de conteúdo. No entanto, como um modelo não é invocado com o ApplyGuardrail, forneça também um bloco de conteúdo extra com o conteúdo a ser protegido. Esse bloco de conteúdo pode ser qualificado opcionalmente com guard_content e é equivalente à resposta do modelo nas APIs Invoke* ou Converse*. Por exemplo:

[ { "text": { "text": "London is the capital of UK. Tokyo is the capital of Japan", "qualifiers": [ "grounding_source" ] } }, { "text": { "text": "What is the capital of Japan?", "qualifiers": [ "query" ] } }, { "text": { "text": "The capital of Japan is Tokyo." } } ]

Observe que a resposta do modelo é necessária para realizar a verificação de base contextual e, portanto, a verificação só será executada na saída e não no prompt.

Se nenhum dos blocos de conteúdo estiver marcado com o qualificador guard_content, a política de verificação de base contextual investigará apenas a fonte de base, a consulta e a resposta. As demais políticas seguirão o comportamento padrão de investigação: o padrão de prompt do sistema é não ser investigado, e o padrão de mensagens é serem investigadas. No entanto, se um bloco de conteúdo estiver marcado com o qualificador guard_content, a política de verificação de base contextual investigará apenas a fonte de base, a consulta e a resposta, enquanto as demais políticas investigarão o conteúdo marcado com as tags guardContent.

Para obter mais informações sobre a verificação de base contextual, consulte “Usar verificação de base contextual”.