Ocultar informações de identificação pessoal (PII)¶
PII incluem nomes, endereços, números de telefone, endereços de e-mail, números de identificação fiscal e outros dados que podem ser utilizados (sozinhos ou com outras informações) para identificar um indivíduo. A maioria das organizações tem requisitos regulatórios e de conformidade relacionados ao tratamento de dados de PII. AI_REDACT é uma função AISQL totalmente gerenciada que ajuda você a ocultar PIIs a partir de dados de texto não estruturados, usando um modelo de linguagem grande (LLM) hospedado pelo Snowflake para identificar PII e substituí-las por valores de espaço reservado.
AI_REDACT pode ajudar você a preparar texto para treinamento de call center, análise de sentimentos, análises médicas e de seguros e treinamento de modelos de ML, entre outros casos de uso.
Dica
Use AI_PARSE_DOCUMENT ou AI_TRANSCRIBE para converter dados de documentos ou fala em texto antes de aplicar AI_REDACT.
AI_REDACT¶
A função AI_REDACT substitui informações de identificação pessoal (PII) no texto de entrada por valores de espaço reservado.
Importante
AI_REDACT realiza a ocultação da melhor maneira possível usando modelos de AI. Sempre revise a saída para garantir a conformidade com as políticas de privacidade de dados da sua organização. Informe a Snowflake se AI_REDACT não conseguir ocultar alguma PII em seus dados.
Disponibilidade regional¶
Consulte Disponibilidade regional.
Limitações¶
A ocultação é realizada usando modelos de AI e pode não encontrar todas as informações de identificação pessoal. Sempre revise a saída para garantir a conformidade com as políticas de privacidade de dados da sua organização. Entre em contato com o suporte Snowflake se AI_REDACT não conseguir ocultar certas PII.
As funções COUNT_TOKENS e AI_COUNT_TOKENS ainda não são compatíveis com AI_REDACT.
No momento, AI_REDACT funciona melhor com texto em inglês bem formulado. O desempenho pode variar com outros idiomas ou textos com muitos erros de ortografia, pontuação ou gramática.
AI_REDACT atualmente oculta apenas PII dos US e algumas PII do UK e canadenses, conforme indicado em Categorias de PIIs detectadas.
AI_REDACT está atualmente limitado no número de tokens que pode receber e produzir. A entrada e a saída juntas podem ter até 4.096 tokens. A saída é limitada a 1.024 tokens. Se o texto de entrada for mais longo, divida-o em partes menores e oculte cada parte separadamente, talvez usando SPLIT_TEXT_RECURSIVE_CHARACTER.
Nota
Um token é a menor unidade de dados processada pelo modelo de AI. Para texto em inglês, as diretrizes do setor consideram um token como aproximadamente quatro caracteres ou 0,75 palavra.
Categorias de PIIs detectadas¶
AI_REDACT é compatível com ocultação das seguintes categorias de PII. Os valores na coluna Categoria são as strings compatíveis no argumento opcional categories. As subcategorias são detectadas automaticamente quando a categoria principal é especificada.
Categoria
Notas
NAME
Também identifica partes do nome FIRST_NAME, MIDDLE_NAME e LAST_NAME
PHONE_NUMBER
DATE_OF_BIRTH
GENDER
Reconhece os valores MALE, FEMALE e NONBINARY
AGE
ADDRESS
Também identifica partes do endereço:
STREET_ADDRESS (US, UK, CA)
POSTAL_CODE (US, UK, CA)
CITY (US, UK, CA)
ADMINISTRATIVE_AREA_1 (estado dos US, província do CA)
ADMINISTRATIVE_AREA_2 (condado, distrito ou município dos US)
NATIONAL_ID
Identifica números de segurança social US
PASSPORT
Identifica números de passaporte dos US, do UK e do CA
TAX_IDENTIFIER
Identifica números de identificação fiscal individual (ITNs)
PAYMENT_CARD_DATA
Também identifica partes de cartões de pagamento PAYMENT_CARD_NUMBER, PAYMENT_CARD_EXPIRATION_DATE e PAYMENT_CARD_CVV
DRIVERS_LICENSE
Identifica números de carteira de motorista dos US, do UK e do CA
IP_ADDRESS
Nota
Quando AI_REDACT identifica uma subcategoria, como um nome próprio, a saída contém o marcador de posição da categoria principal, como [NAME].
Considerações sobre custo¶
AI_REDACT incorre em custos com base no número de tokens de entrada e saída processados, como acontece com outras funções AISQL. Consulte o Guia de preços do Snowflake para obter detalhes.
Exemplos¶
Exemplos básicos¶
O exemplo a seguir oculta um nome e um endereço do texto de entrada.
SELECT AI_REDACT(
input => 'My name is John Smith and I live at twenty third street, San Francisco.'
);
Saída:
My name is [NAME] and I live at [ADDRESS]
O exemplo a seguir oculta apenas nomes e endereços de e-mail do texto de entrada. Observe que o texto contém apenas um primeiro nome, mas este (sendo uma subcategoria de nome) ainda é reconhecido e ocultado como [NAME]. O texto de entrada não contém um endereço de e-mail, portanto, nenhum espaço reservado de e-mail aparece na saída.
SELECT AI_REDACT(
input => 'My name is John and I live at twenty third street, San Francisco.',
categories => ['NAME', 'EMAIL']
);
Saída:
My name is [FIRST_NAME] and I live at twenty third street, San Francisco.
Exemplo de ponta a ponta¶
O exemplo a seguir processa linhas de uma tabela e insere a saída ocultada em outra tabela. Você pode usar uma abordagem semelhante para armazenar os dados ocultados em uma coluna em uma tabela existente.
Após a ocultação, o texto é passado para AI_SENTIMENT para extrair informações gerais de sentimento.
-- 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;
Exemplo de tratamento de erros¶
Normalmente, AI_REDACT gera um erro se não pode processar o texto de entrada. Ao processar várias linhas, um erro faz com que toda a operação falhe. Para evitar isso, você pode definir o parâmetro de sessão AI_SQL_ERROR_HANDLING_USE_FAIL_ON_ERROR para FALSE, o que faz com que as condições de erro retornem NULL em vez de gerar um erro.
ALTER SESSION SET AI_SQL_ERROR_HANDLING_USE_FAIL_ON_ERROR=FALSE;
Com esse parâmetro de sessão definido, ao passar TRUE como último argumento para AI_REDACT, o valor de retorno é um OBJECT que contém campos separados para o texto ocultado e qualquer mensagem de erro. Um ou outro é NULL dependendo se a chamada de AI_REDACT foi processada com sucesso. Você pode usar esses campos para registrar a mensagem de erro para qualquer linha que não tenha sido processada.
Por exemplo, o exemplo anterior pode ser modificado para registrar as mensagens de erro da seguinte forma, substituindo os blocos indicados pelo código modificado:
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);
Avisos legais¶
A classificação dos dados de entradas e saídas é definido na tabela a seguir.
Classificação de dados de entrada |
Classificação de dados de saída |
Designação |
|---|---|---|
Usage Data |
Customer Data |
As funções disponíveis ao público em geral são recursos de AI cobertos. As funções em versão preliminar são recursos de AI em versão preliminar. [1] |
Para obter informações adicionais, consulte AI e ML Snowflake.