Editar

Compartilhar via


Indexar o conteúdo do arquivo e os metadados usando o Azure AI Search

Azure AI Search
Armazenamento do Blobs do Azure
Armazenamento de Tabelas do Azure

Este artigo demonstra como criar um serviço de pesquisa que permite aos usuários pesquisar documentos com base no conteúdo do documento, além de todos os metadados associados aos arquivos.

Implemente esse serviço usando vários indexadores do Azure AI Search.

Este artigo usa um exemplo de carga de trabalho para demonstrar como criar um índice de pesquisa individual baseado em arquivos do Armazenamento de Blobs do Azure. Os metadados do arquivo são armazenados no Armazenamento de Tabelas do Azure.

Arquitetura

Diagrama que mostra uma arquitetura que permite a pesquisa com base no conteúdo do arquivo e metadados.

Baixe um arquivo do PowerPoint dessa arquitetura.

Fluxo de dados

  1. Os arquivos são armazenados no Armazenamento de Blobs, possivelmente, com uma quantidade limitada de metadados (por exemplo, o autor do documento).
  2. Os metadados adicionais são armazenados no Armazenamento de Tabelas, que podem armazenar consideravelmente mais informações para cada documento.
  3. Um indexador lê o conteúdo de cada arquivo, com os metadados de blob, e armazena os dados no índice de pesquisa.
  4. Outro indexador lê os metadados adicionais da tabela e os armazena no mesmo índice de pesquisa.
  5. Uma consulta de pesquisa é enviada ao serviço de pesquisa. A consulta retorna os documentos correspondentes, com base no conteúdo e nos metadados do documento.

Componentes

  • O Armazenamento de Blobs fornece armazenamento em nuvem econômico para dados de arquivos, incluindo dados em formatos como PDF, HTML e CSV e em arquivos do Microsoft 365.
  • O Armazenamento de Tabelas fornece armazenamento para dados estruturados não relacionais. Neste cenário, ele é usado para armazenar os metadados de cada documento.
  • O Azure AI Search é um serviço de pesquisa totalmente gerenciado que fornece infraestrutura, APIs e ferramentas para criar uma experiência de pesquisa sofisticada.

Alternativas

Este cenário usa indexadores do Azure AI Search para descobrir automaticamente novos conteúdos em fontes de dados com suporte, como armazenamento de blobs e tabelas e, em seguida, adicioná-los ao índice de pesquisa. Como alternativa, você pode usar as APIs fornecidas pelo Azure AI Search para enviar os dados por push ao índice de pesquisa. No entanto, se você fizer isso, precisará escrever um código para enviar os dados por push ao índice de pesquisa e para analisar e extrair o texto dos documentos binários que você deseja pesquisar. O indexador de Armazenamento de Blobs dá suporte a vários formatos de documentos, o que simplifica consideravelmente o processo de extração e indexação de texto.

Além disso, se você usar indexadores, poderá, opcionalmente, enriquecer os dados como parte de um pipeline de indexação. Por exemplo, você pode usar os serviços de IA do Azure para executar o reconhecimento óptico de caracteres (OCR) ou a análise visual das imagens em documentos, detectar o idioma dos documentos ou traduzi-los. Você também pode definir habilidades personalizadas para enriquecer os dados de maneiras relevantes para seu cenário de negócios.

Essa arquitetura usa os armazenamentos de blobs e tabelas porque eles são econômicos e eficientes. Esse design também permite o armazenamento combinado de documentos e metadados em uma só conta de armazenamento. As fontes de dados alternativas com suporte para os próprios documentos incluem o Azure Data Lake Storage e os Arquivos do Azure. Os metadados do documento podem ser armazenados em qualquer outra fonte de dados com suporte que contenha dados estruturados, como o Banco de Dados SQL do Azure e o Azure Cosmos DB.

Detalhes do cenário

Como pesquisar o conteúdo do arquivo

Essa solução permite que os usuários pesquisem documentos com base no conteúdo do arquivo e nos metadados adicionais armazenados separadamente para cada documento. Além de pesquisar o conteúdo de texto de um documento, um usuário pode desejar pesquisar o autor do documento, o tipo de documento (como artigo ou relatório) ou o impacto nos negócios (alto, médio ou baixo).

