개인 식별 정보(PII) 수정¶
PII에는 이름, 주소, 전화번호, 이메일 주소, 납세자 식별 번호 및 개인을 식별하기 위해 단독으로 또는 다른 정보와 함께 사용할 수 있는 기타 데이터가 포함됩니다. 대부분의 조직에는 PII 데이터 처리와 관련된 규정 및 규정 준수 요구 사항이 있습니다. AI_REDACT는 완전 관리형 Cortex AI 함수입니다. 이를 통해 Snowflake에서 호스팅하는 대규모 언어 모델(LLM)를 사용하여 PII를 식별하고 자리 표시자 값으로 바꿔 비정형 텍스트 데이터에서 PII를 수정합니다.
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개의 토큰으로 제한됩니다. 입력 텍스트가 더 긴 경우, 더 작은 청크로 분할하고 각 청크를 별도로 수정합니다(SPLIT_TEXT_RECURSIVE_CHARACTER 사용). 토큰 제한을 초과하는 텍스트를 수정하는 예제는 청킹의 예 섹션을 참조하세요.
참고
토큰은 AI 모델에서 처리하는 가장 작은 데이터 단위입니다. 영어 텍스트의 경우 업계 가이드라인에서는 토큰 1개를 약 4자 또는 0.75단어로 간주합니다.
PII 카테고리 감지¶
AI_REDACT는 PII의 다음 카테고리 수정을 지원합니다. 카테고리 열의 값은 선택적 categories 인자에서 지원되는 문자열입니다.
카테고리
참고
NAME
전체 이름, 이름, 중간 이름, 성 인식
PHONE_NUMBER
DATE_OF_BIRTH
GENDER
남성, 여성, 논바이너리 인식
AGE
ADDRESS
다음을 식별합니다.
전체 우편 주소(US, UK, CA)
상세 주소(US, UK, CA)
우편 번호(US, UK, CA)
도시(US, UK, CA)
주(US) 또는 지방(CA)
카운티, 자치구 또는 타운십(US)
NATIONAL_ID
사회 보장 번호 식별(US)
PASSPORT
여권 번호 식별(US, UK, CA)
TAX_IDENTIFIER
개인 납세자 번호(ITNs) 식별
PAYMENT_CARD_DATA
전체 카드 정보, 카드 번호, 만료일 및 CVV
DRIVERS_LICENSE
US, UK, CA 지원됨
IP_ADDRESS
참고
AI_REDACT는 일부 PII 카테고리에 대한 부분 일치를 지원합니다. 예를 들어, 이름만으로도 [NAME] 자리 표시자를 사용하여 수정을 트리거합니다.
오류 처리¶
일반적으로, AI_REDACT는 입력 텍스트를 처리할 수 없는 경우 오류를 발생시킵니다. 쿼리가 여러 행을 수정할 때 오류로 인해 전체 쿼리가 실패합니다. 다른 행에서 처리를 계속하려면 세션 매개 변수 AI_SQL_ERROR_HANDLING_USE_FAIL_ON_ERROR를 FALSE로 설정하면 됩니다. 그런 다음 쿼리를 중지하는 대신 NULL 오류를 반환합니다.
ALTER SESSION SET AI_SQL_ERROR_HANDLING_USE_FAIL_ON_ERROR=FALSE;
또한 이 매개 변수를 FALSE로 설정하면 TRUE를 AI_REDACT에 대한 최종 인자로 전달할 수 있습니다. 이로 인해 반환 값은 수정된 텍스트와 오류 메시지에 대한 별도의 필드가 포함된 OBJECT가 됩니다. 이러한 필드 중 하나는 AI_REDACT 호출이 성공적으로 처리되었는지 여부에 따라 NULL이 됩니다.
비용 고려 사항¶
AI_REDACT는 다른 Cortex AI 함수와 마찬가지로 처리된 입력 및 출력 토큰 수에 따라 비용이 발생합니다. 자세한 내용은 `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.'
);
출력:
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 [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로 설정하고 TRUE를 AI_REDACT에 대한 마지막 인자로 전달합니다. 이로 인해 함수는 수정된 텍스트와 오류 메시지에 대한 별도의 필드가 있는 OBJECT를 반환하며, 그중 하나는 함수의 성공 여부에 따라 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);
청킹의 예¶
이 예제에서는 텍스트를 더 작은 청크로 분할하고 각 청크를 별도로 수정한 다음, 수정된 청크를 최종 출력으로 다시 결합하여 긴 텍스트에서 PII를 수정하는 방법을 보여줍니다. 이 접근 방식은 AI_REDACT의 토큰 제한과 같은 문제를 해결합니다.
CREATE OR REPLACE TABLE patients (
patient_id INT PRIMARY KEY,
patient_notes text
);
CREATE OR REPLACE TABLE final_temp_table AS
WITH chunked_data AS (
-- Step 1: Split text into chunks
SELECT
patient_id,
chunk.value AS chunk_text,
chunk.index AS chunk_index
FROM
patients,
LATERAL FLATTEN(
input => SNOWFLAKE.CORTEX.SPLIT_TEXT_RECURSIVE_CHARACTER(
patient_notes,
'none',
1000
)
) AS chunk
WHERE
patient_notes IS NOT NULL
AND LENGTH(patient_notes) > 0
),
redacted_chunks AS (
-- Step 2: Apply AI_REDACT to each chunk
SELECT
patient_id,
chunk_index,
chunk_text,
TO_VARIANT(results:value) AS redacted_chunk,
TO_VARIANT(results:error) AS error_string
from (
SELECT
patient_id,
chunk_index,
chunk_text,
AI_REDACT(chunk_text,TRUE) AS results
FROM
chunked_data
)
),
-- Step 3: Concatenate redacted chunks
final AS (
SELECT
chunk_text as original,
IFF(error_string IS NOT NULL, chunk_text, redacted_chunk) AS redacted_text,
patient_id,
chunk_index
FROM
redacted_chunks
)
SELECT * FROM final;
SELECT
patient_id,
LISTAGG(redacted_text, '') WITHIN GROUP (ORDER BY chunk_index) AS full_output
FROM final_temp_table
GROUP BY patient_id;
법적 고지¶
입력 및 출력의 데이터 분류는 다음 테이블과 같습니다.
입력 데이터 분류 |
출력 데이터 분류 |
지정 |
|---|---|---|
Usage Data |
Customer Data |
일반적으로 사용 가능한 함수는 Covered AI 기능입니다. 미리 보기 함수는 Preview AI 기능입니다. [1] |
자세한 내용은 Snowflake AI 및 ML 섹션을 참조하십시오.