Indexadores na Pesquisa Cognitiva do Azure

Um indexador no Azure Cognitive Search é um crawler que extrai conteúdos pesquisáveis de origens de dados na cloud e preenche um índice de pesquisa através de mapeamentos campo a campo entre dados de origem e um índice de pesquisa. Por vezes, esta abordagem é referida como um "modelo de solicitação" porque o serviço de pesquisa extrai dados sem ter de escrever qualquer código que adicione dados a um índice. Os indexadores também impulsionam as capacidades de melhoramento de IA do Cognitive Search, integrando o processamento externo de conteúdos a caminho de um índice.

Os indexadores são apenas na cloud, com indexadores individuais para origens de dados suportadas. Ao configurar um indexador, irá especificar uma origem de dados (origem) e um índice de pesquisa (destino). Várias origens, como Armazenamento de Blobs do Azure, têm mais propriedades de configuração específicas desse tipo de conteúdo.

Pode executar indexadores a pedido ou numa agenda de atualização de dados periódica que é executada com a frequência de cinco em cinco minutos. As atualizações mais frequentes requerem um "modelo push" que atualize simultaneamente os dados no Azure Cognitive Search e na origem de dados externa.

Cenários de indexador e casos de utilização

Pode utilizar um indexador como o único meio para a ingestão de dados ou em combinação com outras técnicas. A tabela seguinte resume os principais cenários.

Scenario Estratégia
Origem de dados única Este padrão é o mais simples: uma origem de dados é o único fornecedor de conteúdos para um índice de pesquisa. A maioria das origens de dados suportadas fornece alguma forma de deteção de alterações para que as execuções subsequentes do indexador recolham a diferença quando o conteúdo é adicionado ou atualizado na origem.
Várias origens de dados Uma especificação do indexador só pode ter uma origem de dados, mas o próprio índice de pesquisa pode aceitar conteúdos de várias origens, em que cada execução de indexador traz novos conteúdos de um fornecedor de dados diferente. Cada origem pode contribuir com a partilha de documentos completos ou preencher os campos selecionados em cada documento. Para ver mais detalhadamente este cenário, veja Tutorial: Indexar a partir de várias origens de dados.
Vários indexadores Normalmente, várias origens de dados são emparelhadas com vários indexadores se precisar de variar os parâmetros de tempo de execução, a agenda ou os mapeamentos de campos.

O aumento horizontal entre regiões da Pesquisa Cognitiva é outro cenário. Poderá ter cópias do mesmo índice de pesquisa em regiões diferentes. Para sincronizar o conteúdo do índice de pesquisa, pode ter vários indexadores a solicitar a partir da mesma origem de dados, em que cada indexador tem como destino um índice de pesquisa diferente em cada região.

A indexação paralela de conjuntos de dados muito grandes também requer uma estratégia de vários indexadores, em que cada indexador visa um subconjunto dos dados.
Transformação de conteúdo Os indexadores impulsionam o melhoramento da IA. As transformações de conteúdo são definidas num conjunto de competências que anexa ao indexador.

Supported data sources (Origens de dados suportadas)

Os indexadores pesquisam arquivos de dados no Azure e fora do Azure.

O Azure Cosmos DB para Cassandra não é suportado.

Os indexadores aceitam conjuntos de linhas achatados, como uma tabela ou vista, ou itens num contentor ou pasta. Na maioria dos casos, cria um documento de pesquisa por linha, registo ou item.

As ligações do indexador a origens de dados remotas podem ser efetuadas com ligações padrão à Internet (públicas) ou ligações privadas encriptadas quando utiliza redes virtuais do Azure para aplicações cliente. Também pode configurar ligações para autenticar com uma identidade gerida. Para obter mais informações sobre ligações seguras, veja Acesso do Indexador a conteúdos protegidos pelas funcionalidades de segurança de rede do Azure e Ligar a uma origem de dados com uma identidade gerida.

Fases de indexação

Numa execução inicial, quando o índice estiver vazio, um indexador irá ler todos os dados fornecidos na tabela ou no contentor. Nas execuções subsequentes, o indexador pode normalmente detetar e obter apenas os dados que foram alterados. Para dados de blobs, a deteção de alterações é automática. Para outras origens de dados, como SQL do Azure ou o Azure Cosmos DB, a deteção de alterações tem de estar ativada.

Para cada documento que recebe, um indexador implementa ou coordena vários passos, desde a obtenção de documentos até um "handoff" final do motor de busca para indexação. Opcionalmente, um indexador também impulsiona a execução e saídas de conjuntos de competências, assumindo que é definido um conjunto de competências.

Fases do Indexador

Fase 1: Descodificação de documentos

A descodificação de documentos é o processo de abrir ficheiros e extrair conteúdo. Os conteúdos baseados em texto podem ser extraídos de ficheiros num serviço, linhas numa tabela ou itens num contentor ou coleção. Se adicionar um conjunto de competências e competências de imagem, as quebras de documentos também podem extrair imagens e colocá-las em fila para processamento de imagens.

Consoante a origem de dados, o indexador tentará operações diferentes para extrair conteúdo potencialmente indexável:

  • Quando o documento é um ficheiro com imagens incorporadas, como um PDF, o indexador extrai texto, imagens e metadados. Os indexadores podem abrir ficheiros a partir de Armazenamento de Blobs do Azure, Azure Data Lake Storage Gen2 e SharePoint.

  • Quando o documento é um registo no SQL do Azure, o indexador irá extrair conteúdo não binário de cada campo em cada registo.

  • Quando o documento é um registo no Azure Cosmos DB, o indexador extrairá conteúdo não binário de campos e subcampos do documento do Azure Cosmos DB.

