ChunkText 프로세서

ChunkText 프로세서

이 문서는 Snowflake OpenFlow에서 텍스트를 여러 조각(chunk)으로 나누는 ChunkText 프로세서에 대한 참조 문서예요. 텍스트를 구분자(delimiter)와 최대 문자 길이에 따라 재귀적으로 분할하고, 각 조각에 속성을 부여해 후속 처리에 활용할 수 있어요.

출처: Snowflake 문서

본문

기능 — 일반 제공 (Generally Available)

Openflow Snowflake 배포는 AWS, Azure, GCP Commercial 리전의 모든 계정에서 사용할 수 있어요.

Openflow BYOC 배포는 AWS Commercial 리전의 모든 계정에서 사용할 수 있어요.

번들 (Bundle)

그룹 NAR
com.snowflake.openflow.runtime runtime-chunking-nar

설명 (Description)

구분자로 재귀적으로 분할하고 최대 문자 길이를 지정하는 옵션을 사용해 텍스트를 조각(chunk)으로 나눠요. 각 조각에는 fragment.identifier, fragment.index, fragment.count, segment.original.filename 속성이 부여되며, 이 속성들은 MergeContent 프로세서에서 원래 FlowFile을 재구성할 때 사용할 수 있어요.

태그 (Tags)

chunk, openflow, text

입력 요구사항 (Input Requirement)

REQUIRED

민감한 동적 속성 지원 (Supports Sensitive Dynamic Properties)

아니요 (false)

속성 (Properties)

속성 설명
Chunk Delimiters 쉼표로 구분된 문자 시퀀스 목록을 지정해요. 메타문자 \n, \r, \t는 자동으로 이스케이프가 해제돼요. 구분자는 텍스트를 조각으로 나누기 위해 순서대로 재귀적으로 적용돼요.
Chunk Overlap 앞쪽 및 뒤쪽 조각에서 포함할 최대 문자 수예요.
Chunking Strategy 텍스트를 조각화하는 전략이에요. 'Recursive Delimiters'는 문자 기준 재귀 분할 알고리즘에 따라 텍스트를 조각화해요. 이 알고리즘에서는 입력 텍스트를 첫 번째 구분자로 나눈 뒤 'Max Chunk Length'를 초과하지 않는 조각으로 합쳐요. 'Max Chunk Length'를 초과한 분할은 다음 구분자를 사용해 재귀적으로 다시 나눠요. 'Max Chunk Length'는 'Max Chunk Length' 크기의 조각을 만들어 텍스트를 조각화해요.
Language 문장을 파싱할 때 사용할 언어예요.
Max Chunk Length 출력 조각에 포함할 최대 문자 수예요. 이 값을 너무 높게 설정하면 메모리 부족(out of memory) 오류가 발생할 수 있어요.
Sentence Similarity Threshold 두 문장이 같은 조각을 차지할 만큼 유사한지 판단하는 임계값이에요. 값이 1.0이면 두 문장이 동일하다는 뜻이고, 0.0이면 완전히 유사하지 않다는 뜻이에요.
Trim Whitespace 출력 텍스트 조각 주변의 공백을 잘라내는지 여부예요.

관계 (Relationships)

이름 설명
failure 파싱 중 오류가 발생하면 입력 Flow File이 failure 관계로 라우팅돼요.
original 입력 Flow File이 original 관계로 라우팅돼요.
success 텍스트 조각이 success 관계로 라우팅돼요.

기록하는 속성 (Writes attributes)

이름 설명
segment.original.filename 입력 Flow File의 원래 파일 이름이에요.
fragment.identifier 각 조각을 생성하는 데 사용된 부모 Flow File의 ID예요.
fragment.index 현재 Flow File 조각의 인덱스로, 0부터 시작해요.
fragment.count 생성된 Flow File 조각의 총 개수예요.
chunk.start.offsets 이 속성은 원래 들어온 FlowFile에만 추가돼요. 생성되는 각 조각의 시작 오프셋을 쉼표로 구분한 목록이에요. 예를 들어 FlowFile이 3개의 자식 FlowFile로 조각화되면 0,183,365 같은 값을 가질 수 있어요. 즉 첫 번째 조각은 오프셋 0에서, 두 번째 조각은 183에서, 세 번째 조각은 365에서 시작한다는 뜻이에요. 오프셋은 문자 수를 기준으로 해요.
chunk.end.offsets 이 속성은 원래 들어온 FlowFile에만 추가돼요. 생성되는 각 조각의 끝 오프셋을 쉼표로 구분한 목록이에요. 예를 들어 FlowFile이 3개의 자식 FlowFile로 조각화되면 183,365,548 같은 값을 가질 수 있어요. 오프셋은 문자 수를 기준으로 해요.
chunk.strategy 텍스트를 조각화하는 데 사용한 전략이에요. 'Max Chunk Length', 'Recursive Delimiters', 'Sentence', 'Semantic' 중 하나예요.
chunk.semantic.threshold 두 문장이 같은 조각을 차지할 만큼 유사한지 판단하는 임계값이에요. 이 속성은 'Semantic' 조각화 전략을 사용할 때만 추가돼요.
chunk.language 문장을 파싱할 때 사용한 언어예요. 이 속성은 'Sentence' 또는 'Semantic' 조각화 전략을 사용할 때만 추가돼요.
chunk.delimiters 텍스트를 조각화할 때 사용한 구분자를 쉼표로 구분한 목록이에요. 이 속성은 'Recursive Delimiters' 조각화 전략을 사용할 때만 추가돼요.
chunk.max.chars 각 조각에 포함할 최대 문자 수예요.

더 알아보기 (Learn more)