Szövegfelosztó funkció

Megjegyzés:

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Fontos

Az (előzetes verzióban) megjelölt funkciókra, képességekre vagy tulajdonságokra nem vonatkozik szolgáltatási szintű szerződés, nem ajánlott éles számítási feladatokhoz, és az általános elérhetővé válásuk előtt változhatnak vagy korlátozhatók. Az Azure AI Keresés előzetes verziójú kifejezések az összes előzetes verziós funkcióra vonatkoznak, függetlenül attól, hogy önálló vagy egy általánosan elérhető funkció része.

A Text Split képesség szövegdarabokra bontja a szöveget. Meghatározhatod, hogy a szöveget mondatokra vagy egy adott hosszúságú oldalakra akarod-e bontani. Pozíciós metaadatok, mint az eltolás és az ordinális pozíció is elérhetők kimenetként. Ez a képesség akkor hasznos, ha a következő szintű készségeknél maximális szöveghossz követelményei vannak, például olyan beágyazási készségeknél, amelyek adatdarabokat továbbítanak beágyazómodelleknek az Azure OpenAI-n és más modellszolgáltatókon. További információért erről a helyzetről lásd: Chunk documents vektorkereséshez.

Megjegyzés:

Ez a képesség nem kötött az Öntésze Eszközökhöz. Nem számlázható, és nincs Foundry Tools kulcskövetelménye.

@odata.type

Microsoft.Skills.Text.SplitSkill

Képességparaméterek

A paraméterek megkülönböztetik a kis- és nagybetűket.

Paraméter neve Description
textSplitMode Vagy pagessentencesvagy . Az oldalaknak konfigurálható maximális hosszuk van, de a képesség igyekszik elkerülni, hogy egy mondat lerövidítse, így a tényleges hossz kisebb lehet. A mondatok olyan sorozatok, amelyek a mondat végén végződő írásjeleknél végződik, például pont, kérdőjel vagy felkiáltójel, feltéve, hogy a nyelv mondat végén van írásjel.
maximumPageLength Csak akkor érvényes, ha textSplitMode a -re pagesvan állítva. Ha unit beállítjuk characters, ez a paraméter a maximális oldalhosszra vonatkozik karakterekben, amelyet mért .String.Length A minimális érték 300, a maximum 50000, az alapértelmezett érték pedig 5000. Az algoritmus igyekszik megtörni a szöveget mondathatárokon, így az egyes darabok mérete kissé kisebb, mint maximumPageLength.

Ha unit beállítjuk azureOpenAITokens, a maximális oldalhossz a modell token hosszkorlátja. Szövegbeágyazású modellek esetén általános ajánlás az oldalhosszra 512 token.
defaultLanguageCode (opcionális) Az alábbi nyelvkódok egyike: 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. Az alapértelmezett az angol (en). Néhány szempont, amit érdemes figyelembe venni:
  • A nyelvkód megadása hasznos, hogy elkerüljük, hogy egy szót félbevágjanak nem fehér teres nyelveknél, mint például kínai, japán és koreai.
  • Ha nem ismered előre a nyelvet (például ha a LanguageDetectionSkill-et használod a nyelv felismerésére), javasoljuk az en alapértelmezettséget.
pageOverlapLength Csak akkor érvényes, ha textSplitMode a -re pagesvan állítva. Minden oldal ezzel a karakterszámmal vagy jelekkel kezdődik, amelyek az előző oldal végén szerepelnek. Ha ez a paraméter 0-ra van állítva, akkor nincs átfedő szöveg az egymást követő oldalakon. Ez a példa tartalmazza a paramétert.
maximumPagesToTake Csak akkor érvényes, ha textSplitMode a -re pagesvan állítva. Hány oldalt kell visszaküldeni. Az alapértelmezett 0, ami azt jelenti, hogy minden oldalt vissza kell adni. Ezt az értéket akkor kell beállítani, ha csak egy részhalmazra van szükség az oldalakból. Ez a példa tartalmazza a paramétert.
unit (előzetes verzió) Csak akkor érvényes, ha textSplitMode a -re pagesvan állítva. Megadja, hogy a chunk ( characters alapértelmezett) vagy azureOpenAITokens. Az egység beállítása hatással maximumPageLength van és pageOverlapLength.
azureOpenAITokenizerParameters (előzetes verzió) Egy objektum, amely további paramétereket biztosít az azureOpenAITokens egységhez.

encoderModelName egy kijelölt tokenizátor, amelyet a szöveg tokenjává alakítására használnak, amely elengedhetetlen a természetes nyelvi feldolgozáshoz (NLP). A különböző modellek különböző tokenizálókat használnak. Az érvényes értékek közé tartozik a GPT-4 által használt cl100k_base (alapértelmezett). További érvényes értékek a r50k_base, p50k_base és p50k_edit. A képesség a tiktoken könyvtárat a SharpToken és Microsoft.ML.Tokenizers segítségével valósítja meg, de nem támogatja minden kódolót. Például jelenleg nincs támogatás a GPT-4o által használt o200k_base kódoláshoz.

allowedSpecialTokens Meghatározza egy speciális tokenek gyűjteményét, amelyek a tokenizációs folyamatban engedélyezettek. A speciális tokenek olyan zsinórok, amelyeket egyediben szeretnél kezelni, hogy ne oszlanak meg tokenizáció közben. Például: ["[START"], "[END]"]. Ha a tiktoken könyvtár nem hajtja végre a tokenizációt a várt módon, akár nyelvspecifikus korlátok vagy más váratlan viselkedések miatt, ajánlott inkább szövegfelosztást használni.

