Creación de un conjunto de aptitudes (API rest de Azure AI Search)
Un conjunto de aptitudes es una colección de aptitudes cognitivas que se usan para el enriquecimiento con IA, con una especificación opcional para crear un almacén de conocimiento externo en Azure Storage. Las aptitudes invocan el procesamiento de lenguaje natural y otras transformaciones, como el reconocimiento de entidades, la extracción de frases clave, la fragmentación de texto en páginas lógicas, entre otras.
Un conjunto de aptitudes se adjunta a un indexador. Para usar el conjunto de aptitudes, haga referencia a él en un indexador y, a continuación, ejecute el indexador para importar datos, invocar transformaciones y enriquecimiento, y asignar los campos de salida a un índice. Un conjunto de aptitudes es un recurso de alto nivel, pero solo está operativo dentro del procesamiento del indexador. Como recurso de alto nivel, puede diseñar un conjunto de aptitudes una vez y luego hacer referencia a él en varios indizadores.
Puede usar POST o PUT en la solicitud. Para cualquiera de ellos, el documento JSON del cuerpo de la solicitud proporciona la definición de objeto.
PUT https://[servicename].search.windows.net/skillsets/[skillset name]?api-version=[api-version]
Content-Type: application/json
api-key: [admin key]
HTTPS es necesario para todas las solicitudes de servicio. Si el conjunto de aptitudes no existe, se crea. Si ya existe, se actualiza a la nueva definición.
Nota
Los conjuntos de aptitudes son la base del enriquecimiento con inteligencia artificial. Un recurso gratuito está disponible para un procesamiento limitado, pero para cargas de trabajo más grandes o más frecuentes, se requiere un recurso de Cognitive Services facturable .
Parámetros de identificador URI
Parámetro | Descripción |
---|---|
nombre del servicio | Necesario. Establézcalo en el nombre único definido por el usuario del servicio de búsqueda. |
nombre del conjunto de aptitudes | Obligatorio en el URI si usa PUT. El nombre debe estar en minúsculas, comenzar con una letra o un número, no tener barras diagonales ni puntos y tener menos de 128 caracteres. El nombre debe comenzar con una letra o un número, pero el resto del nombre puede incluir cualquier letra, número y guiones, siempre y cuando los guiones no sean consecutivos. |
api-version | Necesario. Consulte Versiones de API para obtener una lista de las versiones admitidas. |
Encabezados de solicitud
En la siguiente tabla se describen los encabezados de solicitud obligatorios y opcionales.
Campos | Descripción |
---|---|
Content-Type | Necesario. Establézcalo en application/json |
api-key | Opcional si usa roles de Azure y se proporciona un token de portador en la solicitud; de lo contrario, se requiere una clave. Las solicitudes de creación deben incluir un api-key encabezado establecido en la clave de administración (en lugar de una clave de consulta). Consulte Conexión a Azure AI Search mediante la autenticación de claves para más información. |
Cuerpo de la solicitud
El cuerpo de la solicitud contiene la definición del conjunto de aptitudes. Las aptitudes son independientes o encadenadas juntas a través de asociaciones de entrada-salida, donde la salida de una transformación se convierte en entrada a otra. Un conjunto de aptitudes debe tener al menos una aptitud. No hay ningún límite teórico en el número máximo de aptitudes, pero de tres a cinco es una configuración común.
El siguiente JSON es una representación de alto nivel de las partes principales de la definición.
{
"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) { }
}
La solicitud contiene las siguientes propiedades:
Propiedad | Descripción |
---|---|
name | Necesario. Nombre del conjunto de aptitudes. El nombre debe estar en minúsculas, comenzar con una letra o un número, no tener barras diagonales ni puntos y tener menos de 128 caracteres. El nombre debe comenzar con una letra o un número, pero el resto del nombre puede incluir cualquier letra, número y guiones, siempre y cuando los guiones no sean consecutivos. |
skills | Matriz de aptitudes. Cada aptitud tiene un parámetro odata.type, name, context y input y output. La matriz puede incluir aptitudes integradas y aptitudes personalizadas. Se requiere al menos una aptitud. Si usa un almacén de conocimiento, incluya una aptitud conformador a menos que defina la forma de datos dentro de la proyección. |
cognitiveServices | Se requiere una clave todo en uno para las aptitudes facturables que llaman a Cognitive Services APIs en más de 20 documentos diariamente, por indizador. La clave debe ser para un recurso de la misma región que el servicio de búsqueda. Para más información, consulte Asociación de un recurso de Cognitive Services. Si usa la aptitud Búsqueda de entidades personalizadas , incluya esta sección y una clave para habilitar las transacciones más allá de 20 transacciones diariamente por indizador. No necesita la clave de Cognitive Services, por lo que puede excluir cognitiveServices la sección si el conjunto de aptitudes consta solo de aptitudes personalizadas, aptitudes de utilidad (condicional, conformador, combinación de texto, división de texto) o la aptitud Extracción de documentos. Si desea quitar el recurso de Cognitive Services asociado de un conjunto de aptitudes (para revertir al uso de los límites "predeterminados") especifique @odata.type como #Microsoft.Azure.Search.DefaultCognitiveServices , consulte este ejemplo para obtener más información. |
knowledgeStore | Opcional. Destino de la salida de enriquecimiento en Azure Storage. Requiere una cadena de conexión a una cuenta y proyecciones de Azure Storage.
storageConnectionString (obligatorio) Cadena con este formato: "DefaultEndpointsProtocol=https;AccountName=<ACCOUNT-NAME>;AccountKey=<ACCOUNT-KEY>;EndpointSuffix=core.windows.net" .
projections (obligatorio) Matriz de objetos de proyección que consta de tables , objects , files , que se especifican o son NULL.
tables
Crea una o varias tablas en Azure Table Storage, proyectando contenido de cada documento como filas de una tabla. Cada tabla puede tener las tres propiedades siguientes:
objects
Proyecta documentos como blobs en Azure Blob Storage. Cada objeto tiene dos propiedades necesarias:
files
Cada entrada de archivo define el almacenamiento de imágenes binarias en Blob Storage. Las proyecciones de archivo tienen dos propiedades necesarias:
|
claveDeCifrado | Opcional. Se usa para cifrar una definición de conjunto de aptitudes en reposo con sus propias claves, administradas en azure Key Vault. Disponible para los servicios de búsqueda facturables creados en o después de 2019-01-01.
Una encryptionKey sección contiene un elemento definido por keyVaultKeyName el usuario (obligatorio), un generado keyVaultKeyVersion por el sistema (obligatorio) y un elemento que keyVaultUri proporciona la clave (obligatorio, también denominado nombre DNS). Un URI de ejemplo podría ser "https://my-keyvault-name.vault.azure.net".
Opcionalmente, puede especificar accessCredentials si no usa una identidad de sistema administrada. Las propiedades de accessCredentials incluyen applicationId (Microsoft Entra ID identificador de aplicación al que se concedieron permisos de acceso a la Key Vault de Azure especificada) y applicationSecret (clave de autenticación de la aplicación registrada). Un ejemplo de la sección siguiente ilustra la sintaxis. |
Response
Para una solicitud correcta, debería ver el código de estado "201 Created".
De forma predeterminada, el cuerpo de la respuesta contendrá el JSON de la definición del conjunto de aptitudes que se creó, Sin embargo, si el encabezado de Prefer
solicitud está establecido return=minimal
en , el cuerpo de la respuesta está vacío y el código de estado correcto es "204 Sin contenido" en lugar de "201 Creado". Esto es cierto independientemente de si se usa PUT o POST para crear el conjunto de aptitudes.
Ejemplos
Ejemplo: Conjunto de aptitudes que reconoce entidades empresariales y opiniones en las opiniones de los clientes
Este conjunto de aptitudes usa dos aptitudes de forma asincrónica, procesando /document/content
de forma independiente como dos transformaciones diferentes. Las aptitudes son Reconocimiento de entidades y Sentimiento. En el árbol de enriquecimiento, /document/content
proporciona el contenido (o las revisiones de clientes) del origen de datos externo.
{
"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": { }
}
Ejemplo: Almacén de conocimiento
Opcionalmente, un conjunto de aptitudes puede enviar la salida al almacén de conocimiento en Azure Storage. Requiere un cadena de conexión a una cuenta de Azure Storage y proyecciones que determinan si el contenido enriquecido llega a la tabla o al almacenamiento de blobs (como objetos o archivos). Normalmente, las proyecciones requieren una aptitud de conformador ascendente que recopila nodos de un árbol de enriquecimiento como entrada, lo que genera una sola forma que se puede pasar a la proyección. Normalmente, un conformador es la última aptitud que se va a procesar.
{
"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": "<your storage account connection string>",
"projections": [
{
"tables": [
{ "tableName": "CustomerReviews", "generatedKeyName": "DocID", "source": "/document/shapeCustomerReviews" }
. . .
],
"objects": [ ],
"files": [ ]
}
]
}
"encryptionKey": { }
}
Ejemplo: Claves de cifrado
Las claves de cifrado son claves administradas por el cliente que se usan para el cifrado adicional de contenido confidencial. En este ejemplo se muestra cómo especificar el cifrado administrado por el cliente en un conjunto de aptitudes.
{
"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)"}
}
}
Consulte también
- Define a skillset (Definición de un conjunto de aptitudes)
- Información general sobre el enriquecimiento de IA
- Información general del conjunto de aptitudes
- Información general de Knowledge Store
- Introducción a la proyección
- Tutorial: Uso de REST e IA para generar contenido que se puede buscar a partir de blobs
- Aptitudes integradas