Criar um repositório de conhecimento usando a REST e o PostmanCreate a knowledge store using REST and Postman

Um repositório de conhecimento contém a saída de um pipeline de enriquecimento do Azure Cognitive Search para análise posterior ou outro processamento downstream.A knowledge store contains output from an Azure Cognitive Search enrichment pipeline for later analysis or other downstream processing. Um pipeline enriquecido com IA aceita arquivos de imagem ou arquivos de texto não estruturado, indexa-os usando o Azure Cognitive Search, aplica os enriquecimentos de IA dos Serviços Cognitivos (como análise de imagem e processamento em idioma natural) e, em seguida, salva os resultados em um repositório de conhecimento no Armazenamento do Azure.An AI-enriched pipeline accepts image files or unstructured text files, indexes them by using Azure Cognitive Search, applies AI enrichments from Cognitive Services (such as image analysis and natural language processing), and then saves the results to a knowledge store in Azure Storage. É possível usar ferramentas como o Power BI ou o Gerenciador de Armazenamento no portal do Azure para explorar o repositório de conhecimento.You can use tools like Power BI or Storage Explorer in the Azure portal to explore the knowledge store.

Neste artigo, você usa a interface da API REST para ingerir, indexar e aplicar enriquecimentos de IA a um conjunto de avaliações de hotéis.In this article, you use the REST API interface to ingest, index, and apply AI enrichments to a set of hotel reviews. As avaliações de hotéis são importadas para o Armazenamento de Blobs do Azure.The hotel reviews are imported into Azure Blob storage. Os resultados são salvos como um repositório de conhecimento no armazenamento de Tabelas do Azure.The results are saved as a knowledge store in Azure Table storage.

Depois de criar o repositório de conhecimento, você aprenderá a acessá-lo usando o Gerenciador de Armazenamento ou o Power BI.After you create the knowledge store, you can learn about how to access the knowledge store by using Storage Explorer or Power BI.

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.If you don't have an Azure subscription, create a free account before you begin.

Dica

Recomendamos o aplicativo da área de trabalho Postman para este artigo.We recommend Postman desktop app for this article. O código-fonte para este artigo inclui uma coleção de solicitações Postman contendo todas as solicitações.The source code for this article includes a Postman collection containing all of the requests.

Criar serviços e carregar dadosCreate services and load data

Este início rápido usa a Pesquisa Cognitiva do Azure, o Armazenamento de Blobs do Azure e os Serviços Cognitivos do Azure para IA.This quickstart uses Azure Cognitive Search, Azure Blob storage, and Azure Cognitive Services for the AI.

Como a carga de trabalho é muito pequena, os Serviços Cognitivos são acionados nos bastidores para fornecer processamento gratuito para até 20 transações diárias.Because the workload is so small, Cognitive Services is tapped behind the scenes to provide free processing for up to 20 transactions daily. Já que o conjunto de dados é tão pequeno, você pode ignorar a criação ou anexação de um recurso dos Serviços Cognitivos.Because the data set is so small, you can skip creating or attaching a Cognitive Services resource.

  1. Baixe HotelReviews_Free.csv.Download HotelReviews_Free.csv. Esses são dados de resenhas de hotel salvos em um arquivo CSV (originário do Kaggle.com) que contêm 19 resenhas de clientes de um hotel.This data is hotel review data saved in a CSV file (originates from Kaggle.com) and contains 19 pieces of customer feedback about a single hotel.

  2. Crie uma conta de armazenamento do Azure ou localize uma conta existente na assinatura atual.Create an Azure storage account or find an existing account under your current subscription. Você usará o armazenamento do Azure para o conteúdo bruto a ser importado e para o repositório de conhecimento que é o resultado final.You'll use Azure storage for both the raw content to be imported, and the knowledge store that is the end result.

    Escolha o tipo de conta StorageV2 (V2 de uso geral) .Choose the StorageV2 (general purpose V2) account type.

  3. Abra as páginas dos serviços de Blob e crie um contêiner chamado hotel-reviews.Open the Blob services pages and create a container named hotel-reviews.

  4. Clique em Carregar.Click Upload.

    Carregar os dadosUpload the data

  5. Carregue o arquivo HotelReviews-Free.csv que você baixou na primeira etapa.Select the HotelReviews-Free.csv file you downloaded in the first step.

    Criar o contêiner de Blob do AzureCreate the Azure Blob container

  6. Você quase terminou de trabalhar com esse recurso, mas antes de sair dessas páginas, use um link no painel de navegação esquerdo para abrir a página Chaves de Acesso.You are almost done with this resource, but before you leave these pages, use a link on the left navigation pane to open the Access Keys page. Obtenha uma cadeia de conexão para recuperar dados do armazenamento de Blobs.Get a connection string to retrieve data from Blob storage. A cadeia de conexão é semelhante ao seguinte exemplo: DefaultEndpointsProtocol=https;AccountName=<YOUR-ACCOUNT-NAME>;AccountKey=<YOUR-ACCOUNT-KEY>;EndpointSuffix=core.windows.netA connection string looks similar to the following example: DefaultEndpointsProtocol=https;AccountName=<YOUR-ACCOUNT-NAME>;AccountKey=<YOUR-ACCOUNT-KEY>;EndpointSuffix=core.windows.net

  7. Ainda no portal, alterne para o Azure Cognitive Search.Still in the portal, switch to Azure Cognitive Search. Criar um novo serviço ou encontrar um serviço existente.Create a new service or find an existing service. Você pode usar um serviço gratuito para este exercício.You can use a free service for this exercise.

