Indexadores na Pesquisa Cognitiva do Azure

Um indexante em Azure Cognitive Search é um crawler que extrai conteúdo pescador de fontes de dados em nuvem e povoa um índice de pesquisa usando mapeamentos campo-a-campo entre dados de origem e um índice de pesquisa. Esta abordagem é por vezes referida como um "modelo de puxar" porque o serviço de pesquisa retira dados sem ter de escrever qualquer código que adicione dados a um índice. Os indexantes também impulsionam as capacidades de enriquecimento de IA da Pesquisa Cognitiva, integrando o processamento externo de conteúdos a caminho de um índice.

Os indexantes são apenas em nuvem, com indexadores individuais para fontes de dados suportadas. Ao configurar um indexer, irá especificar uma fonte de dados (origem) e um índice de pesquisa (destino). Várias fontes, 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 num calendário de atualização de dados recorrente que funciona com a frequência de cinco em cinco minutos. Atualizações mais frequentes requerem um "modelo push" que atualiza simultaneamente os dados tanto em Azure Cognitive Search como na sua fonte de dados externos.

Cenários indexantes e casos de utilização

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

Scenario Estratégia
Fonte única de dados Este padrão é o mais simples: uma fonte de dados é o único fornecedor de conteúdo para um índice de pesquisa. A maioria das fontes de dados suportadas fornecem alguma forma de deteção de alterações para que os indexantes subsequentes captem a diferença quando o conteúdo é adicionado ou atualizado na fonte.
Múltiplas fontes de dados Uma especificação indexante pode ter apenas uma fonte de dados, mas o próprio índice de pesquisa pode aceitar conteúdo de várias fontes, onde cada corrida de indexante traz novos conteúdos de um fornecedor de dados diferente. Cada fonte pode contribuir com a sua quota de documentos completos, ou preencher campos selecionados em cada documento. Para um olhar mais atento sobre este cenário, consulte Tutorial: Índice de várias fontes de dados.
Vários indexadores Várias fontes de dados são tipicamente emparelhadas com vários indexantes se precisar de variar os parâmetros de tempo de execução, o horário ou os mapeamentos de campo.

A escala inter-região fora da Procura Cognitiva é outro cenário. Pode ter cópias do mesmo índice de pesquisa em diferentes regiões. Para sincronizar o conteúdo do índice de pesquisa, pode ter vários indexantes a puxar da mesma fonte de dados, onde cada indexante tem como alvo 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 multi-indexante, onde cada indexante visa um subconjunto dos dados.
Transformação de conteúdos Os indexantes impulsionam o enriquecimento de IA. As transformações de conteúdo são definidas numa habilidade que se anexa ao indexante.

Supported data sources (Origens de dados suportadas)

Os indexantes rastejam lojas de dados em Azure e fora de Azure.

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

As ligações indexantes a fontes de dados remotas podem ser feitas utilizando ligações padrão da Internet (públicas) ou ligações privadas encriptadas quando utiliza redes virtuais Azure para aplicações de clientes. Também pode configurar ligações para autenticar usando uma identidade gerida. Para obter mais informações sobre ligações seguras, consulte o Indexer acede a conteúdos protegidos por funcionalidades de segurança da rede Azure e Ligue-se a uma fonte de dados utilizando uma identidade gerida.

Fases de indexação

Numa execução inicial, quando o índice estiver vazio, um indexante lerá em todos os dados fornecidos na tabela ou no recipiente. Nas execuções subsequentes, o indexante pode geralmente detetar e recuperar apenas os dados que mudaram. Para os dados blob, a deteção de alterações é automática. Para outras fontes de dados como SQL do Azure ou Azure Cosmos DB, a deteção de alterações deve ser ativada.

Para cada documento que recebe, um indexante implementa ou coordena várias etapas, desde a recuperação do documento até uma "entrega" final do motor de busca para indexação. Opcionalmente, um indexante também impulsiona a execução e saídas de skillset, assumindo que um skillset é definido.

Estágios indexantes

Fase 1: Rachadura de documento

A fissuração de documentos é o processo de abertura de ficheiros e de extração de conteúdos. O conteúdo baseado em texto pode ser extraído de ficheiros de um serviço, linhas numa mesa ou itens em recipiente ou recolha. Se adicionar uma habilidade de habilidade e habilidades de imagem, a fissura do documento também pode extrair imagens e fila-las para processamento de imagem.

Dependendo da fonte de dados, o indexante tentará diferentes operações para extrair conteúdo potencialmente indexável:

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

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

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

Fase 2: Mapeamentos de campo

