Utilisez la vérification contextuelle des fondements pour filtrer les hallucinations dans les réponses - Amazon Bedrock

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Utilisez la vérification contextuelle des fondements pour filtrer les hallucinations dans les réponses

Amazon Bedrock Guardrails prend en charge la vérification contextuelle de base afin de détecter et de filtrer les hallucinations dans les réponses des modèles lorsqu'une source de référence et une requête utilisateur sont fournies. Les cas d'utilisation pris en charge concernent la génération augmentée par extraction (RAG), la synthèse, la paraphrase ou les agents conversationnels qui s'appuient sur une source de référence telle que les passes récupérées RAG ou l'historique des conversations pour que les agents puissent fonder les conversations.

La vérification contextuelle de la mise à la base vérifie la pertinence de chaque segment traité. Si un élément est jugé pertinent, l'ensemble de la réponse est considéré comme pertinent car il contient la réponse à la requête de l'utilisateur. Dans le cas du streamingAPI, cela peut aboutir à un scénario dans lequel une réponse non pertinente est renvoyée à l'utilisateur et n'est marquée comme non pertinente qu'une fois la réponse complète diffusée en continu.

La vérification contextuelle des fondements permet d'évaluer les hallucinations selon deux paradigmes :

  • Mise à la terre — Cela permet de vérifier si la réponse du modèle est factuellement précise en fonction de la source et si elle est fondée sur la source. Toute nouvelle information introduite dans la réponse sera considérée comme non fondée.

  • Pertinence : permet de vérifier si la réponse du modèle correspond à la requête de l'utilisateur.

Prenons un exemple où la source de référence contient « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon » et la question de l'utilisateur est « Quelle est la capitale du Japon ? ». Une réponse telle que « Londres est la capitale du Japon » sera considérée comme non fondée et factuellement incorrecte, tandis qu'une réponse telle que « Londres est la capitale du Royaume-Uni » sera considérée comme non pertinente, même si elle est correcte et fondée sur la source.

Note

Lorsqu'une demande inclut plusieurs grounding_source balises, le garde-corps combine et évalue toutes les grounding_source valeurs fournies ensemble, plutôt que de les considérer séparément. grounding_source Ce comportement est identique pour le query tag.

Note

La politique de mise à la base contextuelle prend actuellement en charge un maximum de 100 000 caractères pour la source de mise à la base, 1 000 caractères pour la requête et 5 000 caractères pour la réponse.

Scores et seuils de confiance

La vérification contextuelle de la base génère des scores de confiance correspondant à la base et à la pertinence pour chaque réponse du modèle traitée en fonction de la source et de la requête utilisateur fournies. Vous pouvez configurer des seuils pour filtrer les réponses du modèle en fonction des scores générés. Le seuil de filtrage détermine le score de confiance minimum autorisé pour que la réponse du modèle soit considérée comme fondée et pertinente dans votre application d'IA générative. Par exemple, si votre seuil de base et votre seuil de pertinence sont chacun fixés à 0,7, toutes les réponses du modèle dont le score de base ou de pertinence est inférieur à 0,7 seront détectées comme des hallucinations et bloquées dans votre application. À mesure que le seuil de filtrage augmente, la probabilité de bloquer le contenu non fondé et non pertinent augmente, et la probabilité de voir du contenu halluciné dans votre application diminue. Vous pouvez configurer des valeurs seuils de base et de pertinence comprises entre 0 et 0,99. Un seuil de 1 n'est pas valide car cela bloquera tout le contenu.

La vérification contextuelle de la mise à la terre nécessite 3 composants pour effectuer la vérification : la source de mise à la terre, la requête et le contenu à protéger (ou la réponse du modèle). Ils sont configurés différemment selon que vous utilisez InvokeAPIs, Converse APIs ou ApplyGuardrail directement.

  • Source de base : informations contextuelles nécessaires pour répondre à toutes les requêtes des utilisateurs. Par exemple, « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon ».

  • Requête : question qu'un utilisateur peut poser. Par exemple, « Quelle est la capitale du Japon ? ».

  • Contenu à protéger : texte qui doit être protégé par rapport à la source et à la requête de base. Pour Invoke et ConverseAPIs, il s'agit du modèle de réponse. Par exemple, cela peut être « La capitale du Japon est Tokyo ».

Exemple non fondé

  • Source de base - « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon. »

  • Question - « Quelle est la capitale du Japon ? »

  • Contente de garder : « La capitale du Japon est Londres. »

Dans cet exemple, le contenu à protéger est pertinent pour la requête, mais il n'est pas fondé car il n'utilise pas correctement la source de base. Cela aurait un faible score de base.

Exemple non pertinent

  • Source de base - « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon. »

  • Question - « Quelle est la capitale du Japon ? »

  • Contente de garder : « La capitale du Royaume-Uni est Londres ».

Dans cet exemple, le contenu à protéger est fondé mais n'est pas pertinent. Il utilise les informations de la source de base mais ne répond pas à la requête. Cela aurait un faible score de pertinence.

Exemple non fondé et non pertinent

  • Source de base - « Londres est la capitale du Royaume-Uni. Tokyo est la capitale du Japon. »

  • Question - « Quelle est la capitale du Japon ? »

  • Contente de garder : « Il pleut dehors. »

Dans cet exemple, le contenu à protéger n'est pas fondé et n'est pas pertinent. Il n'utilise pas les informations de la source de base et ne répond pas à la requête. Cela aurait un faible score de base et de pertinence.