Fase 2: Mapeamentos de campos

Um indexador extrai texto de um campo de origem e envia-o para um campo de destino num índice ou arquivo de conhecimento. Quando os nomes dos campos e os tipos de dados coincidem, o caminho é claro. No entanto, poderá querer nomes ou tipos diferentes na saída, caso em que tem de indicar ao indexador como mapear o campo.

Para especificar mapeamentos de campos, introduza os campos de origem e de destino na definição do indexador.

O mapeamento de campos ocorre após a quebra do documento, mas antes das transformações, quando o indexador está a ler a partir dos documentos de origem. Quando define um mapeamento de campos, o valor do campo de origem é enviado tal como está para o campo de destino sem modificações.

Fase 3: Execução de conjuntos de competências

A execução do conjunto de competências é um passo opcional que invoca o processamento de IA incorporado ou personalizado. Os conjuntos de competências podem adicionar reconhecimento ótico de carateres (OCR) ou outras formas de análise de imagem se o conteúdo for binário. Os conjuntos de competências também podem adicionar processamento de linguagem natural. Por exemplo, pode adicionar tradução de texto ou extração de expressões-chave.

Seja qual for a transformação, a execução do conjunto de competências é onde ocorre o melhoramento. Se um indexador for um pipeline, pode considerar um conjunto de competências como um "pipeline dentro do pipeline".

Fase 4: Mapeamentos de campos de saída

Se incluir um conjunto de competências, terá de especificar mapeamentos de campos de saída na definição do indexador. A saída de um conjunto de competências é manifestada internamente como uma estrutura de árvore referida como um documento melhorado. Os mapeamentos de campos de saída permitem-lhe selecionar as partes desta árvore a mapear para campos no seu índice.

Apesar da semelhança nos nomes, os mapeamentos de campos de saída e os mapeamentos de campos criam associações de diferentes origens. Os mapeamentos de campos associam o conteúdo do campo de origem a um campo de destino num índice de pesquisa. Os mapeamentos de campos de saída associam o conteúdo de um documento melhorado interno (saídas de competências) aos campos de destino no índice. Ao contrário dos mapeamentos de campos, que são considerados opcionais, é necessário um mapeamento de campos de saída para qualquer conteúdo transformado que deva estar no índice.

A imagem seguinte mostra uma representação da sessão de depuração do indexador de exemplo das fases do indexador: quebra de documentos, mapeamentos de campos, execução de conjuntos de competências e mapeamentos de campos de saída.

sessão de depuração de exemplo

Fluxo de trabalho básico

Os indexadores podem oferecer funcionalidades que são exclusivas da origem de dados. Relativamente a isto, alguns aspetos de configuração do indexador ou da origem de dados irão variar consoante o tipo de indexador. No entanto, todos os indexadores partilham da mesma composição e requisitos básicos. Os passos que são comuns a todos os indexadores são abordados abaixo.

Passo 1: criar uma origem de dados

Os indexadores requerem um objeto de origem de dados que forneça uma cadeia de ligação e, possivelmente, credenciais. As origens de dados são objetos independentes. Vários indexadores podem utilizar o mesmo objeto de origem de dados para carregar mais do que um índice de cada vez.

Pode criar uma origem de dados com qualquer uma destas abordagens:

Passo 2: criar um índice

Um indexador irá automatizar algumas tarefas relacionadas com a ingestão de dados, mas geralmente a criação de um índice não é uma delas. Como pré-requisito, tem de ter um índice predefinido que contenha campos de destino correspondentes para quaisquer campos de origem na sua origem de dados externa. Os campos têm de corresponder por nome e tipo de dados. Caso contrário, pode definir mapeamentos de campos para estabelecer a associação.

Para obter mais informações, veja Criar um índice.

Passo 3: criar e executar (ou agendar) o indexador

Uma definição de indexador consiste em propriedades que identificam exclusivamente o indexador, especificam a origem de dados e o índice a utilizar e fornecem outras opções de configuração que influenciam os comportamentos de tempo de execução, incluindo se o indexador é executado a pedido ou com base numa agenda.

Quaisquer erros ou avisos sobre o acesso a dados ou a validação de conjuntos de competências ocorrerão durante a execução do indexador. Até que a execução do indexador seja iniciada, os objetos dependentes, como origens de dados, índices e conjuntos de competências, são passivos no serviço de pesquisa.

Para obter mais informações, veja Criar um indexador

Após a execução do primeiro indexador, pode executá-lo novamente a pedido ou configurar uma agenda.

Pode monitorizar o estado do indexador no portal ou através da API Obter Estado do Indexador. Também deve executar consultas no índice para verificar se o resultado é o que esperava.

Os indexadores não têm recursos de processamento dedicados. Com base nisto, o estado dos indexadores pode ser apresentado como inativo antes de ser executado (dependendo de outras tarefas na fila) e os tempos de execução podem não ser previsíveis. Outros fatores também definem o desempenho do indexador, como o tamanho do documento, a complexidade do documento, a análise de imagens, entre outros.

Passos seguintes

Agora que foi apresentado aos indexadores, um passo seguinte consiste em rever as propriedades e parâmetros do indexador, o agendamento e a monitorização do indexador. Em alternativa, pode voltar à lista de origens de dados suportadas para obter mais informações sobre uma origem específica.