Alterar e excluir a deteção usando indexadores para o Armazenamento do Azure na Pesquisa do Azure AI

Depois que um índice de pesquisa inicial é criado, talvez você queira que os trabalhos de indexador subsequentes peguem apenas documentos novos e alterados. Para conteúdo indexado originado do Armazenamento do Azure, a deteção de alterações ocorre automaticamente porque os indexadores controlam a última atualização usando os carimbos de data/hora internos em objetos e arquivos no Armazenamento do Azure.

Embora a deteção de alterações seja um dado, a deteção de exclusão não é. Um indexador não controla a exclusão de objetos em fontes de dados. Para evitar ter documentos de pesquisa órfãos, você pode implementar uma estratégia de "exclusão suave" que resulta na exclusão de documentos de pesquisa primeiro, com a exclusão física no Armazenamento do Azure seguindo como uma segunda etapa.

Há duas maneiras de implementar uma estratégia de exclusão suave:

Pré-requisitos

  • Usar um indexador de Armazenamento do Azure para Armazenamento de Blob, Armazenamento de Tabelas, Armazenamento de Arquivos ou Armazenamento Data Lake Gen2

  • Use chaves de documento e estrutura de arquivo consistentes. A alteração de chaves de documento ou nomes e caminhos de diretório (aplica-se ao ADLS Gen2) quebra as informações de rastreamento interno usadas pelos indexadores para saber qual conteúdo foi indexado e quando foi indexado pela última vez.

Nota

O ADLS Gen2 permite que os diretórios sejam renomeados. Quando um diretório é renomeado, os carimbos de data/hora dos blobs nesse diretório não são atualizados. Como resultado, o indexador não reindexará esses blobs. Se você precisar que os blobs em um diretório sejam reindexados após uma renomeação de diretório porque eles agora têm novas URLs, será necessário atualizar o carimbo de data/hora de todos os blobs no diretório para que o LastModified indexador saiba reindexá-los durante uma execução futura. Os diretórios virtuais no Armazenamento de Blobs do Azure não podem ser alterados, portanto, eles não têm esse problema.

Exclusão suave de blob nativo

Para essa abordagem de deteção de exclusão, o Azure AI Search depende do recurso nativo de exclusão suave de blob no Armazenamento de Blobs do Azure para determinar se os blobs fizeram a transição para um estado de exclusão suave . Quando blobs são detetados nesse estado, um indexador de pesquisa usa essas informações para remover o documento correspondente do índice.

Requisitos para exclusão suave nativa

  • Os blobs devem estar em um contêiner de Armazenamento de Blobs do Azure. A política de exclusão suave de blob nativo do Azure AI Search não é suportada para blobs no ADLS Gen2 ou nos Arquivos do Azure.

  • Habilite a exclusão suave para blobs.

  • As chaves de documento para os documentos em seu índice devem ser mapeadas para serem uma propriedade de blob ou metadados de blob, como "metadata_storage_path".

  • Você deve usar a API REST (api-version=2023-11-01) ou a versão mais recente, ou a configuração da Fonte de Dados do indexador no portal do Azure, para configurar o suporte para exclusão suave.

  • O controle de versão de Blob não deve ser habilitado na conta de armazenamento. Caso contrário, a exclusão suave nativa não é suportada pelo design.

Configurar exclusão suave nativa

No armazenamento de Blob, ao habilitar a exclusão suave de acordo com os requisitos, defina a política de retenção para um valor muito maior do que a agenda de intervalos do indexador. Se houver um problema ao executar o indexador ou se você tiver um grande número de documentos para indexar, haverá muito tempo para o indexador eventualmente processar os blobs excluídos suavemente. Os indexadores do Azure AI Search só excluirão um documento do índice se ele processar o blob enquanto ele estiver em um estado de exclusão suave.

