Editar

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

Azure AI Search
Azure Blob Storage
Azure Table Storage

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 quaisquer metadados associados aos arquivos.

Você pode implementar esse serviço usando vários indexadores no Azure AI Search.

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

Arquitetura

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

Transfira um ficheiro PowerPoint desta arquitetura.

Fluxo de dados

  1. Os arquivos são armazenados no Armazenamento de Blob, possivelmente juntamente com uma quantidade limitada de metadados (por exemplo, o autor do documento).
  2. Metadados adicionais são armazenados no Armazenamento de Tabelas, que pode armazenar significativamente mais informações para cada documento.
  3. Um indexador lê o conteúdo de cada arquivo, juntamente com quaisquer 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 para o serviço de pesquisa. A consulta retorna documentos correspondentes, com base no conteúdo do documento e nos metadados do documento.

Componentes

  • O Blob Storage 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 Tabela fornece armazenamento para dados estruturados não relacionais. Nesse 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 avançada.

Alternativas

Este cenário utiliza indexadores no Azure AI Search para descobrir automaticamente novo conteúdo em origens de dados suportadas, como armazenamento de blob e tabelas, e, em seguida, adicioná-lo ao índice de pesquisa. Como alternativa, você pode usar as APIs fornecidas pela Pesquisa de IA do Azure para enviar dados por push para o índice de pesquisa. Se você fizer isso, no entanto, você precisa escrever código para enviar os dados para o índice de pesquisa e também para analisar e extrair texto dos documentos binários que você deseja pesquisar. O indexador de armazenamento de Blob suporta muitos formatos de documentos, o que simplifica significativamente 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 ótico de caracteres (OCR) ou a análise visual das imagens em documentos, detetar o idioma dos documentos ou traduzir documentos. Você também pode definir suas próprias habilidades personalizadas para enriquecer os dados de maneiras relevantes para o seu cenário de negócios.

Essa arquitetura usa armazenamento de blob e tabela porque eles são econômicos e eficientes. Esse design também permite o armazenamento combinado de documentos e metadados em uma única conta de armazenamento. As fontes de dados alternativas com suporte para os próprios documentos incluem o Armazenamento do Azure Data Lake 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

Pesquisando conteúdo de arquivo

Essa solução permite que os usuários pesquisem documentos com base no conteúdo do arquivo e em metadados adicionais armazenados separadamente para cada documento. Além de pesquisar o conteúdo de texto de um documento, um usuário pode querer pesquisar o autor do documento, o tipo de documento (como papel ou relatório) ou seu 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 que contêm as informações que você deseja permitir que os usuários pesquisem.

Como os arquivos pesquisados nesse cenário são documentos binários, você pode armazená-los no Armazenamento de Blobs. Se o fizer, pode utilizar o indexador de Armazenamento de Blob incorporado no Azure AI Search para extrair automaticamente texto dos ficheiros e adicionar o respetivo conteúdo ao índice de pesquisa.

Pesquisando metadados de arquivo

Se quiser incluir informações adicionais sobre os arquivos, você pode associar metadados diretamente aos blobs, sem usar um armazenamento separado. O indexador de pesquisa integrado do Armazenamento de Blobs pode até ler esses metadados e colocá-los no índice de pesquisa. Isso permite que os usuários pesquisem metadados junto com o conteúdo do arquivo. No entanto, a quantidade de metadados é limitada a 8 KB por blob, portanto, a quantidade de informações que você pode colocar em cada blob é bastante pequena. Você pode optar por armazenar apenas as informações mais críticas diretamente nos blobs. Nesse cenário, somente o autor do documento é armazenado no blob.

Para superar essa limitação de armazenamento, você pode colocar metadados adicionais em outra fonte de dados que tenha um indexador suportado, 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 de Armazenamento de Tabela para direcionar o mesmo índice de pesquisa que o indexador de blob, os metadados de armazenamento de blob e tabela serão combinados para cada documento no índice de pesquisa.

Usando várias fontes de dados para um único í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 é definida como um identificador exclusivo do arquivo. Esse identificador exclusivo é usado para fazer referência ao arquivo em ambas as fontes de dados. O indexador de blob usa o metadata_storage_path como a chave do documento, por padrão. A metadata_storage_path propriedade armazena a URL completa do arquivo no Armazenamento de Blob, 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 a metadata_storage_path coluna como no Armazenamento de Tabela, saberá exatamente a qual blob pertencem os metadados nas outras colunas, para que possa usar qualquer PartitionKey valor na RowKey tabela. Por exemplo, você pode usar o nome do contêiner de blob como o PartitionKey e a URL completa codificada em Base64 do blob como , RowKeygarantindo que também não haja caracteres inválidos nessas chaves .

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

Nota

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 em sua tabela. Isso porque o indexador concatena o PartitionKey e RowKey como a chave do documento, por padrão. Como você já está confiando na chave do documento conforme configurado pelo indexador de blob (que é a URL completa codificada em Base64 do blob), a criação de um mapeamento de campo para garantir que ambos os indexadores se refiram ao mesmo documento no índice de pesquisa é apropriada e suportada para esse cenário.

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

Potenciais casos de utilização

Esse cenário se aplica a aplicativos que exigem a capacidade de pesquisar documentos com base em seu conteúdo e metadados adicionais.

Considerações

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

Fiabilidade

A confiabilidade garante que seu aplicativo possa atender aos compromissos que você assume com seus clientes. Para obter mais informações, consulte Visão geral do pilar de confiabilidade.

O Azure AI Search fornece um SLA (contrato de nível de serviço) alto para leituras (consultas) se você tiver pelo menos duas réplicas. Ele fornece um SLA alto para atualizações (atualizando os índices de pesquisa) se você tiver pelo menos três réplicas. Portanto, você deve provisionar pelo menos duas réplicas se quiser que seus usuários possam pesquisar de forma 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 de seus dados para ajudar a protegê-los contra eventos planejados e não planejados. O Armazenamento do Azure fornece opções de redundância adicionais para replicar dados entre regiões. Essas salvaguardas se aplicam aos dados no armazenamento de blob e tabela.

Segurança

A segurança oferece garantias contra ataques deliberados e o abuso de seus valiosos dados e sistemas. Para obter mais informações, consulte Visão geral do pilar de segurança.

O Azure AI Search fornece controlos de segurança robustos que o ajudam a implementar segurança de rede, autenticação e autorização, residência e proteção de dados e controlos administrativos que o ajudam 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 blob e armazenamento de tabela neste cenário) usando uma identidade gerenciada.

Você pode se conectar 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 blob e tabela seja acessível publicamente.

Otimização de custos

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

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

Se você revisar a estimativa, poderá ver que o custo de armazenamento de blob e tabela é relativamente baixo. A maior parte do custo é incorrida pelo Azure AI Search, porque ele executa a indexação e a computação reais para executar consultas de pesquisa.

Implementar este cenário

Para implantar este exemplo de carga de trabalho, consulte Indexando conteúdo e metadados do arquivo no Azure AI Search. Você pode usar este exemplo para:

  • Crie os serviços necessários do Azure.
  • Carregue alguns documentos de exemplo para o Armazenamento de Blobs.
  • Preencha o valor de metadados do autor no blob.
  • Armazene o tipo de documento e os valores de metadados de impacto nos negócios no Armazenamento de Tabelas.
  • Crie os indexadores que mantêm o índice de pesquisa.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

  • Jelle Druyts - Brasil | Engenheiro Principal de Experiência do Cliente

Outros contribuidores:

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

Próximos passos