O Azure AI Search é um serviço de pesquisa totalmente gerenciado que pode criar índices de pesquisa contendo as informações que você deseja permitir que os usuários pesquisem.

Como os arquivos pesquisados neste cenário são documentos binários, você pode armazená-los no Armazenamento de Blobs. Nesse caso, use o indexador interno do Armazenamento de Blobs no Azure AI Search para extrair automaticamente o texto dos arquivos e adicionar o conteúdo deles ao índice de pesquisa.

Como pesquisar os metadados do arquivo

Caso você deseje incluir mais informações sobre os arquivos, associe os metadados diretamente aos blobs, sem usar um armazenamento separado. O indexador de pesquisa interno do Armazenamento de Blobs pode até ler esses metadados e colocá-los no índice de pesquisa. Dessa forma, os usuários podem pesquisar os metadados com o conteúdo do arquivo. No entanto, o volume de metadados é limitado a 8 KB por blob, ou seja, a quantidade de informações que você pode colocar em cada blob é bem pequena. Você pode optar por armazenar apenas as informações mais críticas diretamente nos blobs. Neste cenário, somente o autor do documento é armazenado no blob.

Para superar essa limitação de armazenamento, coloque os metadados adicionais em outra fonte de dados que tenha um indexador com suporte, como o Armazenamento de Tabelas. Você pode adicionar o tipo de documento, o impacto nos negócios e outros valores de metadados como colunas separadas na tabela. Se você configurar o indexador interno do Armazenamento de Tabelas para ter como destino o mesmo índice de pesquisa do indexador de blobs, os metadados dos armazenamentos de blobs e tabelas serão combinados para cada documento no índice de pesquisa.

Como usar várias fontes de dados em um só índice de pesquisa

Para garantir que ambos os indexadores apontem para o mesmo documento no índice de pesquisa, a chave do documento no índice de pesquisa está definida como um identificador exclusivo do arquivo. Esse identificador exclusivo é usado para se referir ao arquivo nas duas fontes de dados. O indexador de blobs usa metadata_storage_path como a chave do documento, por padrão. A propriedade metadata_storage_path armazena a URL completa do arquivo no Armazenamento de Blobs, por exemplo, https://contoso.blob.core.windows.net/files/paper/Resilience in Azure.pdf. O indexador executa a codificação Base64 no valor para garantir que não haja caracteres inválidos na chave do documento. O resultado é uma chave de documento exclusiva, como aHR0cHM6...mUucGRm0.

Se você adicionar o metadata_storage_path como uma coluna no Armazenamento de Tabelas, saberá exatamente a qual blob os metadados das outras colunas pertencem, de modo que você possa usar qualquer valor de PartitionKey e de RowKey na tabela. Por exemplo, você pode usar o nome do contêiner de blob como a PartitionKey e a URL completa codificada em Base64 do blob como a RowKey, garantindo também que não haja caracteres inválidos nessas chaves.

Em seguida, use um mapeamento de campo no indexador de tabelas para mapear a coluna metadata_storage_path (ou outra coluna) no Armazenamento de Tabelas para o campo de chave do documento metadata_storage_path no índice de pesquisa. Se você aplicar a função base64Encode ao mapeamento de campo, acabará com a mesma chave de documento (aHR0cHM6...mUucGRm0, no exemplo anterior) e os metadados do Armazenamento de Tabelas serão adicionados ao mesmo documento extraído do Armazenamento de Blobs.

Observação

A documentação do indexador de tabela afirma que você não deve definir um mapeamento de campo para um campo de cadeia de caracteres exclusivo alternativo na tabela. O motivo é que, por padrão, o indexador concatena a PartitionKey e a RowKey como a chave do documento. Como você já depende da chave do documento, conforme configurado pelo indexador de blobs (que é a URL completa codificada em Base64 do blob), é apropriado e compatível com este cenário criar um mapeamento de campo para garantir que ambos os indexadores se refiram ao mesmo documento no índice de pesquisa.

Como alternativa, você pode mapear a RowKey (que é definida como a URL completa codificada em Base64 do blob) para a chave do documento metadata_storage_path diretamente, sem armazená-la separadamente e codificá-la em Base64 como parte do mapeamento de campo. No entanto, manter a URL não codificada em uma coluna separada identifica o blob ao qual ela se refere e permite que você escolha qualquer chave de partição e de linha sem afetar o indexador de pesquisa.