No Azure AI Search, defina uma política de deteção de exclusão suave de blob nativa na fonte de dados. Você pode fazer isso no portal do Azure, usando a API REST (api-version=2023-11-01). As instruções a seguir explicam como definir a política de deteção de exclusão no portal do Azure ou por meio de APIs REST.

  1. Inicie sessão no portal do Azure.

  2. Na página Visão Geral do serviço Azure AI Search, vá para Nova Fonte de Dados, um editor visual para especificar uma definição de fonte de dados.

    A captura de tela a seguir mostra onde você pode encontrar esse recurso no portal.

    Screenshot of data source configuration in Import Data wizard.

  3. No formulário Nova Fonte de Dados, preencha os campos obrigatórios, marque a caixa de seleção Rastrear exclusões e escolha Exclusão suave de blob nativo. Em seguida, pressione Salvar para ativar o recurso na criação da fonte de dados.

    Screenshot of portal data source native soft delete.

Reindexar blobs não excluídos usando políticas nativas de exclusão suave

Se você restaurar um blob excluído suavemente no armazenamento de Blob, o indexador nem sempre o reindexará. Isso ocorre porque o indexador usa o carimbo de LastModified data/hora do blob para determinar se a indexação é necessária. Quando um blob excluído suavemente não é excluído, seu LastModified carimbo de data/hora não é atualizado, portanto, se o indexador já tiver processado blobs com carimbos de data/hora mais recentes LastModified , ele não reindexará o blob não excluído.

Para garantir que um blob não excluído seja reindexado, você precisará atualizar o carimbo de LastModified data/hora do blob. Uma maneira de fazer isso é salvando novamente os metadados desse blob. Você não precisa alterar os metadados, mas salvar novamente os metadados atualizará o carimbo de LastModified data/hora do blob para que o indexador saiba pegá-lo.

Estratégia de exclusão suave usando metadados personalizados

Esse método usa metadados personalizados para indicar se um documento de pesquisa deve ser removido do índice. Ele requer duas ações separadas: excluir o documento de pesquisa do índice, seguido pela exclusão de arquivo no Armazenamento do Azure.

Há etapas a serem seguidas no Armazenamento do Azure e na Pesquisa de IA do Azure, mas não há outras dependências de recursos.

  1. No Armazenamento do Azure, adicione um par chave-valor de metadados personalizados ao arquivo para indicar que o arquivo está sinalizado para exclusão. Por exemplo, você pode nomear a propriedade "IsDeleted", definida como false. Quando quiser excluir o arquivo, altere-o para true.

  2. No Azure AI Search, edite a definição da fonte de dados para incluir uma propriedade "dataDeletionDetectionPolicy". Por exemplo, a política a seguir considera um arquivo a ser excluído se ele tiver uma propriedade IsDeleted de metadados com o valor true:

    PUT https://[service name].search.windows.net/datasources/file-datasource?api-version=2020-06-30
    {
        "name" : "file-datasource",
        "type" : "azurefile",
        "credentials" : { "connectionString" : "<your storage connection string>" },
        "container" : { "name" : "my-share", "query" : null },
        "dataDeletionDetectionPolicy" : {
            "@odata.type" :"#Microsoft.Azure.Search.SoftDeleteColumnDeletionDetectionPolicy",
            "softDeleteColumnName" : "IsDeleted",
            "softDeleteMarkerValue" : "true"
        }
    }
    
  3. Execute o indexador. Depois que o indexador tiver processado o arquivo e excluído o documento do índice de pesquisa, você poderá excluir o arquivo físico no Armazenamento do Azure.

Reindexar blobs e arquivos não excluídos

Você pode reverter uma exclusão suave se o arquivo de origem original ainda existir fisicamente no Armazenamento do Azure.

  1. Altere o "softDeleteMarkerValue" : "false" no blob ou arquivo no Armazenamento do Azure.

  2. Verifique o carimbo de LastModified data/hora do blob ou do arquivo para torná-lo mais recente do que a última execução do indexador. Você pode forçar uma atualização para a data e hora atuais salvando novamente os metadados existentes.

  3. Execute o indexador.

Próximos passos