Configurar PostmanConfigure Postman

Instale e configure o Postman.Install and set up Postman.

Baixar e instalar o PostmanDownload and install Postman

  1. Baixe o código-fonte da coleção do Postman.Download the Postman collection source code.

  2. Selecione Arquivo > Importar para importar o código-fonte para o Postman.Select File > Import to import the source code into Postman.

  3. Selecione a guia Coleções e, em seguida, selecione o botão ... (reticências).Select the Collections tab, and then select the ... (ellipsis) button.

  4. Selecione Editar.Select Edit.

    Aplicativo do Postman mostrando navegaçãoPostman app showing navigation

  5. Na caixa de diálogo Editar, selecione a guia Variáveis.In the Edit dialog box, select the Variables tab.

Na guia Variáveis, você pode adicionar valores que o Postman insere sempre que encontra uma variável específica dentro de chaves duplas.On the Variables tab, you can add values that Postman swaps in every time it encounters a specific variable inside double braces. Por exemplo, o Postman substituirá o símbolo {{admin-key}} pelo valor atual que você definir para admin-key.For example, Postman replaces the symbol {{admin-key}} with the current value that you set for admin-key. O Postman faz essa substituição nas URLs, nos cabeçalhos, no corpo da solicitação e assim por diante.Postman makes the substitution in URLs, headers, the request body, and so on.

Para obter o valor de admin-key, vá para o serviço da Pesquisa Cognitiva do Azure e selecione a guia Chaves. Altere search-service-name e storage-account-name para os valores escolhidos em Criar serviços.To get the value for admin-key, go to the Azure Cognitive Search service and select the Keys tab. Change search-service-name and storage-account-name to the values you chose in Create services. Defina storage-connection-string usando o valor na guia Chaves de Acesso da conta de armazenamento. Deixe os valores padrão para os outros valores.Set storage-connection-string by using the value on the storage account's Access Keys tab. You can leave the defaults for the other values.

Guia de variáveis de aplicativo do PostmanPostman app variables tab

VariávelVariable Onde obterWhere to get it
admin-key Na página Chaves do serviço da Pesquisa Cognitiva do Azure.On the Keys page of the Azure Cognitive Search service.
api-version Deixe como 2020-06-30.Leave as 2020-06-30.
datasource-name Deixe como hotel-reviews-ds.Leave as hotel-reviews-ds.
indexer-name Deixe como hotel-reviews-ixr.Leave as hotel-reviews-ixr.
index-name Deixe como hotel-reviews-ix.Leave as hotel-reviews-ix.
search-service-name O nome do serviço da Pesquisa Cognitiva do Azure.The name of the Azure Cognitive Search service. A URL é https://{{search-service-name}}.search.windows.net.The URL is https://{{search-service-name}}.search.windows.net.
skillset-name Deixe como hotel-reviews-ss.Leave as hotel-reviews-ss.
storage-account-name O nome da conta de armazenamento do Azure.The Azure storage account name.
storage-connection-string Na conta de armazenamento, na guia Chaves de Acesso, selecione key1 > Cadeia de conexão.In the storage account, on the Access Keys tab, select key1 > Connection string.
storage-container-name Deixe como hotel-reviews.Leave as hotel-reviews.

