텍스트 분할 인식 기술
분할 텍스트 기술은 텍스트를 텍스트의 청크로 나눕니다. 텍스트를 문장으로 나눌지 또는 특정 길이의 페이지로 나눌지 지정할 수 있습니다. 이 기술은 Azure OpenAI 및 기타 모델 공급자에 모델을 포함하기 위해 데이터 청크를 전달하는 기술 포함과 같은 다른 기술 다운스트림에 최대 텍스트 길이 요구 사항이 있는 경우에 유용합니다. 이 시나리오에 대한 자세한 내용은 벡터 검색을 위한 청크 문서를 참조하세요.
몇 가지 매개 변수는 버전별로 다릅니다. 기술 매개 변수 테이블은 버전 업그레이드가 필요한지 여부를 알 수 있도록 매개 변수가 도입된 API 버전을 기록합니다. 2024-09-01-preview에서 토큰 청크와 같은 버전별 기능을 사용하려면 Azure Portal을 사용하거나 REST API 버전을 대상으로 지정하거나 Azure SDK 변경 로그를 확인하여 기능을 지원하는지 확인할 수 있습니다.
Azure Portal은 대부분의 미리 보기 기능을 지원하며 기술 세트를 만들거나 업데이트하는 데 사용할 수 있습니다. 텍스트 분할 기술에 대한 업데이트의 경우 기술 세트 JSON 정의를 편집하여 새 미리 보기 매개 변수를 추가합니다.
참고 항목
이 기술은 Azure AI 서비스에 바인딩되지 않습니다. 청구할 수 없으며 Azure AI 서비스 키 요구 사항이 없습니다.
@odata.type
Microsoft.Skills.Text.SplitSkill
기술 매개 변수
매개 변수는 대/소문자를 구분합니다.
매개 변수 이름 | 버전 | 설명 |
---|---|---|
textSplitMode |
모든 버전 | pages 또는 sentences 중 하나입니다. 페이지의 최대 길이는 구성 가능하지만, 실제 길이가 더 작을 수 있도록 기술에서 문장 잘림을 방지하려고 합니다. 문장은 언어에 문장 끝 문장 부호가 있다고 가정하여 마침표, 물음표 또는 느낌표와 같은 문장 끝 문장 부호에서 종료되는 문자열입니다. |
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 |
2024-07-01 | 로 설정된 pages 경우에만 textSplitMode 적용됩니다. 각 페이지는 이전 페이지의 끝에서 이 수의 문자 또는 토큰으로 시작합니다. 이 매개 변수를 0으로 설정하면 연속 페이지에 겹치는 텍스트가 없습니다. 이 예제 에는 매개 변수가 포함됩니다. |
maximumPagesToTake |
2024-07-01 | 로 설정된 pages 경우에만 textSplitMode 적용됩니다. 반환할 페이지 수입니다. 기본값은 0입니다. 즉, 모든 페이지를 반환합니다. 페이지의 하위 집합만 필요한 경우 이 값을 설정해야 합니다. 이 예제 에는 매개 변수가 포함됩니다. |
unit |
2024-09-01-preview | New(새로 만들기). 로 설정된 pages 경우에만 textSplitMode 적용됩니다. 청크( characters 기본값) 또는 azureOpenAITokens . 단위 설정은 영향을 줍니다pageOverlapLength .maximumPageLength |
azureOpenAITokenizerParameters |
2024-09-01-preview | New(새로 만들기). 단위에 대한 추가 매개 변수를 제공하는 개체입니다 azureOpenAITokens . encoderModelName 는 텍스트를 토큰으로 변환하는 데 사용되는 지정된 토큰 변환기이며 NLP(자연어 처리) 작업에 필수적입니다. 다른 모델은 서로 다른 토케나이저를 사용합니다. 유효한 값에는 GPT-35-Turbo 및 GPT-4에서 사용하는 cl100k_base(기본값)가 포함됩니다. 다른 유효한 값은 r50k_base, p50k_base 및 p50k_edit. 이 기술은 SharpToken Microsoft.ML.Tokenizers 을 통해 tiktoken 라이브러리를 구현하지만 모든 인코더를 지원하지는 않습니다. 예를 들어 현재 GPT-4o에서 사용하는 o200k_base 인코딩은 지원되지 않습니다. allowedSpecialTokens 는 토큰화 프로세스 내에서 허용되는 특수 토큰 컬렉션을 정의합니다. 특수 토큰은 토큰화 중에 분할되지 않도록 고유하게 처리하려는 문자열입니다. 예를 들어 ["[START"], "[END]"]입니다. tiktoken 라이브러리가 예상대로 토큰화를 수행하지 않는 언어의 경우 텍스트 분할을 대신 사용하는 것이 좋습니다. |
기술 입력
매개 변수 이름 | 설명 |
---|---|
text |
부분 문자열로 분할할 텍스트입니다. |
languageCode |
(선택 사항) 문서에 대한 언어 코드입니다. 텍스트 입력의 언어를 모르는 경우(예: LanguageDetectionSkill을 사용하여 언어를 검색하는 경우) 이 매개 변수를 생략할 수 있습니다. 언어로 설정한 languageCode 경우 지원되는 목록에 defaultLanguageCode 없는 경우 경고가 내보내지고 텍스트가 분할되지 않습니다. |
기술 출력
매개 변수 이름 | 설명 |
---|---|
textItems |
출력은 추출된 부분 문자열의 배열입니다. textItems 는 출력의 기본 이름입니다. targetName 는 선택 사항이지만 텍스트 분할 기술이 여러 개 있는 경우 첫 번째 기술의 데이터를 두 번째 기술로 덮어쓰지 않도록 설정 targetName 해야 합니다. 설정된 경우 targetName 출력 필드 매핑 또는 기술 출력을 사용하는 다운스트림 기술(예: 포함 기술)에 사용합니다. |
샘플 정의
{
"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"
}
]
}
샘플 입력
{
"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"
}
}
]
}
샘플 출력
{
"values": [
{
"recordId": "1",
"data": {
"textItems": [
"This is the loan...",
"In the next section, we continue..."
]
}
},
{
"recordId": "2",
"data": {
"textItems": [
"This is the second document...",
"In the next section of the second doc..."
]
}
}
]
}
청크 및 벡터화 예제
이 예제는 통합 벡터화를 위한 것입니다.
pageOverlapLength
: 겹치는 텍스트는 동일한 문서에서 생성된 청크 간의 연속성을 유지하므로 데이터 청크 시나리오에서 유용합니다.maximumPagesToTake
: 페이지 유입 제한은 벡터화를 제공하는 포함 모델의 최대 입력 한도를 유지하는 데 도움이 되므로 벡터화 시나리오에서 유용합니다.
샘플 정의
이 정의는 100자 및 maximumPagesToTake
1자를 추가합니다pageOverlapLength
.
maximumPageLength
5,000자(기본값)라고 가정하면 "maximumPagesToTake": 1
각 원본 문서의 처음 5,000자를 처리합니다.
이 예제에서는 다음을 통해 myPages
targetName
설정합니다textItems
. 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": {
"textItems": [
"This is the loan...Here is the overlap part",
"Here is the overlap part...In the next section, we continue..."
]
}
},
{
"recordId": "2",
"data": {
"textItems": [
"This is the second document...Here is the overlap part...",
"Here is the overlap part...In the next section of the second doc..."
]
}
}
]
}
오류 사례
언어가 지원되지 않으면 경고가 생성됩니다.