Um indexante extrai texto de um campo de origem e envia-o para um campo de destino numa loja de índice ou conhecimento. Quando os nomes de campo e os tipos de dados coincidem, o caminho é claro. No entanto, pode querer nomes ou tipos diferentes na saída, caso em que precisa de dizer ao indexante como mapear o campo.

Para especificar os mapeamentos de campo, insira os campos de origem e destino na definição do indexante.

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

Fase 3: Execução de Skillset

A execução de Skillset é um passo opcional que invoca o processamento de IA incorporado ou personalizado. Os skillsets podem adicionar reconhecimento de caracteres óticos (OCR) ou outras formas de análise de imagem se o conteúdo for binário. Skillsets também podem adicionar processamento de linguagem natural. Por exemplo, pode adicionar tradução de texto ou extração de frases-chave.

Qualquer que seja a transformação, a execução skillset é onde o enriquecimento ocorre. Se um indexante é um oleoduto, pode pensar num skillset como um "pipeline dentro do oleoduto".

Fase 4: Mapeamentos de campo de saída

Se incluir um skillset, terá de especificar os mapeamentos de campo de saída na definição do indexante. A saída de um skillset manifesta-se internamente como uma estrutura de árvores referida como um documento enriquecido. Os mapeamentos de campo de saída permitem-lhe selecionar quais as partes desta árvore para mapear em campos no seu índice.

Apesar da semelhança em nomes, mapeamentos de campo de saída e mapeamentos de campo constroem associações de diferentes fontes. Os mapeamentos de campo associam o conteúdo do campo de origem a um campo de destino num índice de pesquisa. Os mapeamentos de campo de saída associam o conteúdo de um documento interno enriquecido (saídas de competências) aos campos de destino no índice. Ao contrário dos mapeamentos de campo, que são considerados opcionais, é necessário um mapeamento de campo 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 indexante da amostra das fases indexantes: rachaduras de documentos, mapeamentos de campo, execução de skillset e mapeamentos de campo de saída.

sessão de depurar amostra

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 indexantes requerem um objeto de fonte de dados que fornece uma cadeia de ligação e possivelmente credenciais. Ligue para a classe Create Data Source (REST) ou SearchIndexerDataSourceConnection para criar o recurso.

As fontes de dados são objetos independentes. Vários indexantes podem usar o mesmo objeto de origem de dados para carregar mais do que um índice de cada vez.

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, deve ter um índice pré-finido que contenha campos-alvo correspondentes para quaisquer campos de origem na sua fonte de dados externa. Os campos precisam de corresponder pelo nome e pelo tipo de dados. Caso contrário, pode definir mapeamentos de campo para estabelecer a associação. Para obter mais informações sobre a estruturação de um índice, consulte Criar uma classe Índice (REST) ou SearchIndex.

Dica

Apesar de os indexadores não poderem gerar um índice para si, o assistente Importar dados do portal pode ser útil. Na maioria dos casos, o assistente pode inferir um esquema de índice a partir dos metadados existentes na origem, apresentando um esquema de índice preliminar que pode editar em linha enquanto o assistente está ativo. Assim que o índice é criado no serviço, as outras edições no portal são limitadas principalmente à adição de novos campos. Considere o assistente para criar, mas não para rever um índice. Para aprendizagem prática, siga os passos no portal de instruções.

Passo 3: Criar e executar (ou programar) o indexante

Por predefinição, a primeira execução do indexante ocorre quando cria um indexante no serviço de pesquisa. Pode definir a propriedade "desativada" num indexante para criá-la sem executá-la.

Quaisquer erros ou avisos sobre o acesso a dados ou validação de skillset ocorrerão durante a execução do indexante. Até que a execução do indexante comece, objetos dependentes, tais como fontes de dados e habilidades, são passivos no serviço de pesquisa.

Após a primeira execução do indexante, pode revê-lo a pedido usando o Índice de Execução, ou pode definir um horário recorrente.

Pode monitorizar o estado do indexante no portal ou através da API do Estado do Indexante. Também deve fazer consultas no índice para verificar se o resultado é o que esperava.

Os indexantes não têm recursos de processamento dedicados. Com base nisto, o estado dos indexantes pode mostrar-se inativo antes de funcionar (dependendo de outros trabalhos na fila) e os tempos de execução podem não ser previsíveis. Outros fatores também definem o desempenho do indexante, tais como o tamanho do documento, a complexidade do documento, a análise de imagem, entre outros.

Passos seguintes

Agora que foi introduzido nos indexadores, o próximo passo é rever as propriedades e parâmetros do indexante, agendamento e monitorização do indexante. Em alternativa, pode voltar à lista de fontes de dados apoiadas para obter mais informações sobre uma fonte específica.