Examinar a coleção de solicitações no PostmanReview the request collection in Postman

Quando cria um repositório de conhecimento, você precisa emitir quatro solicitações HTTP:When you create a knowledge store, you must issue four HTTP requests:

  • Solicitação PUT para criar o índice: este índice armazena os dados usados e retornados pela Pesquisa Cognitiva do Azure.PUT request to create the index: This index holds the data that Azure Cognitive Search uses and returns.
  • Solicitação POST para criar a fonte de dados: Essa fonte de dados conecta o comportamento da Pesquisa Cognitiva do Azure à conta de armazenamento dos dados e do repositório de conhecimento.POST request to create the datasource: This datasource connects your Azure Cognitive Search behavior to the data and knowledge store's storage account.
  • Solicitação PUT para criar o conjunto de habilidades: o conjunto de habilidades especifica os enriquecimentos aplicados aos dados e à estrutura do repositório de conhecimento.PUT request to create the skillset: The skillset specifies the enrichments that are applied to your data and the structure of the knowledge store.
  • Solicitação PUT para criar o indexador: A execução do indexador lê os dados, aplica o conjunto de habilidades e armazena os resultados.PUT request to create the indexer: Running the indexer reads the data, applies the skillset, and stores the results. É necessário executar essa solicitação por último.You must run this request last.

O código-fonte contém uma coleção do Postman que tem as quatro solicitações.The source code contains a Postman collection that has the four requests. Para emitir as solicitações, no Postman, selecione a guia para a solicitação.To issue the requests, in Postman, select the tab for the request. Em seguida, adicione os cabeçalhos de solicitação api-key e Content-Type.Then, add api-key and Content-Type request headers. Defina o valor api-key como {{admin-key}}.Set the value of api-key to {{admin-key}}. Defina o valor Content-type como application/json.Set the value Content-type to application/json.

Captura de tela mostrando a interface do Postman para cabeçalhos

Observação

Você precisa definir os cabeçalhos api-key e Content-type em todas as suas solicitações.You must set api-key and Content-type headers in all your requests. Se o Postman reconhecer uma variável, ela aparecerá em texto laranja, como ocorre com {{admin-key}} na captura de tela anterior.If Postman recognizes a variable, the variable appears in orange text, as with {{admin-key}} in the preceding screenshot. Se a variável for digitada incorretamente, ela aparecerá em texto vermelho.If the variable is misspelled, it appears in red text.

Criar um índice da Pesquisa Cognitiva do AzureCreate an Azure Cognitive Search index

Crie um índice da Pesquisa Cognitiva do Azure para representar os dados que você está interessado em pesquisar, filtrar e aplicar melhorias.Create an Azure Cognitive Search index to represent the data that you're interested in searching, filtering, and applying enhancements to. Crie o índice emitindo uma solicitação PUT para https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}?api-version={{api-version}}.Create the index by issuing a PUT request to https://{{search-service-name}}.search.windows.net/indexes/{{index-name}}?api-version={{api-version}}. O Postman substituirá símbolos colocados entre chaves duplas (como {{search-service-name}}, {{index-name}} e {{api-version}}) pelos valores que você definir em Configurar o Postman.Postman replaces symbols that are enclosed in double braces (such as {{search-service-name}}, {{index-name}}, and {{api-version}}) with the values that you set in Configure Postman. Se usar outra ferramenta para emitir os comandos REST, você precisará substituir essas variáveis por conta própria.If you use a different tool to issue your REST commands, you must substitute those variables yourself.