Possíveis casos de uso

Este cenário é apropriado aos aplicativos que exigem a capacidade de pesquisar documentos com base no conteúdo e nos metadados adicionais.

Considerações

Essas considerações implementam os pilares do Azure Well-Architected Framework​, um conjunto de princípios orientadores que você pode usar para aprimorar a qualidade de uma carga de trabalho. Para obter mais informações, confira Microsoft Azure Well-Architected Framework.

Confiabilidade

A confiabilidade garante que seu aplicativo possa cumprir os compromissos que você deve assumir com seus clientes. Para obter mais informações, confira Visão geral do pilar de confiabilidade.

A Pesquisa de IA do Azure fornece um acordo de alto nível de serviço para leituras (consulta), caso você tenha, pelo menos, duas réplicas. Ele fornece um SLA alto para atualizações (atualização dos índices de pesquisa), caso você tenha, pelo menos, três réplicas. Portanto, você deverá provisionar, no mínimo, duas réplicas, se desejar que os clientes possam fazer pesquisas de maneira confiável, e três, se as alterações reais no índice também precisarem ser operações de alta disponibilidade.

O Armazenamento do Azure sempre armazena várias cópias dos seus dados para ajudar a protegê-los contra eventos planejados e não planejados. O Armazenamento do Azure fornece opções adicionais de redundância para replicar os dados entre regiões. Essas proteções se aplicam aos dados do armazenamento de blobs e tabelas.

Segurança

A segurança fornece garantias contra ataques deliberados e o abuso de seus dados e sistemas valiosos. Para saber mais, confira Visão geral do pilar de segurança.

O Azure AI Search fornece controles de segurança robustos que ajudam você a implementar segurança de rede, autenticação e autorização, residência e proteção de dados e controles administrativos, ajudando a manter a segurança, a privacidade e a conformidade.

Sempre que possível, use a autenticação do Microsoft Entra para fornecer acesso ao próprio serviço de pesquisa e conecte seu serviço de pesquisa a outros recursos do Azure (como armazenamento de blobs e tabelas, neste cenário) usando uma identidade gerenciada.

Você pode se conectar por meio do serviço de pesquisa à conta de armazenamento usando um ponto de extremidade privado. Quando você usa um ponto de extremidade privado, os indexadores podem usar uma conexão privada sem exigir que o armazenamento de blobs e tabelas seja acessível publicamente.

Otimização de custo

A otimização de custos consiste em reduzir despesas desnecessárias e melhorar a eficiência operacional. Para obter mais informações, confira Visão geral do pilar de otimização de custo.

Para obter informações sobre os custos de execução deste cenário, confira esta estimativa pré-configurada na calculadora de preços do Azure. Todos os serviços descritos aqui estão configurados nessa estimativa. A estimativa refere-se a uma carga de trabalho com um tamanho total de documento de 20 GB no Armazenamento de Blobs e 1 GB de metadados no Armazenamento de Tabelas. Duas unidades de pesquisa são usadas para atender ao SLA para fins de leitura, conforme descrito na seção sobre Confiabilidade deste artigo. Para ver como o preço será alterado no seu caso de uso específico, altere as variáveis apropriadas para que correspondam ao uso esperado.

Se você analisar a estimativa, poderá ver que o custo do armazenamento de blobs e tabelas é relativamente baixo. A maior parte do custo é gerada pelo Azure AI Search, pois ele executa a indexação e a computação reais a fim de executar consultas de pesquisa.

Implantar este cenário

Para implantar esse exemplo de carga de trabalho, confira Como indexar o conteúdo do arquivo e os metadados no Azure AI Search. Use essa amostra para:

  • Criar os serviços necessários do Azure.
  • Carregar alguns exemplos de documentos no Armazenamento de Blobs.
  • Preencher o valor de metadados autor no blob.
  • Armazenar os valores de metadados tipo de documento e impacto nos negócios no Armazenamento de Tabelas.
  • Criar os indexadores que mantêm o índice de pesquisa.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Autor principal:

  • Jelle Druyts | Engenheiro principal de experiência do cliente

Outros colaboradores:

Para ver perfis não públicos do LinkedIn, entre no LinkedIn.

Próximas etapas