Pesquisar o conteúdo do Armazenamento de Blobs do Azure

Pesquisar entre os diversos tipos de conteúdo armazenados no Armazenamento de Blobs do Azure pode ser um problema difícil de resolver, mas a IA do Azure Search fornece integração profunda na camada de conteúdo, extraindo e inferindo informações textuais, que podem ser consultadas em um índice de pesquisa.

Neste artigo, examine o fluxo de trabalho básico para extrair conteúdo e metadados de blobs e enviá-lo para um índice de pesquisa na IA do Azure Search. O índice resultante pode ser consultado usando a pesquisa de texto completo. Opcionalmente, você pode enviar conteúdo de blob processado para um repositório de conhecimento para cenários que não de pesquisa.

Observação

Já está familiarizado com o fluxo de trabalho e a composição? A próxima etapa é configurar um indexador de blob.

Adicionar pesquisa de texto completo aos dados do blob

O Azure AI Search é um serviço de pesquisa autônomo que dá suporte a cargas de trabalho de indexação e consulta em índices definidos pelo usuário que contêm seu conteúdo pesquisável privado hospedado na nuvem. A colocalização de seu conteúdo pesquisável com o mecanismo de consulta na nuvem é necessária para o desempenho, retornando resultados em uma velocidade que os usuários esperam das consultas de pesquisa.

A IA do Azure Search integra-se ao Armazenamento de Blobs do Azure na camada de indexação, importando o conteúdo do blob como documentos de pesquisa que são indexados nos índices invertidos e em outras estruturas de consulta que dão suporte a consultas de texto de forma livre e de expressões de filtro. Como o conteúdo do blob é indexado em um índice de pesquisa, você pode usar uma variedade completa de recursos de consulta na IA do Azure Search para encontrar informações no conteúdo do blob.

As entradas são seus blobs, em um único contêiner, no armazenamento de blobs do Azure. Os blobs podem ser praticamente qualquer tipo de dados de texto. Se seus blobs contiverem imagens, você poderá adicionar enriquecimento de IA para criar e extrair texto e recursos de imagens.

A saída é sempre um índice da IA do Azure Search usada para pesquisa rápida de texto, recuperação e exploração nos aplicativos cliente. No meio disso, está a própria arquitetura de pipeline de indexação. O pipeline é baseado no recurso indexador, discutido mais adiante neste artigo.

Depois que o índice é criado e preenchido, ele existe independentemente do contêiner de blob, mas você pode executar novamente as operações de indexação para atualizar seu índice com base nos documentos alterados. As informações de carimbo de data/hora em blobs individuais são usadas para detecção de alteração. Você pode optar pela execução agendada ou indexação sob demanda como o mecanismo de atualização.

Recursos usados em uma solução de pesquisa de blobs

Você precisará da IA do Azure Search, do Armazenamento de Blobs do Azure e de um cliente. Normalmente, a IA do Azure Search é um dos vários componentes de uma solução em que o código do aplicativo emite solicitações de API de consulta e processa a resposta. Você também pode escrever o código do aplicativo para lidar com a indexação, embora para tarefas improvisadas e testes de prova de conceito, é comum usar o portal do Azure como o cliente de pesquisa.

No Armazenamento de Blobs, você precisa ter um contêiner que forneça o conteúdo de origem. Você pode definir os critérios de inclusão e exclusão de arquivo e especificar as partes de um blob que são indexadas na IA do Azure Search.

Você pode iniciar diretamente em sua página do portal da conta de armazenamento.

  1. Na página de navegação à esquerda, em Gerenciamento de dados, selecione Pesquisa de IA do Azure para selecionar ou criar um serviço de pesquisa.

  2. Siga as etapas no assistente para extrair e, como opção, criar conteúdo pesquisável com base em seus blobs. O fluxo de trabalho é o assistente Importar dados. O fluxo de trabalho cria um indexador, uma fonte de dados, um índice e um conjunto de habilidades de opção no serviço Azure AI Search.

    Screenshot of the Azure AI Search wizard in the Azure Storage portal page.

  3. Use o Gerenciador de pesquisa na página do portal de pesquisa para consultar seu conteúdo.

O assistente é o melhor ponto de partida, mas você descobrirá opções mais flexíveis ao configurar um indexador de blob por conta própria. Você pode usar um cliente REST. Tutorial: Indexar e pesquisar dados semiestruturados (blobs JSON) orienta você nas etapas de chamada da API REST.

Como os blobs são indexados

Por padrão, a maioria dos blobs é indexada como um único documento de pesquisa no índice, incluindo blobs com conteúdo estruturado, como JSON ou CSV, que são indexados como uma única parte do texto. Mas se os documentos JSON ou CSV tiverem uma estrutura interna (delimitadores), você pode atribuir modos de análise para gerar documentos de pesquisa individuais para cada linha ou elemento:

Um documento composto ou inserido (como um arquivo ZIP, um documento do Word com um email do Outlook inserido contendo anexos ou ainda um arquivo .MSG com anexos) também é indexado como um documento individual. Por exemplo, todas as imagens extraídas dos anexos de um arquivo .MSG serão retornadas no campo normalized_images. Se você tiver imagens, considere adicionar enriquecimento de IA para aproveitar ao máximo a pesquisa desse conteúdo.

O conteúdo textual de um documento é extraído para um campo de cadeia de caracteres chamado "content". Você também pode extrair metadados padrão e definidos pelo usuário.

Observação

A IA do Azure Search impõe limites de indexador para quanto texto é extraído dependendo do tipo de preço. Um aviso será exibido na resposta de status do indexador se os documentos estiverem truncados.

Usar um indexador de blob para extração de conteúdo

