다음을 통해 공유


텍스트 분할 인식 기술

Important

일부 매개 변수는 추가 사용 약관에 따라 공개 미리 보기로 제공됩니다. 미리 보기 REST API이러한 매개 변수를 지원합니다.

분할 텍스트 기술은 텍스트를 텍스트의 청크로 나눕니다. 텍스트를 문장으로 나눌지 또는 특정 길이의 페이지로 나눌지 지정할 수 있습니다. 이 기술은 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)입니다. 고려해야 할 몇 가지 사항은 다음과 같습니다.
  • 언어 코드를 제공하는 것은 중국어, 일본어 및 한국어와 같은 비백인 영역 언어에 대해 단어를 반으로 자르지 않도록 하는 데 유용합니다.
  • 언어를 미리 모르는 경우(예: LanguageDetectionSkill을 사용하여 언어를 검색하는 경우) 기본값을 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..."
                ]
            }
        }
    ]
}

오류 사례

언어가 지원되지 않으면 경고가 생성됩니다.

참고 항목