共用方式為


文字分割認知技能

重要

某些參數在補充使用規定下處於公開預覽狀態。 預覽 REST API 支援這些參數。

文字分割技能會將文字分割成文字區塊。 您可以指定您要將文字分成句子或特定長度的頁面。 如果其他技能下游有文字長度需求上限,例如內嵌技能,可將數據區塊傳遞至 Azure OpenAI 和其他模型提供者上的內嵌模型,則此技能很有用。 如需此案例的詳細資訊,請參閱 向量搜尋的區塊檔。

有數個參數是版本特定的。 skills 參數數據表會指出引進參數的 API 版本,讓您知道是否需要 版本升級 。 若要在 2024-09-01-preview 中使用令牌區塊化等版本特定功能,您可以使用 Azure 入口網站 或以 REST API 版本為目標,或檢查 Azure SDK 變更記錄檔,以查看其是否支援此功能。

Azure 入口網站 支援大部分的預覽功能,可用來建立或更新技能集。 如需文字分割技能的更新,請編輯技能集 JSON 定義以新增預覽參數。

注意

此技能未系結至 Azure AI 服務。 這是不可計費的,而且沒有 Azure AI 服務的主要需求。

@odata.type

Microsoft.Skills.Text.SplitSkill

技能參數

這些參數會區分大小寫。

參數名稱 版本 描述
textSplitMode 所有版本 pagessentences。 頁面具有可設定的最大長度,但技能會嘗試避免截斷句子,因此實際長度可能較小。 句子是一個字串,其結尾為句尾標點符號,例如句號、問號或驚嘆號,假設語言具有句子結尾標點符號。
maximumPageLength 所有版本 只有在 設定為 pages時才textSplitMode適用。 若 unit 設定為 characters,此參數會參考 以字元為單位的最大頁面長度,如 所 String.Length測量。 最小值為 300,最大值為 50000,預設值為 5000。 演算法會盡最大努力打破句子界限上的文字,因此每個區塊的大小可能略低於 maximumPageLength

針對 unit 設定為 azureOpenAITokens,頁面長度上限是模型的令牌長度限制。 對於文字內嵌模型,頁面長度的一般建議是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區塊化。 設定單位會影響 maximumPageLengthpageOverlapLength
azureOpenAITokenizerParameters 2024-09-01-preview New。 物件,提供單位的額外參數 azureOpenAITokens

encoderModelName 是用來將文字轉換成標記的指定標記化工具,對於自然語言處理 (NLP) 工作而言至關重要。 不同的模型會使用不同的 Tokenizer。 有效值包括 GPT-35-Turbo 和 GPT-4 所使用的cl100k_base(預設值)。 其他有效值為r50k_base、p50k_base和p50k_edit。 技能會透過SharpToken作 tiktoken 連結庫,Microsoft.ML.Tokenizers但不支援每個編碼器。 例如,目前不支援 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 100 個字元和 maximumPagesToTake 1 個字元。

假設 maximumPageLength 是 5,000 個字元(預設值),然後 "maximumPagesToTake": 1 處理每個源文檔的前 5,000 個字元。

本範例會將 設定 textItems 為 到 myPages targetName。 因為 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..."
                ]
            }
        }
    ]
}

錯誤案例

如果不支持語言,就會產生警告。

另請參閱