개인 식별 정보(PII) 수정

PII에는 이름, 주소, 전화번호, 이메일 주소, 납세자 식별 번호 및 개인을 식별하기 위해 단독으로 또는 다른 정보와 함께 사용할 수 있는 기타 데이터가 포함됩니다. 대부분의 조직에는 PII 데이터 처리와 관련된 규제 및 규정 준수 요구 사항이 있습니다. AI_REDACT는 Snowflake에서 호스팅하는 대규모 언어 모델(LLM)을 통해 PII를 식별하고 자리 표시자 값으로 대체하여 비정형 텍스트 데이터에서 PII를 수정하는 데 도움이 되는 완전 관리형 AISQL 함수입니다.

AI_REDACT는 콜 센터 코칭, 감정 분석, 보험 및 의료 분석, ML 모델 학습 등 기타 사용 사례를 위한 텍스트를 준비하는 데 도움이 될 수 있습니다.

AI_REDACT를 적용하기 전에 AI_PARSE_DOCUMENT 또는 AI_TRANSCRIBE를 사용하여 문서나 음성 데이터를 텍스트로 변환합니다.

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 및 :ref:`label-ai_redact_pii_categories`에 명시된 일부 UK 및 캐나다 PII만 수정합니다.

  • AI_REDACT는 현재 입력 및 출력할 수 있는 토큰 수가 제한되어 있습니다. 입력과 출력을 합치면 최대 4,096개의 토큰이 될 수 있습니다. 출력은 1,024개의 토큰으로 제한됩니다. 입력 텍스트가 더 긴 경우, :doc:`SPLIT_TEXT_RECURSIVE_CHARACTER</sql-reference/functions/split_text_recursive_character-snowflake-cortex>`를 사용하여 더 작은 청크로 분할하고 각 청크를 별도로 수정합니다.

    참고

    토큰은 AI 모델에서 처리하는 가장 작은 데이터 단위입니다. 영어 텍스트의 경우 업계 가이드라인에서는 토큰 1개를 약 4자 또는 0.75단어로 간주합니다.

PII 카테고리 감지

AI_REDACT는 다음의 PII 카테고리 수정을 지원합니다. 카테고리 열의 값은 선택적``categories`` 인자에서 지원되는 문자열입니다. 상위 카테고리가 지정되면 하위 카테고리가 자동으로 감지됩니다.

카테고리

참고

NAME

또한 이름 부분 FIRST_NAME, MIDDLE_NAME 및 LAST_NAME 식별

EMAIL

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는 다른 AISQL 함수와 마찬가지로 처리된 입력 및 출력 토큰 수에 따라 비용이 발생합니다. 자세한 내용은 `Snowflake 가격 가이드<https://www.snowflake.com/pricing/pricing-guide/>`_를 참조하세요.

기본 예제

다음 예에서는 입력 텍스트에서 이름과 주소를 수정합니다.

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

출력:

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']
);
Copy

출력:

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;
Copy

오류 처리 예제

일반적으로, AI_REDACT는 입력 텍스트를 처리할 수 없는 경우 오류가 발생합니다. 여러 행을 처리할 때 오류로 인해 전체 작업이 실패합니다. 이를 방지하기 위해 세션 매개 변수 AI_SQL_ERROR_HANDLING_USE_FAIL_ON_ERROR를 FALSE로 설정할 수 있으며, 이로 인해 오류가 발생하는 것이 아니라 오류 조건이 NULL을 반환합니다.

ALTER SESSION SET AI_SQL_ERROR_HANDLING_USE_FAIL_ON_ERROR=FALSE;
Copy

이 세션 매개 변수가 설정된 상태에서 TRUE를 마지막 인자로 AI_REDACT에 전달하면 반환 값은 수정된 텍스트와 오류 메시지에 대한 별도의 필드가 포함된 OBJECT가 됩니다. 둘 중 하나는 AI_REDACT 호출이 성공적으로 처리되었는 여부에 따라 NULL입니다. 이러한 필드를 사용하여 처리에 실패한 행에 대한 오류 메시지를 기록할 수 있습니다.

예를 들어, 선행 예제를 다음과 같이 오류 메시지를 기록하도록 수정하여 표시된 블록을 수정된 코드로 바꿀 수 있습니다.

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