Defina a estrutura do índice da Pesquisa Cognitiva do Azure no corpo da solicitação.Set the structure of your Azure Cognitive Search index in the body of the request. No Postman, depois de definir os cabeçalhos api-key e Content-type, vá para o painel Corpo da solicitação.In Postman, after you set the api-key and Content-type headers, go to the Body pane of the request. Você deverá ver o seguinte JSON.You should see the following JSON. Se não vir, selecione Bruto > JSON (aplicativo/json) e, em seguida, cole o seguinte código como o corpo:If you don't, select Raw > JSON (application/json), and then paste the following code as the body:

{
    "name": "{{index-name}}",
    "fields": [
        { "name": "address", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "categories", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "city", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false },
        { "name": "country", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "latitude", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "longitude", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "name", "type": "Edm.String", "filterable": false, "sortable": false, "facetable": false },
        { "name": "postalCode", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "province", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "reviews_date", "type": "Edm.DateTimeOffset", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "reviews_dateAdded", "type": "Edm.DateTimeOffset", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "reviews_rating", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "reviews_text", "type": "Edm.String", "filterable": false,  "sortable": false, "facetable": false },
        { "name": "reviews_title", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "reviews_username", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "AzureSearch_DocumentKey", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false, "key": true },
        { "name": "metadata_storage_content_type", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "metadata_storage_size", "type": "Edm.Int64", "searchable": false, "filterable": false, "sortable": false, "facetable": false},
        { "name": "metadata_storage_last_modified", "type": "Edm.DateTimeOffset", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "metadata_storage_name", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "metadata_storage_path", "type": "Edm.String", "searchable": false, "filterable": false, "sortable": false, "facetable": false },
        { "name": "Sentiment", "type": "Collection(Edm.Double)", "searchable": false, "filterable": true, "retrievable": true, "sortable": false, "facetable": true },
        { "name": "Language", "type": "Edm.String", "filterable": true, "sortable": false, "facetable": true },
        { "name": "Keyphrases", "type": "Collection(Edm.String)", "filterable": true, "sortable": false, "facetable": true }
    ]
}

Essa definição de índice é uma combinação de dados que você deseja apresentar ao usuário (o nome do hotel, o conteúdo da avaliação, a data), metadados de pesquisa e dados de melhoria de IA (sentimento, frases-chave e idioma).This index definition is a combination of data that you'd like to present to the user (the name of the hotel, review content, the date), search metadata, and AI enhancement data (Sentiment, Keyphrases, and Language).

Selecione Enviar para emitir a solicitação PUT.Select Send to issue the PUT request. Você deverá ver o status 201 - Created.You should see the status 201 - Created. Se você vir um status diferente, no painel Corpo, procure uma resposta JSON que contenha uma mensagem de erro.If you see a different status, in the Body pane, look for a JSON response that contains an error message.

Criar a fonte de dadosCreate the datasource

Em seguida, conecte o Azure Cognitive Search aos dados de hotéis armazenados no armazenamento de blobs.Next, connect Azure Cognitive Search to the hotel data you stored in Blob storage. Para criar a fonte de dados, envie uma solicitação POST para https://{{search-service-name}}.search.windows.net/datasources?api-version={{api-version}}.To create the datasource, send a POST request to https://{{search-service-name}}.search.windows.net/datasources?api-version={{api-version}}. Você precisa definir os cabeçalhos api-key e Content-Type, conforme discutido anteriormente.You must set the api-key and Content-Type headers as discussed earlier.

No Postman, vá para a solicitação Criar Fonte de Dados e, em seguida, para o painel Corpo.In Postman, go to the Create Datasource request, and then to the Body pane. Você deverá ver o seguinte código:You should see the following code:

{
  "name" : "{{datasource-name}}",
  "description" : "Demo files to demonstrate knowledge store capabilities.",
  "type" : "azureblob",
  "credentials" : { "connectionString" : "{{storage-connection-string}}" },
  "container" : { "name" : "{{storage-container-name}}" }
}

Selecione Enviar para emitir a solicitação POST.Select Send to issue the POST request.

Criar o conjunto de habilidadesCreate the skillset

