Important
일부 매개변수는 보충 이용 약관에서 미리보기로 되어 있습니다. 미리보기 REST API는 이러한 매개변수를 지원합니다.
텍스트 분할 스킬은 텍스트를 여러 덩어리로 나누어 줍니다. 텍스트를 문장으로 나눌지, 특정 길이의 페이지로 나눌지 지정할 수 있습니다. 오프셋과 서수 위치와 같은 위치 메타데이터도 출력으로 제공됩니다. 이 기술은 Azure OpenAI 및 기타 모델 제공자에서 데이터 청크를 임베딩하는 기술과 같이 하위 기술에서 최대 텍스트 길이 요구사항이 있을 때 유용합니다. 이 시나리오에 대한 자세한 내용은 벡터 탐색에 관한 청크 문서를 참조하세요.
여러 매개변수는 버전별로 다릅니다. 기술 매개변수 테이블은 매개변수가 도입된 API 버전을 표시하여 버전 업그레이드 가 필요한지 알 수 있도록 합니다.
Azure 포털은 대부분의 미리보기 기능을 지원하며, 기술 세트를 생성하거나 업데이트하는 데 사용할 수 있습니다. 텍스트 분할 스킬 업데이트를 원하시면, 새로운 미리보기 매개변수를 추가하는 스킬셋 JSON 정의를 수정하세요.
Note
이 기술은 Foundry Tools에만 국한되지 않습니다. 청구 불가능하며 파운드리 도구 핵심 요건도 없습니다.
@odata.type
Microsoft.Skills.Text.SplitSkill
Skill Parameters
매개변수는 대소문자에 구분됩니다.
| Parameter name | Description |
|---|---|
textSplitMode |
또는 pagessentences. 페이지는 최대 길이를 설정할 수 있지만, 스킬은 문장을 잘라내지 않으려 하여 실제 길이가 더 짧아질 수 있습니다. 문장은 문장 끝 구두점이 있다고 가정할 때 마침표, 물음표, 느낌표 같은 문장 끝 구두점에서 끝나는 문자열입니다. |
maximumPageLength |
가 로 설정pages된 경우에만 textSplitMode 적용됩니다. 에 characters대해 를 설정하면unit, 이 매개변수는 로 String.Length측정한 문자 단위의 최대 페이지 길이를 나타냅니다. 최소 값은 300, 최대 값은 50000, 기본 값은 5000입니다. 알고리즘은 문장 경계에서 텍스트를 깨기 위해 최선을 다해 각 청크의 크기가 약간 작 maximumPageLength아질 수 있습니다. 를 로 azureOpenAITokens설정할 때unit, 최대 페이지 길이는 모델의 토큰 길이 제한입니다. 텍스트 임베딩 모델의 경우, 페이지 길이에 대한 일반적인 권장 사항은 512개의 토큰입니다. |
defaultLanguageCode |
(선택 사항) 다음 언어 코드 중 하나입니다: am, bs, cs, da, de, en, es, et, fr, he, hi, hr, hu, fi, id, is, it, ja, ko, lv, no, nl, pl, pt-PT, pt-BR, ru, sk, sl, sr, sv, tr, ur, zh-Hans. 기본값은 영어(en)입니다. 고려할 몇 가지 사항이 있습니다:
|
pageOverlapLength |
가 로 설정pages된 경우에만 textSplitMode 적용됩니다. 각 페이지는 이전 페이지 끝에서 가져온 이 숫자 또는 토큰 수로 시작합니다. 이 매개변수를 0으로 설정하면 연속 페이지에 겹치는 텍스트가 없습니다. 이 예시 에는 매개변수가 포함되어 있습니다. |
maximumPagesToTake |
가 로 설정pages된 경우에만 textSplitMode 적용됩니다. 반환해야 할 페이지 수. 기본값은 0으로, 모든 페이지를 반환한다는 의미입니다. 필요한 페이지 일부만 필요하다면 이 값을 설정해야 합니다. 이 예시 에는 매개변수가 포함되어 있습니다. |
unit |
가 로 설정pages된 경우에만 textSplitMode 적용됩니다. (기본값으로) azureOpenAITokens청크 characters 를 할지 또는 . 단위 설정은 와 pageOverlapLength에 영향을 미칩니다maximumPageLength. |
azureOpenAITokenizerParameters 유닛에 azureOpenAITokens 추가 매개변수를 제공하는 객체입니다. encoderModelName 텍스트를 토큰으로 변환하는 데 사용되는 지정된 토큰라이저로, 자연어 처리(NLP) 작업에 필수적입니다. 모델마다 다른 토큰라이저를 사용합니다. 유효한 값에는 GPT-4가 사용하는 기본값인 cl100k_base가 포함됩니다. 다른 유효한 값으로는 r50k_base, p50k_base, p50k_edit가 있습니다. 이 스킬은 SharpToken와 Microsoft.ML.Tokenizers를 통해 틱토큰 라이브러리를 구현하지만 모든 인코더를 지원하지는 않습니다. 예를 들어, 현재 GPT-4o에서 사용하는 o200k_base 인코딩에 대한 지원은 없습니다. allowedSpecialTokens 토큰화 과정에서 허용되는 특수 토큰들의 집합을 정의합니다. 특수 토큰은 토큰화 과정에서 분리되지 않도록 고유하게 처리해야 하는 문자열입니다. 예를 들어 ["[START"], "[END]]]. 라이브러리가 tiktoken 언어 특유의 제한이나 기타 예상치 못한 동작으로 토큰화를 수행하지 못한다면, 대신 텍스트 분할을 사용하는 것이 권장됩니다. |
Skill Inputs
| Parameter name | Description |
|---|---|
text |
텍스트를 서브스트링으로 분할할 수 있습니다. |
languageCode |
(선택 사항) 문서의 언어 코드. 텍스트 입력 언어를 모른다면(예: LanguageDetectionSkill 을 사용해 언어를 감지할 때), 이 매개변수를 생략할 수 있습니다. 만약 지원되는 목록에 defaultLanguageCode없는 언어로 설정 languageCode 하면 경고가 발생하고 텍스트가 분리되지 않습니다. |
Skill Outputs
| Parameter name | Description |
|---|---|
textItems |
출력은 추출된 서브스트링 배열입니다.
textItems 는 출력의 기본 이름입니다. targetName 선택 사항이지만, 텍스트 분할 스킬이 여러 개 있다면, 첫 번째 스킬의 데이터가 두 번째 스킬로 덮어쓰지 않도록 설정 targetName 하세요. 가 설정되어 targetName 있다면, 출력 필드 매핑이나 스킬 출력을 소비하는 하위 스킬(예: 임베딩 스킬)에 사용하세요. |
offsets |
출력은 추출된 오프셋 배열입니다. 각 인덱스의 값은 해당 인덱스에서 텍스트 항목의 오프셋을 포함하는 객체로, 세 가지 인코딩(UTF-8, UTF-16, CodePoint)입니다.
offsets 는 출력의 기본 이름입니다. targetName 선택 사항이지만, 텍스트 분할 스킬이 여러 개 있다면, 첫 번째 스킬의 데이터가 두 번째 스킬로 덮어쓰지 않도록 설정 targetName 하세요. 가 설정되어 targetName 있다면, 출력 필드 매핑이나 스킬 출력을 소비하는 하위 스킬(예: 임베딩 스킬)에 사용하세요. |
lengths |
출력은 추출된 길이들의 배열입니다. 각 인덱스의 값은 해당 인덱스에서 텍스트 항목의 오프셋을 포함하는 객체로, 세 가지 인코딩(UTF-8, UTF-16, CodePoint)입니다.
lengths 는 출력의 기본 이름입니다. targetName 선택 사항이지만, 텍스트 분할 스킬이 여러 개 있다면, 첫 번째 스킬의 데이터가 두 번째 스킬로 덮어쓰지 않도록 설정 targetName 하세요. 가 설정되어 targetName 있다면, 출력 필드 매핑이나 스킬 출력을 소비하는 하위 스킬(예: 임베딩 스킬)에 사용하세요. |
ordinalPositions |
출력은 텍스트 항목이 소스 텍스트 내에서 위치하는 순서 배열입니다.
ordinalPositions 는 출력의 기본 이름입니다. targetName 선택 사항이지만, 텍스트 분할 스킬이 여러 개 있다면, 첫 번째 스킬의 데이터가 두 번째 스킬로 덮어쓰지 않도록 설정 targetName 하세요. 가 설정되어 targetName 있다면, 출력 필드 매핑이나 스킬 출력을 소비하는 하위 스킬(예: 임베딩 스킬)에 사용하세요. |
Sample definition
{
"name": "SplitSkill",
"@odata.type": "#Microsoft.Skills.Text.SplitSkill",
"description": "A skill that splits text into chunks",
"context": "/document",
"defaultLanguageCode": "en",
"textSplitMode": "pages",
"unit": "azureOpenAITokens",
"azureOpenAITokenizerParameters":{
"encoderModelName":"cl100k_base",
"allowedSpecialTokens": [
"[START]",
"[END]"
]
},
"maximumPageLength": 512,
"inputs": [
{
"name": "text",
"source": "/document/text"
},
{
"name": "languageCode",
"source": "/document/language"
}
],
"outputs": [
{
"name": "textItems",
"targetName": "pages"
}
]
}
Sample input
{
"values": [
{
"recordId": "1",
"data": {
"text": "This is the loan application for Joe Romero, a Microsoft employee who was born in Chile and who then moved to Australia...",
"languageCode": "en"
}
},
{
"recordId": "2",
"data": {
"text": "This is the second document, which will be broken into several pages...",
"languageCode": "en"
}
}
]
}
Sample output
{
"values": [
{
"recordId": "1",
"data": {
"pages": [
"This is the loan...",
"In the next section, we continue..."
],
"offsets": [
{
"utf8": 0,
"utf16": 0,
"codePoint": 0
},
{
"utf8": 146,
"utf16": 146,
"codePoint": 146
}
],
"lengths": [
{
"utf8": 146,
"utf16": 146,
"codePoint": 146
},
{
"utf8": 211,
"utf16": 211,
"codePoint": 211
}
],
"ordinalPositions" : [
1,
2
]
}
},
{
"recordId": "2",
"data": {
"pages": [
"This is the second document...",
"In the next section of the second doc..."
],
"offsets": [
{
"utf8": 0,
"utf16": 0,
"codePoint": 0
},
{
"utf8": 115,
"utf16": 115,
"codePoint": 115
}
],
"lengths": [
{
"utf8": 115,
"utf16": 115,
"codePoint": 115
},
{
"utf8": 209,
"utf16": 209,
"codePoint": 209
}
],
"ordinalPositions" : [
1,
2
]
}
}
]
}
Note
이 예시는 를 로 pages 설정하여 .textItemstargetName 설정되어 있으니 targetName , pages 텍스트 분할 스킬에서 출력을 선택할 때 사용해야 하는 값입니다. 하위 기술에서는 인덱서를 출력하여 필드 매핑, 지식 저장소 예측,인덱스 예측을 활용 /document/pages/* 합니다.
이 예시는 , lengths, 또는 ordinalPosition 다른 이름으로 설정offsets하지 않으므로, 다운스트림 스킬에서 사용해야 할 값은 변하지 않습니다.
offsets 그리고 lengths 여러 인코딩 타입의 값을 포함하고 있기 때문에 프리미티브가 아닌 복합 타입입니다. 특정 인코딩(예: UTF-8)을 얻기 위해 사용해야 하는 값은 다음과 같습니다: /document/offsets/*/utf8.
청킹과 벡터화의 예시
이 예시는 통합 벡터화에 관한 것입니다.
pageOverlapLength: 중첩된 텍스트는 동일한 문서에서 생성된 청크 간의 연속성을 유지하기 때문에 데이터 청킹 상황에서 유용합니다.maximumPagesToTake: 페이지 입력 제한은 벡터화 상황에서 유용한데, 이는 벡터화를 제공하는 임베딩 모델의 최대 입력 한계 이하로 유지하는 데 도움이 되기 때문입니다.
Sample definition
이 정의는 100자 와 maximumPagesToTake 1을 더합니다pageOverlapLength.
기본값이 5,000자라고 가정 maximumPageLength 하면, "maximumPagesToTake": 1 각 소스 문서의 처음 5,000자를 처리합니다.
이 예시는 를 로 myPages 설정하여 .textItemstargetName 설정되어 있으니 targetName , myPages 텍스트 분할 스킬에서 출력을 선택할 때 사용해야 하는 값입니다. 하위 기술에서는 인덱서를 출력하여 필드 매핑, 지식 저장소 예측,인덱스 예측을 활용 /document/myPages/* 합니다.
{
"@odata.type": "#Microsoft.Skills.Text.SplitSkill",
"textSplitMode" : "pages",
"maximumPageLength": 1000,
"pageOverlapLength": 100,
"maximumPagesToTake": 1,
"defaultLanguageCode": "en",
"inputs": [
{
"name": "text",
"source": "/document/content"
},
{
"name": "languageCode",
"source": "/document/language"
}
],
"outputs": [
{
"name": "textItems",
"targetName": "myPages"
}
]
}
샘플 입력 (앞서 예시와 동일)
{
"values": [
{
"recordId": "1",
"data": {
"text": "This is the loan application for Joe Romero, a Microsoft employee who was born in Chile and who then moved to Australia...",
"languageCode": "en"
}
},
{
"recordId": "2",
"data": {
"text": "This is the second document, which will be broken into several sections...",
"languageCode": "en"
}
}
]
}
샘플 출력 (겹침 부분 주목)
각 "textItems" 배열 내에서, 첫 번째 항목의 뒤에 붙은 텍스트가 두 번째 항목의 시작 부분에 복사됩니다.
{
"values": [
{
"recordId": "1",
"data": {
"myPages": [
"This is the loan...Here is the overlap part",
"Here is the overlap part...In the next section, we continue..."
]
}
},
{
"recordId": "2",
"data": {
"myPages": [
"This is the second document...Here is the overlap part...",
"Here is the overlap part...In the next section of the second doc..."
]
}
}
]
}
Error cases
지원되지 않은 언어는 경고가 생성됩니다.