Um indexador é um subsserviço com reconhecimento de fonte de dados na IA do Azure Search, equipado com lógica interna para dados de amostragem, leitura e recuperação de dados e metadados, e serialização de dados de formatos nativos nos documentos JSON para subsequente importação.

Os blobs no Armazenamento do Microsoft Azure são indexados usando o indexador de blobs. Você pode invocar esse indexador usando o comando Azure AI Search no Armazenamento do Microsoft Azure, o assistente de importar dados, uma API REST ou o SDK do .NET. No código, use esse indexador definindo o tipo e fornecendo informações de conexão que incluem uma conta de Armazenamento do Azure com um contêiner de blobs. É possível subagrupar seus blobs criando um diretório virtual, que você pode então passar como um parâmetro, ou filtrando uma extensão de tipo de arquivo.

Um indexador "quebra um documento", abrindo um blob para inspecionar o conteúdo. Depois de se conectar à fonte de dados, é a primeira etapa no pipeline. Para dados de blob, este é o local onde são detectados PDFs, documentos do Office e outros tipos de conteúdo. A quebra de documento com a extração de texto não é cobrada. Se seus blobs contiverem conteúdo de imagem, as imagens serão ignoradas, a menos que você adicione enriquecimento de IA. A indexação padrão aplica-se somente ao conteúdo de texto.

O indexador de Blob vem com parâmetros de configuração e oferece suporte ao controle de alterações, caso os dados subjacentes forneçam informações suficientes. Saiba mais sobre a funcionalidade principal no indexador de Blob.

Camadas de acesso compatíveis

As camadas de acesso do armazenamento de Blobs incluem as frequentes, esporádicas e de arquivo. Somente as frequentes e esporádicas podem ser acessadas por indexadores.

Tipos de conteúdo com suporte

Quando você executa um indexador de Blob em um contêiner, pode extrair texto e metadados dos seguintes tipos de conteúdo com uma única consulta:

  • CSV (consulte Indexando BLOBs CSV)
  • EML
  • EPUB
  • GZ
  • HTML
  • JSON (consulte Como indexar blobs JSON)
  • KML (XML para representações geográficas)
  • Formatos do Microsoft Office: DOCX/DOC/DOCM, XLSX/XLS/XLSM, PPTX/PPT/PPTM, MSG (emails do Outlook) e XML (WORD XML 2003 e 2006)
  • Abrir formatos de documento: ODT, ODS, ODP
  • PDF
  • Arquivos de texto sem formatação (consulte também Como indexar texto sem formatação)
  • RTF
  • XML
  • ZIP

Controlando quais blobs serão indexados

É possível controlar quais blobs são indexados e quais são ignorados, pelo tipo de arquivo do blob ou ao definir propriedades no próprio blob, fazendo com que o indexador os ignore.

Inclua extensões de arquivo específicas definindo "indexedFileNameExtensions" como uma lista separada por vírgulas de extensões de arquivo (com um ponto à esquerda). Exclua as extensões de arquivo específicas definindo "excludedFileNameExtensions" nas extensões que devem ser ignoradas. Se a mesma extensão estiver nas duas listas, ela será excluída da indexação.

PUT /indexers/[indexer name]?api-version=2023-11-01
{
    "parameters" : { 
        "configuration" : { 
            "indexedFileNameExtensions" : ".pdf, .docx",
            "excludedFileNameExtensions" : ".png, .jpeg" 
        } 
    }
}

Adicionar metadados "ignorados" ao blob

Os parâmetros de configuração do indexador se aplicam a todos os blobs no contêiner ou na pasta. Às vezes, pode-se desejar controlar como blobs individuais são indexados.

Adicione as propriedades de metadados e valores a seguir aos blobs no Armazenamento de Blobs. Quando o indexador encontrar essa propriedade, ele ignorará o blob ou seu conteúdo na execução da indexação.

Nome da propriedade Valor de propriedade Explicação
"AzureSearch_Skip" "true" Instrui o indexador de blobs a ignorar o blob por completo. Não há nenhuma tentativa de extração de metadados nem de conteúdo. Isso é útil quando um blob específico falha repetidamente e interrompe o processo de indexação.
"AzureSearch_SkipContent" "true" Isso equivale à configuração "dataToExtract" : "allMetadata" descrita acima com um blob específico como escopo.

Indexação dos metadados de blobs

Um cenário comum que facilita a classificação de blobs de qualquer tipo de conteúdo é a indexação dos metadados personalizados e propriedades do sistema para cada blob. Dessa forma, as informações de todos os blobs são indexadas, independentemente do tipo de documento, armazenadas em um índice no seu serviço de pesquisa. Usando o novo índice, você poderá classificar, filtrar e aprimorar em todo o conteúdo do armazenamento de Blob.

Observação

As marcas de índice de blob são indexadas nativamente pelo serviço de armazenamento de Blob e expostas para consulta. Se os atributos de chave/valor de seus blobs exigem recursos de indexação e filtragem, as marcas de índice de blob devem ser utilizadas em vez de metadados.

Para saber mais sobre o Índice de Blobs, confira Gerenciar e localizar dados no Armazenamento de Blobs do Azure com o Índice de Blobs.

Pesquisar conteúdo de blob em um índice de pesquisa

A saída de um indexador é um índice de pesquisa, usado para exploração interativa usando texto livre e consultas filtradas em um aplicativo cliente. Para a exploração e a verificação iniciais do conteúdo, é recomendável começar com o Gerenciador de Pesquisa no portal para examinar a estrutura do documento. No Gerenciador de pesquisa, você pode usar:

Uma solução mais permanente é coletar entradas de consulta e apresentar a resposta como resultado da pesquisa em um aplicativo cliente. O tutorial em C# a seguir explica como criar um aplicativo de pesquisa: Adicionar pesquisa a um aplicativo ASP.NET Core (MVC).

Próximas etapas