Masquer les informations personnelles identifiables (PII)

Les PII comprennent les noms, les adresses, les numéros de téléphone, les adresses e-mail, les numéros d’identification fiscale et les autres données qui peuvent être utilisés (seuls ou avec d’autres informations) pour identifier un individu. La plupart des organisations ont des exigences réglementaires et de conformité en matière de traitement des données de type PII. AI_REDACT est une fonction AISQL entièrement gérée qui vous aide à masquer les PII des données textuelles non structurées, en utilisant un grand modèle de langage (LLM) hébergé par Snowflake pour identifier les PII et les remplacer par des valeurs d’espace réservé.

AI_REDACT peut vous aider à préparer du texte pour la formation des centres d’appels, l’analyse des sentiments, l’analyse médicale et des assurances et l’entraînement de modèles de ML, entre autres cas d’utilisation.

Astuce

Utilisez AI_PARSE_DOCUMENT ou AI_TRANSCRIBE pour convertir un document ou des données de langage en texte avant d’appliquer AI_REDACT.

AI_REDACT

La fonction AI_REDACT remplace les informations personnelles identifiables (PII) dans le texte d’entrée par des valeurs d’espace réservé.

Important

AI_REDACT procède au masquage de manière optimale en utilisant des modèles d’AI. Examinez toujours la sortie pour vous assurer de la conformité avec les politiques de confidentialité des données de votre organisation. Veuillez informer Snowflake si AI_REDACT ne parvient pas à masquer des PII dans vos données.

Disponibilité régionale

Voir Disponibilité régionale.

Limitations

  • Le masquage est effectué à l’aide de modèles d’AI et peut ne pas trouver toutes les informations personnelles identifiables. Examinez toujours la sortie pour vous assurer de la conformité avec les politiques de confidentialité des données de votre organisation. Veuillez contacter le support Snowflake si AI_REDACT ne parvient pas à masquer certaines PII.

  • Les fonctions COUNT_TOKENS et AI_COUNT_TOKENS ne prennent pas encore en charge AI_REDACT.

  • Pour l’instant, AI_REDACT fonctionne mieux avec des textes en anglais bien formés. Les performances peuvent varier avec d’autres langues ou du texte présentant de nombreuses fautes d’orthographe, de ponctuation ou de grammaire.

  • Actuellement, AI_REDACT masque uniquement les PII US et certaines PII UK et canadiennes, comme indiqué dans Catégories de PII détectées.

  • AI_REDACT est actuellement limité dans le nombre de jetons qu’il peut entrer et sortir. L’entrée et la sortie peuvent contenir jusqu’à 4 096 jetons. La sortie est limitée à 1 024 jetons. Si le texte d’entrée est plus long, divisez-le en morceaux plus petits et masquez chaque morceau séparément, par exemple en utilisant SPLIT_TEXT_RECURSIVE_CHARACTER.

    Note

    Un jeton est la plus petite unité de données traitée par le modèle d’AI. Pour les textes en anglais, les directives de l’industrie considèrent qu’un jeton équivaut à environ quatre caractères ou 0,75 mot.

Catégories de PII détectées

AI_REDACT prend en charge le masquage des catégories de PII suivantes. Les valeurs dans la colonne Catégorie sont les chaînes prises en charge dans l’argument categories facultatif. Les sous-catégories sont automatiquement détectées lorsque la catégorie parente est spécifiée.

Catégorie

Remarques

NAME

Identifie également les parties de noms FIRST_NAME, MIDDLE_NAME et LAST_NAME.

EMAIL

PHONE_NUMBER

DATE_OF_BIRTH

GENDER

Reconnaît les valeurs MALE, FEMALE et NONBINARY.

AGE

ADDRESS

Identifie également les parties d’adresses :

  • STREET_ADDRESS (US, UK, CA)

  • POSTAL_CODE (US, UK, CA)

  • CITY (US, UK, CA)

  • ADMINISTRATIVE_AREA_1 (état US, province CA)

  • ADMINISTRATIVE_AREA_2 (comté, municipalité ou canton US)

NATIONAL_ID

Identifie les numéros de sécurité sociale US.

PASSPORT

Identifie les numéros de passeport US, UK et CA.

TAX_IDENTIFIER

Identifie les numéros d’identification fiscale (ITNs).

PAYMENT_CARD_DATA

Identifie également les parties de cartes de paiement PAYMENT_CARD_NUMBER, PAYMENT_CARD_EXPIRATION_DATE et PAYMENT_CARD_CVV.