A próxima etapa é especificar o conjunto de habilidades, que especifica as melhorias a serem aplicadas e o repositório de conhecimento no qual os resultados serão armazenados.The next step is to specify the skillset, which specifies both the enhancements to be applied and the knowledge store where the results will be stored. No Postman, selecione a guia Criar o Conjunto de Habilidades. Essa solicitação envia um PUT para https://{{search-service-name}}.search.windows.net/skillsets/{{skillset-name}}?api-version={{api-version}}.In Postman, select the Create the Skillset tab. This request sends a PUT to https://{{search-service-name}}.search.windows.net/skillsets/{{skillset-name}}?api-version={{api-version}}. Defina os cabeçalhos api-key e Content-type, assim como você fez anteriormente.Set the api-key and Content-type headers as you did earlier.

Há dois objetos grandes de nível superior: skills e knowledgeStore.There are two large top-level objects: skills and knowledgeStore. Cada objeto dentro do objeto skills é um serviço de enriquecimento.Each object inside the skills object is an enrichment service. Cada serviço de enriquecimento tem inputs e outputs.Each enrichment service has inputs and outputs. A LanguageDetectionSkill tem uma saída targetName de Language.The LanguageDetectionSkill has an output targetName of Language. O valor desse nó é usado pela maioria das outras habilidades como entrada.The value of this node is used by most of the other skills as an input. A fonte é document/Language.The source is document/Language. Essa funcionalidade de usar a saída de um nó como a entrada de outro fica ainda mais evidente na ShaperSkill, que especifica como os dados fluem para as tabelas do repositório de conhecimento.The capability of using the output of one node as the input to another is even more evident in ShaperSkill, which specifies how the data flows into the tables of the knowledge store.

O objeto knowledge_store se conecta à conta de armazenamento por meio da variável {{storage-connection-string}} do Postman.The knowledge_store object connects to the storage account via the {{storage-connection-string}} Postman variable. knowledge_store contém um conjunto de mapeamentos entre o documento aprimorado e as tabelas e colunas no repositório de conhecimento.knowledge_store contains a set of mappings between the enhanced document and tables and columns in the knowledge store.

Para gerar o conjunto de habilidades, selecione o botão Enviar no Postman para efetuar PUT da solicitação:To generate the skillset, select the Send button in Postman to PUT the request:

