隐去个人身份信息 (PII)¶
PII includes names, addresses, phone numbers, email addresses, tax identification numbers, and other data that can be used (alone or with other information) to identify an individual. Most organizations have regulatory and compliance requirements around handling PII data. AI_REDACT is a fully-managed Cortex AI Function that helps you help redact PII from unstructured text data, using a large language model (LLM) hosted by Snowflake to identify PII and replace with placeholder values.
AI_REDACT 可以帮助您为呼叫中心指导、情绪分析、保险和医疗分析以及 ML 模型训练等用例准备文本。
小技巧
使用 AI_PARSE_DOCUMENT 或 AI_TRANSCRIBE,在应用 AI_REDACT 之前将文档或语音数据转换为文本。
AI_REDACT¶
AI_REDACT 函数将输入文本中的个人身份信息 (PII) 替换为占位符值。
重要
AI_REDACT 使用 AI 模型对敏感信息进行尽力隐去处理。请务必查看输出,以确保符合组织的数据隐私策略。如果 AI_REDACT 无法隐去数据中的任何 PII,请告知 Snowflake。
区域可用性¶
限制¶
使用 AI 模型进行隐去处理,可能无法找到所有个人身份信息。请务必查看输出,以确保符合组织的数据隐私策略。如果 AI_REDACT 无法隐去某些 PII,请联系 Snowflake 支持部门。
COUNT_TOKENS 和 AI_COUNT_TOKENS 函数尚不支持 AI_REDACT。
此时,AI_REDACT 最适合格式正确的英文文本。性能可能因其他语言或存在许多拼写、标点符号或语法错误的文本而异。
AI_REDACT 目前仅隐去 US PII 和一些 UK 及加拿大的 PII,其中注明 检测到 PII 类别。
目前,AI_REDACT 可以输入和输出的词元数量受到限制。输入和输出总共最多可以有 4,096 个词元。输出限制为 1,024 个词元。如果输入文本较长,请将其拆分为更小的块,并分别对每个块进行隐去处理,可借助 SPLIT_TEXT_RECURSIVE_CHARACTER 完成。
备注
词元是 AI 模型处理的最小数据单位。对于英文文本,行业准则认为一个词元约为 4 个字符,即 0.75 个单词。
检测到 PII 类别¶
AI_REDACT 支持对以下类别的 PII 进行隐去处理。“类别”列中的值是可选 categories 实参中支持的字符串。指定父类别时,系统会自动检测子类别。
类别
备注
NAME
还标识名称部分 FIRST_NAME、MIDDLE_NAME 和 LAST_NAME
PHONE_NUMBER
DATE_OF_BIRTH
GENDER
识别值 MALE、FEMALE、NONBINARY
AGE
ADDRESS
还标识地址部分:
STREET_ADDRESS(US、UK、CA)
POSTAL_CODE(US、UK、CA)
CITY(US、UK、CA)
ADMINISTRATIVE_AREA_1(US 州、CA 省)
ADMINISTRATIVE_AREA_2(US 县、行政区或乡镇)
NATIONAL_ID
标识 US 社会安全号码
PASSPORT
标识 US、UK、CA 护照号码
TAX_IDENTIFIER
识别个人纳税人编号 (ITNs)
PAYMENT_CARD_DATA
还可以识别支付卡部分 PAYMENT_CARD_NUMBER、PAYMENT_CARD_EXPIRATION_DATE、PAYMENT_CARD_CVV
DRIVERS_LICENSE
标识 US、UK、CA 驾驶执照号码
IP_ADDRESS
备注
当 AI_REDACT 标识子类别(例如名字)时,输出包含主类别占位符,例如 [NAME]。
成本注意事项¶
AI_REDACT incurs costs based on the number of input and output tokens processed, as with other Cortex AI Functions. See the Snowflake Pricing Guide for details.
示例¶
基本示例¶
以下示例从输入文本中隐去姓名和地址。
SELECT AI_REDACT(
input => 'My name is John Smith and I live at twenty third street, San Francisco.'
);
输出:
My name is [NAME] and I live at [ADDRESS]
以下示例仅从输入文本中隐去姓名和电子邮件地址。请注意,文本中仅包含名字,但由于名字属于姓名的子类别,因此仍会被识别并以 [NAME] 形式隐去。输入文本不包含电子邮件地址,因此输出中不会显示电子邮件占位符。
SELECT AI_REDACT(
input => 'My name is John and I live at twenty third street, San Francisco.',
categories => ['NAME', 'EMAIL']
);
输出:
My name is [FIRST_NAME] and I live at twenty third street, San Francisco.
端到端示例¶
以下示例对一个表中的行进行处理,并将隐去敏感信息后的结果插入到另一个表中。您可以使用类似的方法,将隐去敏感信息的数据存储到现有表的某一列中。
隐去敏感信息后,文本将被传递到 AI_SENTIMENT 以提取整体情绪信息。
-- 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;
错误处理示例¶
通常情况下,如果 AI_REDACT 无法处理输入文本,则会引发错误。处理多行时,错误会导致整个操作失败。为避免这种情况,可以将会话参数 AI_SQL_ERROR_HANDLING_USE_FAIL_ON_ERROR 设置为 FALSE,这会导致错误条件而返回 NULL,而不是引发错误。
ALTER SESSION SET AI_SQL_ERROR_HANDLING_USE_FAIL_ON_ERROR=FALSE;
设置此会话参数后,通过将 TRUE 作为最后一个实参传递给 AI_REDACT,将是一个 OBJECT,其中包含隐去敏感信息后的文本以及任何错误消息的独立字段。一个或另一个是 NULL,取决于 AI_REDACT 调用是否已成功处理。您可以使用这些字段来记录无法处理的任何行的错误消息。
例如,可以修改前面的示例来记录错误消息,如下所示,用修改后的代码替换指示的块:
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);
法律声明¶
输入和输出的 Data Classification 如下表所示。
输入 Data Classification |
输出 Data Classification |
名称 |
|---|---|---|
Usage Data |
Customer Data |
正式发布的功能是涵盖的 AI 功能。预览版功能属于预览版 AI 功能。[1] |
有关更多信息,请参阅 Snowflake AI 和 ML。