テキスト分割コグニティブ スキル
重要
一部のパラメーターは、 使用条件のパブリック プレビュー段階にあります。 preview REST API では、これらのパラメーターがサポートされています。
テキスト分割スキルは、テキストをテキストのチャンクに分割します。 テキストを特定の長さの文章またはページに分割するかどうかを指定できます。 このスキルは、データ チャンクを Azure OpenAI やその他のモデル プロバイダー上の埋め込みモデルに渡すスキルの埋め込みなど、他のスキルのダウンストリームに最大テキスト長要件がある場合に便利です。 このシナリオの詳細については、ベクター検索 Chunk ドキュメントを参照してください。
いくつかのパラメーターはバージョン固有です。 スキル パラメーター テーブルには、 バージョンのアップグレード が必要かどうかを把握できるように、パラメーターが導入された API のバージョンが示されています。 2024-09-01-preview でトークン チャンクなどのバージョン固有の機能を使用するにはAzure portal を使用するか、REST API バージョンをターゲットにするか、Azure SDK の変更ログを確認して機能がサポートされているかどうかを確認します。
Azure portal はほとんどのプレビュー機能をサポートしており、スキルセットを作成または更新するために使用できます。 テキスト分割スキルを更新するには、スキルセットの JSON 定義を編集して、新しいプレビュー パラメーターを追加します。
Note
このスキルは Azure AI サービスにバインドされていません。 これは課金対象外で、Azure AI サービスの重要な要件はありません。
@odata.type
Microsoft.Skills.Text.SplitSkill
スキルのパラメーター
パラメーターの大文字と小文字は区別されます。
パラメーター名 | Version | 説明 |
---|---|---|
textSplitMode |
すべてのバージョン | pages または sentences のいずれかです。 ページには構成可能な最大長がありますが、スキルは文の切り捨てを回避しようとするため、実際の長さは小さくなる可能性があります。 文は、言語に文末の句読点がある場合、文末句読点 (句点、疑問符、感嘆符など) で終了する文字列です。 |
maximumPageLength |
すべてのバージョン | textSplitMode が pages に設定されている場合にのみ適用されます。 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) です。 次の考慮事項があります。
|
pageOverlapLength |
2024-07-01 | textSplitMode が pages に設定されている場合にのみ適用されます。 各ページは、前のページの末尾からこの数の文字またはトークンで始まります。 このパラメータが 0 に設定されている場合、連続するページに重複するテキストはありません。 この例ではそのパラメータが含まれています。 |
maximumPagesToTake |
2024-07-01 | textSplitMode が pages に設定されている場合にのみ適用されます。 返すページの数 既定値は 0 で、その場合すべてのページを返します。 ページのサブセットのみが必要な場合は、この値を設定するとよいです。 この例ではそのパラメータが含まれています。 |
unit |
2024-09-01-preview | New textSplitMode が pages に設定されている場合にのみ適用されます。 characters (既定) またはazureOpenAITokens でチャンクするかどうかを指定します。 単位の設定は、 maximumPageLength と pageOverlapLength に影響します。 |
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 は省略可能ですが、複数のテキスト分割スキルがある場合は、最初のスキルのデータを 2 番目のスキルで上書きしないように、必ず 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 文字の pageOverlapLength
と 1 文字の maximumPagesToTake
が追加されます。
maximumPageLength
が 5,000 文字 (既定値) であると仮定すると、"maximumPagesToTake": 1
は各ソース ドキュメントの最初の 5,000 文字を処理します。
次の使用例は、textItems
を targetName
を使用してmyPages
に設定します。 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" 配列内で、最初の項目の末尾のテキストが 2 番目の項目の先頭にコピーされます。
{
"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..."
]
}
}
]
}
エラーになる場合
言語がサポートされていない場合は、警告が生成されます。