{
    "name": "{{skillset-name}}",
    "description": "Skillset to detect language, extract key phrases, and detect sentiment",
    "skills": [ 
        {
            "@odata.type": "#Microsoft.Skills.Text.SplitSkill", 
            "context": "/document/reviews_text", "textSplitMode": "pages", "maximumPageLength": 5000,
            "inputs": [ 
                { "name": "text", "source": "/document/reviews_text" },
                { "name": "languageCode", "source": "/document/Language" }
            ],
            "outputs": [
                { "name": "textItems", "targetName": "pages" }
            ]
        },
        {
            "@odata.type": "#Microsoft.Skills.Text.SentimentSkill",
            "context": "/document/reviews_text/pages/*",
            "inputs": [
                { "name": "text", "source": "/document/reviews_text/pages/*" },
                { "name": "languageCode", "source": "/document/Language" }
            ],
            "outputs": [
                { "name": "score", "targetName": "Sentiment" }
            ]
        },
        {
            "@odata.type": "#Microsoft.Skills.Text.LanguageDetectionSkill",
            "context": "/document",
            "inputs": [
                { "name": "text", "source": "/document/reviews_text" }
            ],
            "outputs": [
                { "name": "languageCode", "targetName": "Language" }
            ]
        },
        {
            "@odata.type": "#Microsoft.Skills.Text.KeyPhraseExtractionSkill",
            "context": "/document/reviews_text/pages/*",
            "inputs": [
                { "name": "text",  "source": "/document/reviews_text/pages/*" },
                { "name": "languageCode",  "source": "/document/Language" }
            ],
            "outputs": [
                { "name": "keyPhrases" , "targetName": "Keyphrases" }
            ]
        },
        {
            "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
            "context": "/document",
            "inputs": [
                { "name": "name",  "source": "/document/name" },
                { "name": "reviews_date",  "source": "/document/reviews_date" },
                { "name": "reviews_rating",  "source": "/document/reviews_rating" },
                { "name": "reviews_text",  "source": "/document/reviews_text" },
                { "name": "reviews_title",  "source": "/document/reviews_title" },
                { "name": "AzureSearch_DocumentKey",  "source": "/document/AzureSearch_DocumentKey" },
                { 
                    "name": "pages",
                    "sourceContext": "/document/reviews_text/pages/*",
                    "inputs": [
                        { "name": "SentimentScore", "source": "/document/reviews_text/pages/*/Sentiment" },
                        { "name": "LanguageCode", "source": "/document/Language" },
                        { "name": "Page", "source": "/document/reviews_text/pages/*" },
                        { 
                            "name": "keyphrase", "sourceContext": "/document/reviews_text/pages/*/Keyphrases/*",
                            "inputs": [
                                { "name": "Keyphrases", "source": "/document/reviews_text/pages/*/Keyphrases/*" }
                            ]
                        }
                    ]
                }
            ],
            "outputs": [
                { "name": "output" , "targetName": "tableprojection" }
            ]
        }
    ],
    "knowledgeStore": {
        "storageConnectionString": "{{storage-connection-string}}",
        "projections": [
            {
                "tables": [
                    { "tableName": "hotelReviewsDocument", "generatedKeyName": "Documentid", "source": "/document/tableprojection" },
                    { "tableName": "hotelReviewsPages", "generatedKeyName": "Pagesid", "source": "/document/tableprojection/pages/*" },
                    { "tableName": "hotelReviewsKeyPhrases", "generatedKeyName": "KeyPhrasesid", "source": "/document/tableprojection/pages/*/keyphrase/*" },
                    { "tableName": "hotelReviewsSentiment", "generatedKeyName": "Sentimentid", "source": "/document/tableprojection/pages/*/sentiment/*" }
                ],
                "objects": []
            },
            {
                "tables": [
                    { 
                        "tableName": "hotelReviewsInlineDocument", "generatedKeyName": "Documentid", "sourceContext": "/document",
                        "inputs": [
                            { "name": "name", "source": "/document/name"},
                            { "name": "reviews_date", "source": "/document/reviews_date"},
                            { "name": "reviews_rating", "source": "/document/reviews_rating"},
                            { "name": "reviews_text", "source": "/document/reviews_text"},
                            { "name": "reviews_title", "source": "/document/reviews_title"},
                            { "name": "AzureSearch_DocumentKey", "source": "/document/AzureSearch_DocumentKey" }
                        ]
                    },
                    { 
                        "tableName": "hotelReviewsInlinePages", "generatedKeyName": "Pagesid", "sourceContext": "/document/reviews_text/pages/*",
                        "inputs": [
                            { "name": "SentimentScore", "source": "/document/reviews_text/pages/*/Sentiment"},
                            { "name": "LanguageCode", "source": "/document/Language"},
                            { "name": "Page", "source": "/document/reviews_text/pages/*" }
                        ]
                    },
                    { 
                        "tableName": "hotelReviewsInlineKeyPhrases", "generatedKeyName": "kpidv2", "sourceContext": "/document/reviews_text/pages/*/Keyphrases/*",
                        "inputs": [
                            { "name": "Keyphrases", "source": "/document/reviews_text/pages/*/Keyphrases/*" }
                        ]
                    }
                ],
                "objects": []
            }
        ]
    }
}

Criar o indexadorCreate the indexer

A última etapa é criar o indexador.The final step is to create the indexer. O indexador lê os dados e ativa o conjunto de habilidades.The indexer reads the data and activates the skillset. No Postman, selecione a solicitação Criar Indexador e examine o corpo.In Postman, select the Create Indexer request, and then review the body. A definição do indexador refere-se a vários outros recursos que você já criou: a fonte de dados, o índice e o conjunto de habilidades.The definition of the indexer refers to several other resources that you already created: the datasource, the index, and the skillset.

O objeto parameters/configuration controla como o indexador ingere os dados.The parameters/configuration object controls how the indexer ingests the data. Nesse caso, os dados de entrada estão em um único documento com uma linha de cabeçalho e valores separados por vírgula.In this case, the input data is in a single document that has a header line and comma-separated values. A chave do documento é um identificador exclusivo para o documento.The document key is a unique identifier for the document. Antes da codificação, a chave do documento é a URL do documento de origem.Before encoding, the document key is the URL of the source document. Por fim, os valores de saída do conjunto de habilidades, como código de idioma, sentimento e frases-chave, são mapeados para seus locais no documento.Finally, the skillset output values, like language code, sentiment, and key phrases, are mapped to their locations in the document. Embora haja um único valor para Language, Sentiment é aplicado a cada elemento na matriz de pages.Although there's a single value for Language, Sentiment is applied to each element in the array of pages. Keyphrases é uma matriz que também é aplicada a cada elemento na matriz pages.Keyphrases is an array that's also applied to each element in the pages array.

