Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Observação
O Pesquisa de IA do Azure está disponível através do portal Azure, APIs REST e SDKs do Azure. Também sustenta o Foundry IQ, a camada de conhecimento gerida que transforma conteúdos empresariais em bases de conhecimento reutilizáveis e conscientes de permissões para agentes no portal Microsoft Foundry.
Importante
Alguns parâmetros estão em pré-visualização nos Termos Suplementares de Utilização. A API REST de pré-visualização suporta estes parâmetros.
A habilidade Text Split divide o texto em blocos de texto. Podes especificar se queres dividir o texto em frases ou em páginas de um determinado comprimento. Metadados posicionais como deslocamento e posição ordinal também estão disponíveis como saídas. Esta competência é útil se existirem requisitos de comprimento máximo de texto noutras competências posteriores, como a incorporação de competências que transmitem blocos de dados para modelos de embedding no Azure OpenAI e outros fornecedores de modelos. Para mais informações sobre este cenário, consulte documentos Chunks para pesquisa vetorial.
Vários parâmetros são específicos de cada versão. A tabela de parâmetros de competências indica a versão da API em que um parâmetro foi introduzido, para que saiba se é necessária uma atualização de versão . Para usar funcionalidades específicas de versão, como token chunking em 2024-09-01-preview, pode usar o portal Azure, ou direcionar uma versão da API REST, ou consultar um registo de alterações SDK do Azure para ver se suporta a funcionalidade.
O portal do Azure suporta a maioria das funcionalidades de pré-visualização e pode ser usado para criar ou atualizar um conjunto de competências. Para atualizações da competência Text Split, edite a definição JSON do conjunto de habilidades para adicionar novos parâmetros de pré-visualização.
Observação
Esta habilidade não está limitada às Ferramentas de Fundição. Não é faturável e não tem necessidade de chave do Foundry Tools.
@odata.type
Microsoft.Skills.Text.SplitSkill
Parâmetros de habilidade
Os parâmetros são distinguíveis de maiúsculas minúsculas.
| Nome do parâmetro | Descrição |
|---|---|
textSplitMode |
Ou pagessentencesou. As páginas têm um comprimento máximo configurável, mas a habilidade tenta evitar encurtar uma frase para que o comprimento real possa ser menor. As frases são uma sequência que termina na pontuação que termina a frase, como um ponto final, ponto de interrogação ou ponto de exclamação, assumindo que a linguagem tem pontuação que termina a frase. |
maximumPageLength |
Só se aplica se textSplitMode estiver definido como pages. Para unit definir como characters, este parâmetro refere-se ao comprimento máximo da página em caracteres, conforme medido por String.Length. O valor mínimo é 300, o máximo é 50000 e o valor padrão é 5000. O algoritmo faz o possível para quebrar o texto nos limites das frases, pelo que o tamanho de cada bloco pode ser ligeiramente inferior a maximumPageLength. Para unit definir como azureOpenAITokens, o comprimento máximo da página é o limite de comprimento do token do modelo. Para modelos de embedding de texto, uma recomendação geral para o comprimento da página é 512 tokens. |
defaultLanguageCode |
(opcional) Um dos seguintes códigos linguísticos: 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. O padrão é inglês (en). Algumas coisas a considerar:
|
pageOverlapLength |
Só se aplica se textSplitMode estiver definido como pages. Cada página começa com este número de caracteres ou fichas do final da página anterior. Se este parâmetro estiver definido para 0, não há texto sobreposto em páginas sucessivas. Este exemplo inclui o parâmetro. |
maximumPagesToTake |
Só se aplica se textSplitMode estiver definido como pages. Número de páginas para devolver. O padrão é 0, o que significa devolver todas as páginas. Deves definir este valor se só for necessário um subconjunto de páginas. Este exemplo inclui o parâmetro. |
unit |
Só se aplica se textSplitMode estiver definido como pages. Especifica se deve dividir por characters (por defeito) ou azureOpenAITokenspor . Definir a unidade afeta maximumPageLength e pageOverlapLength. |
azureOpenAITokenizerParameters Um objeto que fornece parâmetros extra para a azureOpenAITokens unidade. encoderModelName é um tokenizador designado usado para converter texto em tokens, essencial para tarefas de processamento de linguagem natural (PLN). Modelos diferentes usam tokenizadores diferentes. Valores válidos incluem cl100k_base (por defeito) usado pelo GPT-4. Outros valores válidos são r50k_base, p50k_base e p50k_edit. A habilidade implementa a biblioteca tiktoken através de SharpToken e Microsoft.ML.Tokenizers, mas não suporta todos os codificadores. Por exemplo, atualmente não há suporte para o200k_base codificação usada pelo GPT-4o. allowedSpecialTokens define uma coleção de tokens especiais que são permitidos dentro do processo de tokenização. Tokens especiais são cadeias que deves tratar de forma única, garantindo que não são divididas durante a tokenização. Por exemplo, [[START"], "[FIM]"]. Se a tiktoken biblioteca não realizar a tokenização como esperado, seja devido a limitações específicas da linguagem ou outros comportamentos inesperados, recomenda-se usar a divisão de texto em vez disso. |
Entradas de Habilidade
| Nome do parâmetro | Descrição |
|---|---|
text |
O texto para dividir em substrings. |
languageCode |
(Opcional) Código de linguagem para o documento. Se não souberes a linguagem das entradas de texto (por exemplo, se estiveres a usar o LanguageDetectionSkill para detetar a língua), podes omitir este parâmetro. Se definires languageCode para uma língua que não está na lista suportada para , defaultLanguageCodeé emitido um aviso e o texto não é dividido. |
Resultados de Competências
| Nome do parâmetro | Descrição |
|---|---|
textItems |
A saída é um array de subcadeias que foram extraídas.
textItems é o nome padrão da saída. targetName é opcional, mas se tiveres várias competências de Text Split, certifica-te de definir targetName para não sobrescrever os dados da primeira competência pela segunda. Se targetName estiver definido, use-o em mapeamentos de campo de saída ou em competências a jusante que consumam a saída da habilidade, como uma habilidade de embedding. |
offsets |
A saída é um array de deslocamentos que foram extraídos. O valor em cada índice é um objeto que contém o deslocamento do item de texto nesse índice em três codificações: UTF-8, UTF-16 e CodePoint.
offsets é o nome padrão da saída. targetName é opcional, mas se tiveres várias competências de Text Split, certifica-te de definir targetName para não sobrescrever os dados da primeira competência pela segunda. Se targetName estiver definido, use-o em mapeamentos de campo de saída ou em competências a jusante que consumam a saída da habilidade, como uma habilidade de embedding. |
lengths |
A saída é um array de comprimentos que foram extraídos. O valor em cada índice é um objeto que contém o deslocamento do item de texto nesse índice em três codificações: UTF-8, UTF-16 e CodePoint.
lengths é o nome padrão da saída. targetName é opcional, mas se tiveres várias competências de Text Split, certifica-te de definir targetName para não sobrescrever os dados da primeira competência pela segunda. Se targetName estiver definido, use-o em mapeamentos de campo de saída ou em competências a jusante que consumam a saída da habilidade, como uma habilidade de embedding. |
ordinalPositions |
A saída é um array de posições ordinais correspondentes à posição do item do texto dentro do texto de origem.
ordinalPositions é o nome padrão da saída. targetName é opcional, mas se tiveres várias competências de Text Split, certifica-te de definir targetName para não sobrescrever os dados da primeira competência pela segunda. Se targetName estiver definido, use-o em mapeamentos de campo de saída ou em competências a jusante que consumam a saída da habilidade, como uma habilidade de embedding. |
Definição da amostra
{
"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"
}
]
}
Entrada de exemplo
{
"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"
}
}
]
}
Saída da amostra
{
"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
]
}
}
]
}
Observação
Este exemplo define textItems para pages através targetNamede . Como targetName está definido, pages é o valor que deve usar para selecionar a saída da competência Text Split. Utilização /document/pages/* em competências posteriores, mapeamentos de campos de saída do indexador, projeções de armazenamento de conhecimento e projeções de índice.
Este exemplo não define offsets, lengths, nem ordinalPosition qualquer outro nome, por isso o valor que deves usar nas competências a jusante permaneceria inalterado.
offsets e lengths são tipos complexos em vez de primitivos, porque contêm os valores para múltiplos tipos de codificação. O valor que deve usar para obter uma codificação específica, por exemplo UTF-8, seria o seguinte: /document/offsets/*/utf8.
Exemplo para fragmentação e vetorização
Este exemplo é para vetorização integrada.
pageOverlapLength: O texto sobreposto é útil em cenários de fragmentação de dados porque preserva a continuidade entre blocos gerados a partir do mesmo documento.maximumPagesToTake: Os limites na entrada de páginas são úteis em cenários de vetorização porque ajudam a manter-se abaixo dos limites máximos de entrada dos modelos de embedding que fornecem a vetorização.
Definição da amostra
Esta definição acrescenta pageOverlapLength 100 caracteres e maximumPagesToTake um.
Assumindo que maximumPageLength são 5.000 caracteres (o padrão), processa "maximumPagesToTake": 1 então os primeiros 5.000 caracteres de cada documento fonte.
Este exemplo define textItems para myPages através targetNamede . Como targetName está definido, myPages é o valor que deve usar para selecionar a saída da competência Text Split. Utilização /document/myPages/* em competências posteriores, mapeamentos de campos de saída do indexador, projeções de armazenamento de conhecimento e projeções de índice.
{
"@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"
}
]
}
Entrada de exemplo (igual ao exemplo anterior)
{
"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"
}
}
]
}
Saída de exemplo (repare na sobreposição)
Dentro de cada array "textItems", o texto final do primeiro item é copiado para o início do segundo item.
{
"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..."
]
}
}
]
}
Casos de erro
Se uma linguagem não for suportada, é gerado um aviso.