DRIVERS_LICENSE

Identifie les numéros de permis de conduire US, UK et CA.

IP_ADDRESS

Note

Lorsque AI_REDACT identifie une sous-catégorie, comme un prénom, la sortie contient l’espace réservé de la catégorie principale, comme [NAME].

Considérations relatives aux clients

AI_REDACT engendre des coûts en fonction du nombre de jetons d’entrée et de sortie traités, comme avec les autres fonctions AISQL. Consultez le Guide des tarifs Snowflake pour plus de détails.

Exemples

Exemples de base

L’exemple suivant masque un nom et une adresse dans le texte d’entrée.

SELECT AI_REDACT(
    input => 'My name is John Smith and I live at twenty third street, San Francisco.'
);
Copy

Sortie :

My name is [NAME] and I live at [ADDRESS]

L’exemple suivant masque uniquement les noms et les adresses e-mail dans le texte d’entrée. Notez que le texte ne contient qu’un prénom, mais que celui-ci (étant une sous-catégorie de nom) est toujours reconnu et masqué en tant que [NAME]. Le texte d’entrée ne contient pas d’adresse e-mail, de sorte qu’aucun espace réservé d’e-mail n’apparaît dans la sortie.

SELECT AI_REDACT(
    input => 'My name is John and I live at twenty third street, San Francisco.',
    categories => ['NAME', 'EMAIL']
);
Copy

Sortie :

My name is [FIRST_NAME] and I live at twenty third street, San Francisco.

Exemple de bout en bout

L’exemple suivant traite les lignes d’une table et insère la sortie masquée dans une autre table. Vous pouvez utiliser une approche similaire pour stocker les données masquées dans une colonne à l’intérieur d’une table existante.

Une fois masqué, le texte est transmis à AI_SENTIMENT pour extraire des informations globales sur les sentiments.

-- Create a table with unredacted text
CREATE OR REPLACE TABLE raw_table AS
  SELECT 'My previous manager, Washington, used to live in Kirkland. His first name was Mike.' AS my_column
  UNION ALL
  SELECT 'My name is William and I live in San Francisco. You can reach me at (415).450.0973';

-- view unredacted data
SELECT * FROM raw_table;

-- Create a redaction table
CREATE OR REPLACE TABLE redaction_table (
  value VARCHAR
);

-- Redact PII from raw_table and insert into redaction_table
INSERT INTO redaction_table
SELECT AI_REDACT(my_column) AS value FROM raw_table;

-- view redacted results
SELECT * FROM redaction_table;

-- Run AI_SENTIMENT on redacted text
SELECT
    value AS redacted_text,
    AI_SENTIMENT(value) AS summary_sentiment
FROM redaction_table;
Copy

Exemple de traitement des erreurs

En règle générale, AI_REDACT signale une erreur s’il ne peut pas traiter le texte d’entrée. Lors du traitement de plusieurs lignes, une erreur entraîne l’échec de l’ensemble de l’opération. Pour éviter cela, vous pouvez définir le paramètre de session AI_SQL_ERROR_HANDLING_USE_FAIL_ON_ERROR sur FALSE, ce qui fait que les conditions d’erreur renvoient NULL plutôt que de générer une erreur.

ALTER SESSION SET AI_SQL_ERROR_HANDLING_USE_FAIL_ON_ERROR=FALSE;
Copy

Avec ce paramètre de session défini, en transmettant TRUE comme dernier argument de AI_REDACT, la valeur renvoyée est un OBJECT qui contient des champs distincts pour le texte masqué et tout message d’erreur. L’un ou l’autre est NULL selon que l’appel AI_REDACT s’est déroulé correctement. Vous pouvez utiliser ces champs pour enregistrer le message d’erreur pour toute ligne dont le traitement a échoué.

Par exemple, l’exemple précédent peut être modifié pour enregistrer les messages d’erreur comme suit, en remplaçant les blocs indiqués par le code modifié :

ALTER SESSION SET AI_SQL_ERROR_HANDLING_USE_FAIL_ON_ERROR=FALSE;

-- Create a redaction table with columns for value and error message
CREATE OR REPLACE TABLE redaction_table (
  value VARCHAR,
  error VARCHAR
);

-- Redact PII from raw_table and insert into redaction_table
-- Both the redacted text and any error message are stored
INSERT INTO redaction_table
SELECT
  result:value::STRING AS value,
  result:error::STRING AS error
  FROM (SELECT AI_REDACT(my_column, TRUE) AS result FROM raw_table);
Copy