Depois de definir os cabeçalhos api-key e Content-type e confirmar que o corpo da solicitação é semelhante ao código-fonte a seguir, selecione Enviar no Postman.After you set the api-key and Content-type headers and confirm that the body of the request is similar to the following source code, select Send in Postman. O Postman envia uma solicitação PUT para https://{{search-service-name}}.search.windows.net/indexers/{{indexer-name}}?api-version={{api-version}}.Postman sends a PUT request to https://{{search-service-name}}.search.windows.net/indexers/{{indexer-name}}?api-version={{api-version}}. A Pesquisa Cognitiva do Azure cria e executa o indexador.Azure Cognitive Search creates and runs the indexer.

{
    "name": "{{indexer-name}}",
    "dataSourceName": "{{datasource-name}}",
    "skillsetName": "{{skillset-name}}",
    "targetIndexName": "{{index-name}}",
    "parameters": {
        "configuration": {
            "dataToExtract": "contentAndMetadata",
            "parsingMode": "delimitedText",
            "firstLineContainsHeaders": true,
            "delimitedTextDelimiter": ","
        }
    },
    "fieldMappings": [
        {
            "sourceFieldName": "AzureSearch_DocumentKey",
            "targetFieldName": "AzureSearch_DocumentKey",
            "mappingFunction": { "name": "base64Encode" }
        }
    ],
    "outputFieldMappings": [
        { "sourceFieldName": "/document/reviews_text/pages/*/Keyphrases/*", "targetFieldName": "Keyphrases" },
        { "sourceFieldName": "/document/Language", "targetFieldName": "Language" },
        { "sourceFieldName": "/document/reviews_text/pages/*/Sentiment", "targetFieldName": "Sentiment" }
    ]
}

Executar o indexadorRun the indexer

Na portal do Azure, vá para a página Visão geral do serviço da Pesquisa Cognitiva do Azure.In the Azure portal, go to the Azure Cognitive Search service's Overview page. Selecione a guia Indexadores e, em seguida, selecione hotels-reviews-ixr.Select the Indexers tab, and then select hotels-reviews-ixr. Se o indexador ainda não tiver sido executado, selecione Executar.If the indexer hasn't already run, select Run. A tarefa de indexação pode gerar alguns avisos relacionados ao reconhecimento de idioma.The indexing task might raise some warnings related to language recognition. Os dados incluem algumas avaliações escritas em idiomas que ainda não têm suporte das habilidades cognitivas.The data includes some reviews that are written in languages that aren't yet supported by the cognitive skills.

Próximas etapasNext steps

Agora que você enriqueceu seus dados usando os Serviços Cognitivos e projetou os resultados em um repositório de conhecimento, use o Gerenciador de Armazenamento ou o Power BI para explorar o conjunto de dados enriquecido.Now that you've enriched your data by using Cognitive Services and projected the results to a knowledge store, you can use Storage Explorer or Power BI to explore your enriched data set.

Para saber como explorar esse repositório de conhecimento usando o Gerenciador de Armazenamento, confira este passo a passo:To learn how to explore this knowledge store by using Storage Explorer, see this walkthrough:

Para saber como conectar esse repositório de conhecimento ao Power BI, confira este passo a passo:To learn how to connect this knowledge store to Power BI, see this walkthrough:

Se desejar repetir esse exercício ou experimentar um passo a passo de aprimoramento de IA diferente, exclua o indexador hotel-reviews-idx.If you want to repeat this exercise or try a different AI enrichment walkthrough, delete the hotel-reviews-idxr indexer. A exclusão do indexador redefine o contador de transações diárias gratuito para zero.Deleting the indexer resets the free daily transaction counter to zero.