Criar ou atualizar conjunto de habilidades (Versão prévia da API REST)
Aplica-se a: 2023-07-01-Preview, 2021-04-30-Preview
Importante
2023-07-01-Preview (sem alterações).
2021-04-30-Preview adiciona suporte de identidade gerenciada para conexões relacionadas ao conjunto de habilidades:
- "storageConnectionString" no repositório de conhecimento aceita uma ID de recurso do Azure para autenticação Azure AD.
- A "identidade" aceita uma identidade gerenciada atribuída pelo usuário. Essa propriedade está no repositório de conhecimento. Ele também está em "encryptionKey" para recuperar uma chave gerenciada pelo cliente no Azure Key Vault.
Essa API de visualização também dá suporte a uma conexão de identidade gerenciada de uma habilidade personalizada. Confira Referência de API Web personalizada para obter detalhes.
Um conjunto de habilidades é uma coleção de habilidades cognitivas usadas para enriquecimento de IA, com a opção de também criar um repositório de conhecimento externo no Armazenamento do Azure. As habilidades invocam o processamento de linguagem natural e outros processos de aprendizado de máquina, como reconhecimento de entidade, extração de frases-chave, agrupamento de texto em páginas lógicas, entre outros.
Um conjunto de habilidades é anexado a um indexador. Para usar o conjunto de habilidades, faça referência a ele em um indexador e execute o indexador para importar dados, invocar o enriquecimento e enviar a saída para um índice. Um conjunto de habilidades é um recurso de alto nível, mas está operacional apenas no processamento do indexador. Como um recurso de alto nível, você pode referenciá-lo em vários indexadores.
Você pode usar POST ou PUT em uma solicitação de criação. Para qualquer um deles, o corpo da solicitação fornece a definição do objeto.
POST https://[service name].search.windows.net/skillsets?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
Para solicitações de atualização, use PUT e especifique o nome do conjunto de habilidades no URI.
PUT https://[servicename].search.windows.net/skillsets/[skillset name]?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
HTTPS é necessário para todas as solicitações de serviço.
A criação de um conjunto de habilidades o adiciona ao serviço de pesquisa.
Atualizar um conjunto de habilidades substitui totalmente um conjunto de habilidades existente pelo conteúdo do conteúdo da solicitação. Uma prática recomendada para atualizações é recuperar a definição do conjunto de habilidades com um GET, modificá-la e, em seguida, atualizá-la com PUT.
Observação
Os conjuntos de habilidades são a base do enriquecimento de IA. Um recurso gratuito está disponível para processamento limitado, mas para cargas de trabalho maiores ou mais frequentes, anexe um recurso faturável dos Serviços Cognitivos.
Parâmetros de URI
Parâmetro | Descrição |
---|---|
nome do serviço | Obrigatórios. Defina essa propriedade como o nome exclusivo definido pelo usuário do serviço de pesquisa. |
nome do conjunto de habilidades | Necessário no URI se estiver usando PUT. O nome deve ser minúsculo, começar com uma letra ou número, não ter barras ou pontos e ter menos de 128 caracteres. Depois de iniciar o nome com uma letra ou número, o restante do nome pode incluir qualquer letra, número e traços, desde que os traços não sejam consecutivos. |
api-version | Obrigatórios. A versão prévia atual é 2023-07-01-Preview . Confira Versões de API para obter mais versões. |
disableCacheReprocessingChangeDetection | Opcional (false por padrão). Aplica-se a cenários de atualização e ao uso de enriquecimentos armazenados em cache durante a execução do conjunto de habilidades. Defina como true para evitar atualizações em documentos existentes com base na ação atual, por exemplo, se você quiser atualizar um conjunto de habilidades sem executar o conjunto de habilidades. Para obter mais informações, consulte Ignorar a avaliação do conjunto de habilidades. |
Cabeçalhos de solicitação
A tabela a seguir descreve os cabeçalhos de solicitação necessários e opcionais
Campos | Descrição |
---|---|
Tipo de conteúdo | Obrigatórios. Defina essa propriedade como application/json |
chave de API | Opcional se você estiver usando funções do Azure e um token de portador for fornecido na solicitação, caso contrário, uma chave será necessária. Uma chave de api é uma cadeia de caracteres exclusiva gerada pelo sistema que autentica a solicitação para o serviço de pesquisa. As solicitações de criação devem incluir um api-key cabeçalho definido como sua chave de administrador (em vez de uma chave de consulta). Confira Conectar-se ao Azure AI Search usando a autenticação de chave para obter detalhes. |
Corpo da solicitação
O corpo da solicitação contém a definição do conjunto de habilidades. As habilidades são autônomas ou encadeadas por meio de associações de entrada/saída, em que a saída de uma transformação se torna entrada para outra. Um conjunto de qualificações precisa ter pelo menos uma habilidade. Não há nenhum limite teórico no número máximo de habilidades, mas as três a cinco é uma configuração comum.
O JSON a seguir é uma representação de alto nível das partes main da definição.
{
"name" : (optional on PUT; required on POST) "Name of the skillset",
"description" : (optional) "Anything you want, or nothing at all",
"skills" : (required) ["An array of skills. Each skill has an odata.type, name, input and output parameters"],
"cognitiveServices":
{
"@odata.type": "#Microsoft.Azure.Search.CognitiveServicesByKey",
"description": "Optional. Anything you want, or null",
"key": "<YOUR-COGNITIVE-SERVICES-ALL-IN-ONE-KEY>"
},
"knowledgeStore": (optional) { ... },
"encryptionKey": (optional) { }
}
A contém as seguintes propriedades:
Propriedade | Descrição |
---|---|
name | Obrigatórios. O nome do conjunto de habilidades. O nome deve ser minúsculo, começar com uma letra ou número, não ter barras ou pontos e ter menos de 128 caracteres. Depois de iniciar o nome com uma letra ou número, o restante do nome pode incluir qualquer letra, número e traços, desde que os traços não sejam consecutivos. |
habilidades | Uma matriz de habilidades. Cada habilidade tem um odata.type, nome, contexto e parâmetros de entrada e saída. A referência de habilidades pode ser encontrada na documentação conceitual. A matriz pode incluir habilidades internas e habilidades personalizadas. Pelo menos uma habilidade é necessária. Se você estiver usando um repositório de conhecimento, inclua uma habilidade do Shaper , a menos que esteja definindo a forma de dados dentro da projeção. |
cognitiveServices | Uma chave all-in-one é necessária para habilidades faturáveis que chamam API de Serviços Cognitivos em mais de 20 documentos diariamente, por indexador. A chave deve ser para um recurso na mesma região que o serviço de pesquisa. Para obter mais informações, consulte Anexar um recurso dos Serviços Cognitivos. Você pode omitir a chave e esta seção se o conjunto de habilidades consistir apenas em habilidades personalizadas, habilidades de utilitário (Condicional, Shaper, Mesclagem de Texto, Divisão de Texto) ou a habilidade extração de documentos. Se você estiver usando a habilidade pesquisa de entidade personalizada , inclua esta seção e uma chave para habilitar transações além de 20 transações diárias por indexador. |
knowledgeStore | Opcional. Destino da saída de enriquecimento para o Armazenamento do Azure. Requer uma cadeia de conexão para uma conta e projeções do Armazenamento do Azure. |
encryptionKey | Opcional. Usado para criptografar dados confidenciais em uma definição de conjunto de habilidades com suas próprias chaves, gerenciadas no Key Vault do Azure. Para saber mais, confira Criptografia do Azure AI Search usando chaves gerenciadas pelo cliente no Azure Key Vault. |
Resposta
Para uma solicitação bem-sucedida, você deverá ver o código de status “201 (Criado)”.
Por padrão, o corpo da resposta conterá o JSON para a definição de índice que foi criado. Porém, se o cabeçalho da solicitação preferido for definido como retorno=mínimo , o corpo da resposta estará vazio e o código de status de êxito será "204 Sem Conteúdo" em vez de "201 Criado". Isso ocorre independentemente de PUT ou POST ter sido usado para criar o conjunto de qualificações.
Exemplos
Exemplo: Conjunto de habilidades que reconhece entidades de negócios e sentimento nas revisões do cliente
Esse conjunto de habilidades usa duas habilidades de maneira assíncrona, processando /document/content
independentemente como duas transformações diferentes. As habilidades são Reconhecimento de Entidade e Sentimento. Na árvore de enriquecimento, /document/content
fornece o conteúdo (ou revisões do cliente) da fonte de dados externa.
{
"name": "reviews-ss",
"description":
"Extract company names from customer reviews, and detect positive or negative sentiment from the same reviews.",
"skills":
[
{
"@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
"context": "/document/content",
"categories": [ "Organization" ],
"defaultLanguageCode": "en",
"inputs": [
{
"name": "text",
"source": "/document/content"
}
],
"outputs": [
{
"name": "organizations",
"targetName": "companyName"
}
]
},
{
"@odata.type": "#Microsoft.Skills.Text.V3.SentimentSkill",
"inputs": [
{
"name": "text",
"source": "/document/content"
},
{
"name": "languageCode",
"source": "/document/languageCode"
}
],
"outputs": [
{
"name": "sentiment",
"targetName": "reviewSentiment"
},
{
"name": "confidenceScores",
"targetName": "sentimentScore"
}
]
}
],
"cognitiveServices":
{
"@odata.type": "#Microsoft.Azure.Search.CognitiveServicesByKey",
"description": "mycogsvcs resource in West US 2",
"key": "<your cognitive services all-in-one key goes here>"
},
"knowledgeStore": { },
"encryptionKey": { }
}
Exemplo: repositório de conhecimento com acesso completo cadeia de conexão e entradas formadas
Um repositório de conhecimento requer uma cadeia de conexão a uma conta de Armazenamento do Azure e projeções que determinam se o conteúdo enriquecido chega no armazenamento de blobs ou tabela (como objetos ou arquivos).
Projeções, especialmente projeções de tabela, exigem uma habilidade upstream Shaper que coleta nós de uma árvore de enriquecimento como entrada, gerando uma única forma que pode ser passada para projeção. Normalmente, um shaper é a última habilidade a ser processada. Em uma projeção de tabela, os nós na habilidade do shaper determinam os campos na tabela.
{
"name": "reviews-ss",
"description":
"Extract company names from customer reviews, and detect positive or negative sentiment from the same reviews.",
"skills":
[
{ ... },
{ ... },
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"context": "/document/content",
"inputs": [
{
"name": "Company",
"source": "/document/content/companyName"
},
{
"name": "Sentiment_Score",
"source": "/document/content/sentimentScore"
},
{
"name": "Sentiment_Label",
"source": "/document/content/reviewSentiment"
}
],
"outputs": [
{
"name": "output",
"targetName": "shapeCustomerReviews"
}
]
}
],
"cognitiveServices":
{
"@odata.type": "#Microsoft.Azure.Search.CognitiveServicesByKey",
"description": "mycogsvcs resource in West US 2",
"key": "<your cognitive services all-in-one key goes here>"
},
"knowledgeStore": {
"storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<storage-account-name>;AccountKey=<storage-account-key>;EndpointSuffix=core.windows.net;",
"projections": [
{
"tables": [
{ "tableName": "CustomerReviews", "generatedKeyName": "DocID", "source": "/document/shapeCustomerReviews" }
. . .
],
"objects": [ ],
"files": [ ]
}
]
}
"encryptionKey": { }
}
Exemplo: conexões usando uma identidade gerenciada
As identidades gerenciadas podem ser usadas em conexões com um repositório de conhecimento e com o código externo de uma habilidade personalizada. Este exemplo demonstra os dois cenários. Para o repositório de conhecimento, a propriedade "identity" adicional especifica uma identidade gerenciada atribuída pelo usuário do serviço de pesquisa que Azure AD usa para autenticar a solicitação. Se você omitir "identidade", a identidade gerenciada atribuída pelo sistema do serviço de pesquisa será usada. Para que Azure AD autentique o chamador, o serviço de pesquisa deve ser configurado para identidade gerenciada. A identidade de pesquisa deve ter permissões de "Colaborador de Dados de Blob de Armazenamento" para gravar no Armazenamento do Azure.
Uma habilidade personalizada pode usar uma identidade gerenciada para autenticação na função ou aplicativo do Azure que hospeda seu código personalizado. Ele inclui uma propriedade "authResourceId" para indicar que a conexão é autenticada usando uma identidade gerenciada. O valor de "authResourceId" é a ID do aplicativo criada pelo provedor de Identidade da Microsoft. Esse valor será usado para validar o token de autenticação recuperado pelo indexador e será enviado junto com a solicitação de API de habilidade da Web personalizada.
{
"name": "reviews-ss",
"description": "A short description",
"skills":
[
{ ... },
{ ... },
{
"@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
"name": "sampleCustomSkill",
"description": "A custom skill that requests an access token for the application ID specified in authResourceID",
"context": "/document",
"uri": "https://[your-app-name].azurewebsites.net/api/EntitySearch",
"authResourceId": "api://xyz*****-****-****-****-********9876",
"batchSize": 4,
"degreeOfParallelism": null,
"inputs": [
{
"name": "text",
"source": "/document/content"
},
{
"name": "language",
"source": "/document/languageCode"
},
{
"name": "phraseList",
"source": "/document/keyphrases"
}
],
"outputs": [
{
"name": "<customSkillOutput>"
}
]
}
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"context": "/document/content",
"inputs": [ ... ],
"outputs": [ ...]
}
],
"cognitiveServices": { ... },
"knowledgeStore": {
"storageConnectionString": "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;",
"identity": {
"@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
"userAssignedIdentity": "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[user identity name]",
"projections": [
{
"tables": [ ],
"objects": [ ],
"files": [ ]
}
]
}
"encryptionKey": { }
}
Exemplo: chaves de criptografia
Chaves de criptografia são chaves gerenciadas pelo cliente usadas para criptografia suplementar de conteúdo confidencial. Este exemplo mostra como especificar a criptografia gerenciada pelo cliente em um conjunto de habilidades.
{
"name": "reviews-ss",
"description": "A brief description of the skillset",
"skills": [ omitted for brevity ],
"cognitiveServices": { omitted for brevity },
"knowledgeStore": { omitted for brevity },
"encryptionKey": (optional) {
"keyVaultKeyName": "Name of the Azure Key Vault key used for encryption",
"keyVaultKeyVersion": "Version of the Azure Key Vault key",
"keyVaultUri": "URI of Azure Key Vault, also referred to as DNS name, that provides the key. An example URI might be https://my-keyvault-name.vault.azure.net",
"accessCredentials": (optional, only if not using managed system identity) {
"applicationId": "Azure Active Directory Application ID that was granted access permissions to your specified Azure Key Vault",
"applicationSecret": "Authentication key of the specified Azure AD application)"}
}
}
Definições
Link | Descrição |
---|---|
knowledgeStore | Configura uma conexão com o Armazenamento do Azure e projeta conteúdo enriquecido na forma de objetos, arquivos e tabelas para usar cenários de mineração de conhecimento e processamento de dados. |
encryptionKey | Configura uma conexão com o Azure Key Vault para criptografia gerenciada pelo cliente. |
knowledgeStore
Um repositório de conhecimento é um repositório de dados enriquecidos que criou um conjunto de habilidades e um pipeline de enriquecimento de IA. Ele reside no Armazenamento do Azure e consiste em projeções de dados na forma de objetos, arquivos e tabelas. Ele é usado para cenários que não são de pesquisa, como mineração de conhecimento, exploração de dados no Power BI ou como um coletor de dados para processamento mais downstream por outros aplicativos.
A conexão com o Armazenamento do Azure é uma cadeia de conexão de acesso completo que inclui uma chave ou a ID do recurso de armazenamento fornecida que o serviço de pesquisa é executado em uma identidade gerenciada e tem uma atribuição de função do Azure que concede acesso de gravação ao ponto de extremidade do repositório de conhecimento.
Atributo | Descrição |
---|---|
storageConnectionString | Obrigatórios. Uma cadeia de caracteres em um destes formatos:"DefaultEndpointsProtocol=https;AccountName=<ACCOUNT-NAME>;AccountKey=<ACCOUNT-KEY>;EndpointSuffix=core.windows.net" "ResourceId=/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.Storage/storageAccounts/[storage account name]/;" |
identidade | Opcional. Ele contém um userAssignedIdentity do tipo #Microsoft.Azure.Search.DataUserAssignedIdentity e especifica a identidade gerenciada atribuída pelo usuário do serviço de pesquisa. Essa propriedade depende storageConnectionString de ter o cadeia de conexão que especifica uma ID de recurso da sua conta de armazenamento. Se a identity propriedade for nula, a conexão com uma ID de recurso será feita usando a propriedade gerenciada pelo sistema. Se essa propriedade for atribuída ao tipo #Microsoft.Azure.Search.DataNoneIdentity , qualquer identidade explícita especificada anteriormente será desmarcada. |
projections | Obrigatórios. Uma matriz de projeções que consiste em tables , objects , files que são especificadas ou nulas. |
Projeções
Projeções são definições das estruturas de dados em um repositório de conhecimento. Todos os nomes são definidos pelo usuário. Você pode adotar uma convenção de nomenclatura que ajuda a identificar conteúdo relacionado no Armazenamento do Azure.
Atributo | Descrição |
---|---|
tabelas | Projeta formas de dados em uma ou mais tabelas no Armazenamento de Tabelas do Azure, em que os elementos de cada documento são projetados em linhas em uma tabela. Cada tabela pode ter as três propriedades a seguir. Primeiro, name (obrigatório) determina a tabela a ser criada ou usada no Armazenamento de Tabelas do Azure. Segundo, generatedKeyName (opcional) é o nome de uma coluna que identifica exclusivamente um documento. Os valores dessa coluna serão gerados durante o enriquecimento. Se você omitir, o serviço de pesquisa criará uma coluna de chave padrão com base no nome da tabela. Terceiro, source (obrigatório) é o caminho para um nó da árvore de enriquecimento que fornece a forma da projeção. Geralmente, é a saída de uma habilidade do Shaper. Os caminhos começam com /document/ , representando o documento enriquecido raiz e, em seguida, são estendidos para /document/<shaper-output>/ , ou /document/content/ ou outro nó dentro da árvore de enriquecimento. Exemplos: /document/countries/* (todos os países) ou /document/countries/*/states/* (todos os estados em todos os países). |
objetos | Projeta documentos como blobs no Armazenamento de Blobs do Azure. Cada objeto tem duas propriedades necessárias. Primeiro, storageContainer é o nome do contêiner a ser criado ou usado em Armazenamento de Blobs do Azure. Em segundo lugar, source é o caminho para o nó da árvore de enriquecimento que fornece a forma da projeção. Ele deve ser JSON válido. O nó deve fornecer um objeto JSON, seja de uma habilidade que emita JSON válido ou da saída de uma habilidade shaper. |
files | Cada entrada de arquivo define o armazenamento de imagens binárias no Armazenamento de Blobs. As projeções de arquivo têm duas propriedades necessárias. Primeiro, storageContainer é o nome do contêiner a ser criado ou usado em Armazenamento de Blobs do Azure. Segundo, source é o caminho para o nó da árvore de enriquecimento que é a raiz da projeção. Um valor válido para essa propriedade é "/document/normalized_images/*" para imagens que foram originadas do Armazenamento de Blobs. |
encryptionKey
Configura uma conexão com o Azure Key Vault para CMK (chaves de criptografia gerenciadas pelo cliente) complementares. A criptografia com chaves gerenciadas pelo cliente não está disponível para serviços gratuitos. Para serviços faturáveis, ele só está disponível para serviços de pesquisa criados em ou após 01/01/2019.
Uma conexão com o cofre de chaves deve ser autenticada. Você pode usar "accessCredentials" ou uma identidade gerenciada para essa finalidade.
As identidades gerenciadas podem ser atribuídas pelo sistema ou pelo usuário (versão prévia). Se o serviço de pesquisa tiver uma identidade gerenciada atribuída pelo sistema e uma atribuição de função que conceda acesso de leitura ao cofre de chaves, você poderá omitir "identidade" e "accessCredentials", e a solicitação será autenticada usando a identidade gerenciada. Se o serviço de pesquisa tiver atribuição de função e identidade atribuída pelo usuário, defina a propriedade "identity" como a ID do recurso dessa identidade.
Atributo | Descrição |
---|---|
keyVaultKeyName | Obrigatórios. Nome da chave de Key Vault do Azure usada para criptografia. |
keyVaultKeyVersion | Obrigatórios. Versão da chave de Key Vault do Azure. |
keyVaultUri | Obrigatórios. URI do Azure Key Vault (também conhecido como nome DNS) que fornece a chave. Um URI de exemplo pode ser https://my-keyvault-name.vault.azure.net . |
accessCredentials | Omita se você estiver usando uma identidade gerenciada. Caso contrário, as propriedades de incluem applicationId (uma ID de accessCredentials Aplicativo do Azure Active Directory que tem permissões de acesso para o Azure Key Vault especificado) e applicationSecret (a chave de autenticação do aplicativo Azure AD especificado). |
identidade | Opcional, a menos que você esteja usando uma identidade gerenciada atribuída pelo usuário para a conexão do serviço de pesquisa com o Azure Key Vault. O formato é "/subscriptions/[subscription ID]/resourceGroups/[resource group name]/providers/Microsoft.ManagedIdentity/userAssignedIdentities/[managed identity name]" . |