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 | 각 조각에 포함할 최대 문자 수예요. |