Készségbemenetek

Paraméter neve Description
text A szöveget alláncra kell osztani.
languageCode (Opcionális) A dokumentum nyelvi kódja. Ha nem ismered a szövegbemenetek nyelvét (például ha a LanguageDetectionSkill-et használod a nyelv felismerésére), ezt a paramétert kihagyhatod. Ha beállítasz languageCode egy nyelvet, ami nem szerepel a támogatott listában , defaultLanguageCodefigyelmeztetést adnak ki, és a szöveg nem oszlik szét.

Képességkimenetek

Paraméter neve Description
textItems A kimenet egy alhúrokból álló tömb, amelyeket kinyertek. textItems a kimenet alapértelmezett neve.

targetName opcionális, de ha több Text Split képességed van, állítsd targetName be, hogy ne írd felül az első képesség adatait a másodikkal. Ha targetName be van állítva, használd kimeneti mezőtérképezésekben vagy olyan szeszélyökben, amelyek a képesség kimenetét fogyasztják, például beágyazási képességben.
offsets A kimenet egy kinyert elterletekből álló tömb. Az egyes indexeknél az érték egy objektum, amely tartalmazza az adott indexen lévő szöveg eloszlatását három kódolásban: UTF-8, UTF-16 és CodePoint. offsets a kimenet alapértelmezett neve.

targetName opcionális, de ha több Text Split képességed van, állítsd targetName be, hogy ne írd felül az első képesség adatait a másodikkal. Ha targetName be van állítva, használd kimeneti mezőtérképezésekben vagy olyan szeszélyökben, amelyek a képesség kimenetét fogyasztják, például beágyazási képességben.
lengths A kimenet egy olyan hosszúságokból álló tömb, amelyet kinyertek. Az egyes indexeknél az érték egy objektum, amely tartalmazza az adott indexen lévő szöveg eloszlatását három kódolásban: UTF-8, UTF-16 és CodePoint. lengths a kimenet alapértelmezett neve.

targetName opcionális, de ha több Text Split képességed van, állítsd targetName be, hogy ne írd felül az első képesség adatait a másodikkal. Ha targetName be van állítva, használd kimeneti mezőtérképezésekben vagy olyan szeszélyökben, amelyek a képesség kimenetét fogyasztják, például beágyazási képességben.
ordinalPositions A kimenet egy ordinális pozíciók tömbje, amely a szövegelem helyének felel meg a forrásszövegben. ordinalPositions a kimenet alapértelmezett neve.

targetName opcionális, de ha több Text Split képességed van, állítsd targetName be, hogy ne írd felül az első képesség adatait a másodikkal. Ha targetName be van állítva, használd kimeneti mezőtérképezésekben vagy olyan szeszélyökben, amelyek a képesség kimenetét fogyasztják, például beágyazási képességben.

Mintadefiníció

{
    "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"
        }
    ]
}

Példabemenet

{
    "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"
            }
        }
    ]
}

Példakimenet

{
    "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
                ]
            }
        }
    ]
}

Megjegyzés:

Ez a példa a textItemspagestargetName. Mivel targetName beállított, pages az az érték, amit a Text Split képességből kell kiválasztani. Felhasználás /document/pages/* a downstream készségekben, indexelő kimeneti mezőtérképezésekben, tudástároló előrejelzésekben és indexprojekteken. Ez a példa nem állít offsetsbe , lengths, vagy ordinalPosition más névre, így az érték, amit a későbbi képességeknél használnod kell, változatlan maradna. offsets és lengths komplex típusok, nem primitívek, mert több kódolási típus értékeit tartalmazzák. Az érték, amit egy adott kódolás eléréséhez használsz, például UTF-8, így nézne ki: /document/offsets/*/utf8.

Példa a chunkolásra és vektorizációra

Ez a példa az integrált vektorizációra vonatkozik.

  • pageOverlapLength: Az átfedő szöveg hasznos adatchunkolási helyzetekben, mert megőrzi a folytonosságot ugyanabból a dokumentumból generált chunkok között.

  • maximumPagesToTake: Az oldalfelvétel korlátai hasznosak vektorizációs helyzetekben, mert segít a vektorizációt biztosító beágyazási modellek maximális bemeneti határai alatt maradni.

Mintadefiníció

Ez a meghatározás 100 karaktert és pageOverlapLength egy karaktert is hozzáadmaximumPagesToTake.

Feltételezve maximumPageLength , hogy 5 000 karakter (az alapértelmezett), akkor "maximumPagesToTake": 1 feldolgozza minden forrásdokumentum első 5 000 karakterét.

Ez a példa a textItemsmyPagestargetName. Mivel targetName beállított, myPages az az érték, amit a Text Split képességből kell kiválasztani. Felhasználás /document/myPages/* a downstream készségekben, indexelő kimeneti mezőtérképezésekben, tudástároló előrejelzésekben és indexprojekteken.

{
    "@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"
        }
    ]
}

Mintabemenet (ugyanaz, mint az előző példa)

{
    "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"
            }
        }
    ]
}

Mintavétel (figyeld meg az átfedést)

Minden "textItems" tömbben az első elem mögöttes szöveg másolódik a második elem elejére.

{
    "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..."
                ]
            }
        }
    ]
}

Hibaesetek leírása

Ha egy nyelv nem támogatott, figyelmeztetés keletkezik.

Lásd még