Extrair dados com um indexador

Concluído

Dica

Consulte a guia Texto e imagens para obter mais detalhes!

No centro das soluções de Pesquisa de IA do Azure está a criação de um índice. Um índice contém seu conteúdo pesquisável e é criado e atualizado, como era de se esperar, por um indexador.

Diagrama de um indexador extraindo documentos de uma fonte e criando um índice.

O processo de indexação começa com uma fonte de dados: o local de armazenamento dos artefatos de dados originais; por exemplo, um contêiner do repositório de blobs do Azure cheio de documentos, um banco de dados ou algum outro repositório.

O Indexador automatiza a extração e a indexação de campos de dados por meio de um pipeline de enriquecimento, no qual aplica a quebra de documento para extrair o conteúdo dos documentos de origem e aplica etapas incrementais para criar um documento hierárquico (baseado em JSON) com os campos necessários para a definição do índice.

O resultado é um índice preenchido, que pode ser consultado para retornar campos especificados de documentos que correspondem aos critérios de consulta.

Como os documentos são construídos durante a indexação

O processo de indexação funciona pela criação de um documento para cada entidade indexada. Durante a indexação, um pipeline de enriquecimento cria de maneira iterativa os documentos que combinam metadados da fonte de dados com campos enriquecidos extraídos ou gerados por habilidades. Pense em cada documento indexado como uma estrutura JSON, que é composta inicialmente por um documento com os campos de índice que você mapeou para os campos extraídos diretamente dos dados de origem, desta forma:

  • documento
    • metadata_storage_name
    • metadata_author
    • conteúdo

Quando os documentos na fonte de dados contêm imagens, você pode configurar o indexador para extrair os dados da imagem e inserir cada imagem em uma coleção normalized_images, desta forma:

  • documento
    • metadata_storage_name
    • metadata_author
    • conteúdo
    • normalized_images
      • image0
      • image1

Normalizar os dados da imagem dessa maneira permite que você use a coleção de imagens como entrada para habilidades que extraem informações dos dados de imagem.

Cada habilidade adiciona campos ao documento, por exemplo, uma habilidade que detecta o idioma no qual um documento está escrito pode armazenar sua saída em um campo de idioma, desta forma:

  • documento
    • metadata_storage_name
    • metadata_author
    • conteúdo
    • normalized_images
      • image0
      • image1
    • idioma

O documento é estruturado de maneira hierárquica e as habilidades são aplicadas a um contexto específico dentro da hierarquia, permitindo que você execute a habilidade para cada item em um nível específico do documento. Por exemplo, você pode executar uma habilidade de reconhecimento óptico de caracteres (OCR) para cada imagem na coleção de imagens normalizadas para extrair qualquer texto que eles contenham:

  • documento
    • metadata_storage_name
    • metadata_author
    • conteúdo
    • normalized_images
      • image0
        • Texto
      • image1
        • Texto
    • idioma

Os campos de saída de cada habilidade podem ser usados como entradas para outras habilidades mais adiante no pipeline, que, por sua vez, armazenam as saídas delas na estrutura do documento. Por exemplo, poderíamos usar uma habilidade de mesclar para combinar o conteúdo de texto original com o texto extraído de cada imagem para criar um campo merged_content que contenha todo o texto no documento, incluindo o texto da imagem.

  • documento
    • metadata_storage_name
    • metadata_author
    • conteúdo
    • normalized_images
      • image0
        • Texto
      • image1
        • Texto
    • idioma
    • merged_content

Os campos na estrutura do documento final, no fim do pipeline, são mapeados para campos de índice pelo indexador de uma das duas maneiras:

  • Campos extraídos diretamente dos dados de origem são mapeados para campos de índice. Esses mapeamentos podem ser implícitos (os campos são mapeados automaticamente para campos com o mesmo nome no índice) ou explícitos (um mapeamento é definido de modo a corresponder um campo de origem a um campo de índice, geralmente para renomear o campo para algo mais útil ou para aplicar uma função ao valor de dados conforme ele é mapeado).
  • Os campos de saída das habilidades no conjunto de habilidades são mapeados explicitamente de seu local hierárquico na saída para o campo de destino no índice.