Plus d'exemples

Envisagez une application bancaire conçue pour répondre aux questions relatives aux frais et aux charges.

La source :

  • Il n'y a aucun frais associé à l'ouverture d'un compte courant.

  • Les frais mensuels pour le maintien d'un compte courant sont de 10$.

  • Des frais de transaction de 1 % sont facturés pour les virements internationaux.

  • Aucuns frais ne sont associés aux transferts nationaux.

  • Les frais associés aux retards de paiement d'une facture de carte de crédit s'élèvent à 23,99 %.

Sur la base de la source ci-dessus, il peut y avoir quatre scénarios en fonction de la requête de l'utilisateur.

Fondé et pertinent

  • Q : Quels sont les frais associés au compte courant ?

  • R : Les frais mensuels pour le maintien d'un compte courant sont de 10$. Aucuns frais ne sont associés aux transferts nationaux. Toutefois, des frais de transaction de 1 % s'appliquent aux virements internationaux. Il n'y a aucun frais associé à l'ouverture d'un compte courant.

Non fondé mais pertinent

  • Q : Quels sont les frais de transaction associés à la carte de crédit ?

  • R : Les frais de transaction associés à la carte de crédit sont de 23,99 %.

Fondé mais hors de propos

  • Q : Quels sont les frais d'utilisation d'un compte bancaire courant ?

  • R : Sur la base des informations fournies, les frais de retard pour paiement par carte de crédit sont de 23,99 %.

Non fondé et hors de propos

  • Q : Quels sont les frais d'utilisation d'un compte bancaire courant ?

  • R : Les frais du compte de courtage sont de 0,5$ par transaction de négociation.

Appel d'une vérification contextuelle de mise à la base avec Invoke APIs

Pour marquer la source et la requête de base dans l'entrée, nous fournissons 2 balises qui fonctionnent de la même manière que les balises d'entrée. Ces balises sont amazon-bedrock-guardrails-groundingSource_xyz et amazon-bedrock-guardrails-query_xyz en supposant que le suffixe de balise est xyz. Par exemple :

{ "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", }, }

Notez que la réponse du modèle est requise pour effectuer la vérification contextuelle de mise à la terre. La vérification ne sera donc effectuée qu'en sortie et non à l'invite.

Ces balises peuvent être utilisées en même temps que les guardContent balises. Si aucune guardContent balise n'est utilisée, le garde-corps appliquera par défaut toutes les politiques configurées sur l'ensemble de l'entrée, y compris la source et la requête de base. Si les guardContent balises sont utilisées, la politique de vérification contextuelle de la base étudiera uniquement la source, la requête et la réponse, tandis que les politiques restantes étudieront le contenu des balises. guardContent

Appel à une vérification contextuelle de la base avec Converse APIs

Pour marquer la source de base et la requête de ConverseAPIs, utilisez le champ des qualificatifs dans chaque bloc de contenu de garde. Par exemple :

[ { "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"], } } }, ], } ]

Notez que la réponse du modèle est requise pour effectuer la vérification contextuelle de mise à la terre. La vérification ne sera donc effectuée qu'en sortie et non à l'invite.

Si aucun des blocs de contenu n'est marqué avec le qualificatif guard_content, la politique de vérification contextuelle étudiera uniquement la source, la requête et la réponse de base. Les autres politiques suivront le comportement d'investigation par défaut : le système indique par défaut de ne pas faire l'objet d'une enquête et les messages indiquent par défaut qu'il fait l'objet d'une enquête. Si, toutefois, un bloc de contenu est marqué avec le qualificatif guard_content, la politique de vérification contextuelle de base étudiera uniquement la source, la requête et la réponse, tandis que les politiques restantes étudieront le contenu marqué par les balises. guardContent

Appeler une vérification contextuelle de mise à la terre avec ApplyGuardrail API

L'utilisation de la vérification contextuelle de la mise à la terre avec ApplyGuardrail est similaire à son utilisation avec la Converse. APIs Pour marquer la source de base et la rechercher ApplyGuardrail, utilisez le champ des qualificatifs dans chaque bloc de contenu. Cependant, étant donné qu'aucun modèle n'est invoqué avec ApplyGuardrail, vous devez également fournir un bloc de contenu supplémentaire contenant le contenu à protéger. Ce bloc de contenu peut être éventuellement qualifié par guard_content et est équivalent à la réponse du modèle dans Invoke* ou Converse*. APIs Par exemple :

[ { "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." } } ]

Notez que la réponse du modèle est requise pour effectuer la vérification contextuelle de mise à la terre. La vérification ne sera donc effectuée qu'en sortie et non à l'invite.

Si aucun des blocs de contenu n'est marqué avec le qualificatif guard_content, la politique de vérification contextuelle étudiera uniquement la source, la requête et la réponse de base. Les autres politiques suivront le comportement d'investigation par défaut : le système indique par défaut de ne pas faire l'objet d'une enquête et les messages indiquent par défaut qu'il fait l'objet d'une enquête. Si, toutefois, un bloc de contenu est marqué avec le qualificatif guard_content, la politique de vérification contextuelle de base étudiera uniquement la source, la requête et la réponse, tandis que les politiques restantes étudieront le contenu marqué par les balises. guardContent

Pour plus d'informations sur la vérification contextuelle de mise à la terre, voir Utiliser la vérification de mise à la terre contextuelle.