Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Important
Einige Parameter sind in der Vorschau unter den ergänzenden Nutzungsbedingungen. Die Vorschau-REST-API unterstützt diese Parameter.
Die Text-Split-Fähigkeit zerlegt Text in Textabschnitte. Sie können festlegen, ob Sie den Text in Sätze oder in Seiten einer bestimmten Länge unterteilen möchten. Positionsmetadaten wie Offset und Ordinalposition sind ebenfalls als Ausgaben verfügbar. Diese Fähigkeit ist nützlich, wenn es maximale Textlängenanforderungen in anderen nachgelagerten Fähigkeiten gibt, wie zum Beispiel das Einbetten von Fähigkeiten, die Datenabschnitte an Embedding-Modelle auf Azure OpenAI und anderen Modellanbietern weitergeben. Für weitere Informationen zu diesem Szenario siehe Chunk-Dokumente für Vektorsuche.
Mehrere Parameter sind versionsspezifisch. Die Skills-Parametertabelle vermerkt die API-Version, in der ein Parameter eingeführt wurde, sodass man weiß, ob ein Versionsupgrade erforderlich ist. Um versionsspezifische Funktionen wie token chunking in 2024-09-01-preview zu verwenden, können Sie das Azure Portal nutzen, eine REST API-Version anvisieren oder ein Azure SDK Change Log prüfen, ob es die Funktion unterstützt.
Das Azure-Portal unterstützt die meisten Vorschaufunktionen und kann verwendet werden, um ein Skillset zu erstellen oder zu aktualisieren. Für Updates der Text-Split-Fähigkeit bearbeite die JSON-Definition des Skillsets, um neue Vorschauparameter hinzuzufügen.
Hinweis
Diese Fähigkeit ist nicht an Foundry Tools gebunden. Es ist nicht abrechenbar und hat keine Schlüsselanforderung für Foundry Tools.
@odata.type
Microsoft.Skills.Text.SplitSkill
Skillparameter
Die Parameter sind groß- und kleinschreibungssensitiv.
| Parametername | Description |
|---|---|
textSplitMode |
Entweder pages oder sentences. Seiten haben eine konfigurierbare maximale Länge, aber die Fähigkeit versucht, einen Satz nicht zu kürzen, sodass die tatsächliche Länge kleiner sein könnte. Sätze sind eine Zeichenkette, die an Satzendpunkt, wie einem Punkt, Fragezeichen oder Ausrufezeichen, endet, vorausgesetzt, die Sprache hat Satzendende Satzzeichensetzung. |
maximumPageLength |
gilt nur, wenn textSplitMode auf pagesgesetzt ist. Für unit auf zu setzen characters, bezieht sich dieser Parameter auf die maximale Seitenlänge in Zeichen, gemessen durch String.Length. Der Mindestwert beträgt 300, der Höchstwert 50.000 und der Standardwert 5.000. Der Algorithmus bemüht sich, den Text an Satzgrenzen zu brechen, sodass die Größe jedes Abschnitts etwas kleiner als maximumPageLengthsein kann. Für auf unit gesetzt azureOpenAITokensist, ist die maximale Seitenlänge die Token-Längengrenze des Modells. Für Text-Einbettungsmodelle ist eine allgemeine Empfehlung für die Seitenlänge 512 Tokens. |
defaultLanguageCode |
(optional) Einer der folgenden Sprachcodes: 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. Standard ist Englisch (en). Ein paar Dinge, die Sie beachten sollten:
|
pageOverlapLength |
gilt nur, wenn textSplitMode auf pagesgesetzt ist. Jede Seite beginnt mit dieser Anzahl von Zeichen oder Tokens vom Ende der vorherigen Seite. Wenn dieser Parameter auf 0 gesetzt ist, gibt es keinen überlappenden Text auf aufeinanderfolgenden Seiten. Dieses Beispiel enthält den Parameter. |
maximumPagesToTake |
gilt nur, wenn textSplitMode auf pagesgesetzt ist. Anzahl der Seiten, die zurückgegeben werden müssen. Standardmäßig ist 0, was bedeutet, dass alle Seiten zurückgegeben werden. Du solltest diesen Wert festlegen, wenn nur eine Teilmenge von Seiten benötigt wird. Dieses Beispiel enthält den Parameter. |
unit |
gilt nur, wenn textSplitMode auf pagesgesetzt ist. Spezifiziert, ob mit (Standard) oder charactersmit Chunk azureOpenAITokens gemacht werden soll. Das Setzen der Einheit beeinflusst maximumPageLength und pageOverlapLength. |
azureOpenAITokenizerParameters Ein Objekt, das zusätzliche Parameter für die Einheit azureOpenAITokens bereitstellt. encoderModelName ist ein ausgewiesener Tokenizer, der zur Umwandlung von Text in Tokens verwendet wird und für Aufgaben der natürlichen Sprachverarbeitung (NLP) unerlässlich ist. Verschiedene Modelle verwenden unterschiedliche Tokenizer. Gültige Werte umfassen cl100k_base (Standard), die von GPT-4 verwendet werden. Weitere gültige Werte sind r50k_base, p50k_base und p50k_edit. Die Skill implementiert die TikToken-Bibliothek über SharpToken und Microsoft.ML.Tokenizers, unterstützt aber nicht jeden Encoder. Zum Beispiel gibt es derzeit keine Unterstützung für o200k_base Codierung, die von GPT-4o verwendet wird. allowedSpecialTokens definiert eine Sammlung spezieller Tokens, die im Tokenisierungsprozess erlaubt sind. Spezielle Tokens sind Strings, die man eindeutig behandeln möchte, um sicherzustellen, dass sie während der Tokenisierung nicht gespalten werden. Zum Beispiel ["[START"], "[ENDE]"]. Wenn die tiktoken Bibliothek die Tokenisierung nicht wie erwartet durchführt, sei es aufgrund sprachspezifischer Einschränkungen oder anderer unerwarteter Verhaltensweisen, wird empfohlen, stattdessen Textsplitting zu verwenden. |
Skilleingaben
| Parametername | Description |
|---|---|
text |
Der Text, der in Unterstrings aufgeteilt werden soll. |
languageCode |
(Optional) Sprachcode für das Dokument. Wenn Sie die Sprache der Texteingaben nicht kennen (zum Beispiel wenn Sie LanguageDetectionSkill verwenden, um die Sprache zu erkennen), können Sie diesen Parameter weglassen. Wenn du auf eine Sprache setzt languageCode , die nicht in der unterstützten Liste für die defaultLanguageCodesteht, wird eine Warnung ausgesendet und der Text wird nicht geteilt. |
Skillausgaben
| Parametername | Description |
|---|---|
textItems |
Ausgabe ist ein Array von Teilzeichenketten, die extrahiert wurden.
textItems ist der Standardname des Outputs. targetName ist optional, aber wenn du mehrere Textsplit-Fähigkeiten hast, stelle targetName sicher, dass du die Daten der ersten Fähigkeit nicht mit der zweiten überschreibst. Wenn targetName gesetzt ist, verwenden Sie es in Ausgabefeld-Mappings oder in nachgelagerten Fähigkeiten, die die Fertigkeitsausgabe verbrauchen, wie z. B. eine Einbettungsfähigkeit. |
offsets |
Ausgabe ist ein Array von Offsets, die extrahiert wurden. Der Wert an jedem Index ist ein Objekt, das den Offset des Textelements an diesem Index in drei Codierungen enthält: UTF-8, UTF-16 und CodePoint.
offsets ist der Standardname des Outputs. targetName ist optional, aber wenn du mehrere Textsplit-Fähigkeiten hast, stelle targetName sicher, dass du die Daten der ersten Fähigkeit nicht mit der zweiten überschreibst. Wenn targetName gesetzt ist, verwenden Sie es in Ausgabefeld-Mappings oder in nachgelagerten Fähigkeiten, die die Fertigkeitsausgabe verbrauchen, wie z. B. eine Einbettungsfähigkeit. |
lengths |
Ausgabe ist ein Array von Längen, die extrahiert wurden. Der Wert an jedem Index ist ein Objekt, das den Offset des Textelements an diesem Index in drei Codierungen enthält: UTF-8, UTF-16 und CodePoint.
lengths ist der Standardname des Outputs. targetName ist optional, aber wenn du mehrere Textsplit-Fähigkeiten hast, stelle targetName sicher, dass du die Daten der ersten Fähigkeit nicht mit der zweiten überschreibst. Wenn targetName gesetzt ist, verwenden Sie es in Ausgabefeld-Mappings oder in nachgelagerten Fähigkeiten, die die Fertigkeitsausgabe verbrauchen, wie z. B. eine Einbettungsfähigkeit. |
ordinalPositions |
Ausgabe ist ein Array von Ordinalpositionen, die der Position des Textelements im Quelltext entsprechen.
ordinalPositions ist der Standardname des Outputs. targetName ist optional, aber wenn du mehrere Textsplit-Fähigkeiten hast, stelle targetName sicher, dass du die Daten der ersten Fähigkeit nicht mit der zweiten überschreibst. Wenn targetName gesetzt ist, verwenden Sie es in Ausgabefeld-Mappings oder in nachgelagerten Fähigkeiten, die die Fertigkeitsausgabe verbrauchen, wie z. B. eine Einbettungsfähigkeit. |
Beispieldefinition
{
"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"
}
]
}
Beispieleingabe
{
"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"
}
}
]
}
Beispielausgabe
{
"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
]
}
}
]
}
Hinweis
Dieses Beispiel setzt textItems auf pages durch targetName. Weil targetName gesetzt ist, ist der Wert, den du verwenden solltest, pages um die Ausgabe aus der Text-Split-Fähigkeit auszuwählen. Nutze /document/pages/* Downstream-Fähigkeiten, Indexer-Ausgabefeldabbildungen, Wissensspeicherprojektionen und Indexprojektionen.
Dieses Beispiel setzt offsetsnicht , lengths, oder ordinalPosition auf einen anderen Namen, sodass der Wert, den du in nachgelagerten Fähigkeiten verwenden solltest, unverändert bleibt.
offsets und lengths sind komplexe Typen und keine Primitive, da sie die Werte für mehrere Kodierungstypen enthalten. Der Wert, den Sie verwenden sollten, um eine bestimmte Codierung zu erhalten, zum Beispiel UTF-8, sieht wie folgt aus: /document/offsets/*/utf8.
Beispiel für Chunking und Vektorisierung
Dieses Beispiel dient der integrierten Vektorisierung.
pageOverlapLength: Überlappender Text ist in Datenchunking-Szenarien nützlich, da er die Kontinuität zwischen den aus demselben Dokument generierten Chunks bewahrt.maximumPagesToTake: Grenzen für die Seitenaufnahme sind in Vektorisierungsszenarien nützlich, weil sie helfen, unter den maximalen Eingabegrenzen der Embedding-Modelle zu bleiben, die die Vektorisierung liefern.
Beispieldefinition
Diese Definition ergibt pageOverlapLength 100 Zeichen und maximumPagesToTake eins.
Angenommen, das sind maximumPageLength 5.000 Zeichen (der Standard), dann "maximumPagesToTake": 1 werden die ersten 5.000 Zeichen jedes Quelldokuments verarbeitet.
Dieses Beispiel setzt textItems auf myPages durch targetName. Weil targetName gesetzt ist, ist der Wert, den du verwenden solltest, myPages um die Ausgabe aus der Text-Split-Fähigkeit auszuwählen. Nutze /document/myPages/* Downstream-Fähigkeiten, Indexer-Ausgabefeldabbildungen, Wissensspeicherprojektionen und Indexprojektionen.
{
"@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"
}
]
}
Beispieleingabe (wie im vorherigen Beispiel)
{
"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"
}
}
]
}
Sample-Ausgabe (beachte die Überschneidung)
Innerhalb jedes "textItems"-Arrays wird der nachfolgende Text vom ersten Element in den Anfang des zweiten Elements kopiert.
{
"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..."
]
}
}
]
}
Fehlerfälle
Wenn eine Sprache nicht unterstützt wird, wird eine Warnung generiert.