Tutoriel : Indexer et enrichir des objets blob chiffrés pour la recherche en texte intégral dans Recherche Azure AI

Note

Recherche Azure AI est disponible via le portail Azure, les API REST et les SDK Azure. Il sous-tend également Foundry IQ, la couche de connaissances managée qui transforme le contenu d’entreprise en bases de connaissances réutilisables et prenant en charge les autorisations pour les agents dans le portail Microsoft Foundry.

Découvrez comment utiliser Recherche Azure AI pour indexer des documents chiffrés avec une clé gérée par le client dans Stockage Blob Azure.

Normalement, un indexeur ne peut pas extraire du contenu à partir d’objets blob chiffrés à l’aide du chiffrement côté client dans la bibliothèque cliente Stockage Blob Azure. Cela est dû au fait que l’indexeur n’a pas accès à la clé de chiffrement gérée par le client dans Azure Key Vault. Toutefois, à l’aide de la compétence personnalisée DecryptBlobFile et de la compétence Extraction de document, vous pouvez fournir un accès contrôlé à la clé pour déchiffrer les fichiers, puis extraire du contenu à partir d’eux. Cela permet d’indexer et d’enrichir ces documents sans compromettre l’état de chiffrement de vos documents stockés.

À partir de documents entiers précédemment chiffrés (texte non structuré) tels que PDF, HTML, DOCX et PPTX dans Stockage Blob Azure, ce tutoriel utilise un client REST et les API REST de recherche pour :

  • Définir un pipeline qui déchiffre les documents et extrait du texte à partir de ceux-ci
  • Définir un index pour stocker la sortie
  • Exécuter le pipeline pour créer et charger l’index
  • Explorer les résultats à l’aide de la recherche en texte intégral et d’une syntaxe de requête enrichie

Prerequisites

Le déploiement de compétences personnalisées crée une application de fonction Azure et un compte de stockage Azure. Ces ressources sont créées pour vous. Elles ne sont donc pas répertoriées comme prérequis. Lorsque vous avez terminé ce tutoriel, n’oubliez pas de nettoyer les ressources afin que vous ne soyez pas facturé pour les services que vous n’utilisez pas.

Note

Les ensembles de compétences nécessitent souvent l’attachement d’une ressource Microsoft Foundry. Comme écrit, cet ensemble de compétences n’a aucune dépendance avec Foundry, donc aucune clé n’est requise. Si vous ajoutez ultérieurement des enrichissements qui appellent des compétences intégrées, n’oubliez pas de mettre à jour votre ensemble de compétences en conséquence.

Déployer la compétence personnalisée

Ce tutoriel utilise l’exemple de projet DecryptBlobFile à partir du dépôt GitHub Azure Search Power Skills . Dans cette section, vous déployez la compétence dans une fonction Azure afin qu’elle puisse être utilisée dans un ensemble de compétences. Un script de déploiement intégré crée une ressource de fonction Azure avec un préfixe psdbf-function-app- et charge la fonctionnalité. Vous êtes invité à fournir un abonnement et un groupe de ressources. Veillez à choisir l’abonnement qui contient votre instance Azure Key Vault.

Opérationnellement, la compétence DecryptBlobFile accepte l’URL et le jeton SAS pour chaque objet blob en tant qu’entrées. Il génère le fichier téléchargé et déchiffré à l’aide du contrat de référence de fichier attendu par Recherche Azure AI. Rappelez-vous que DecryptBlobFile a besoin de la clé de chiffrement pour effectuer le déchiffrement. Dans le cadre de l’installation, vous créez également une stratégie d’accès qui accorde à la fonction DecryptBlobFile l’accès à la clé de chiffrement dans Azure Key Vault.

  1. Dans la page d’accueil DecryptBlobFile, sélectionnez Déployer sur Azure pour ouvrir le modèle Resource Manager dans le portail Azure.

  2. Choisissez l’abonnement où existe votre instance Azure Key Vault. Ce tutoriel ne fonctionne pas si vous choisissez un autre abonnement.

  3. Sélectionnez un groupe de ressources existant ou créez-en un. Un groupe de ressources dédié facilite le nettoyage plus tard.

  4. Sélectionnez Vérifier + créer, acceptez les termes, puis sélectionnez Créer pour déployer la fonction Azure.

    Capture d’écran de la page modèle ARM dans le portail Azure.

  5. Attendez que le déploiement se termine.

Vous devez disposer d’une application de fonction Azure qui contient la logique de déchiffrement et une ressource stockage Azure qui stocke les données d’application. Dans les étapes suivantes, vous accordez aux applications les autorisations nécessaires pour accéder au coffre de clés et collecter des informations dont vous aurez besoin pour les appels REST.

Accorder des autorisations dans Azure Key Vault

  1. Accédez à votre service Azure Key Vault dans le portail Azure. Dans Azure Key Vault, créez une stratégie d'accès qui accorde un accès à la clé de la compétence personnalisée.

  2. Dans le volet gauche, sélectionnez Stratégies d’accès, puis sélectionnez + Créer pour démarrer l’Assistant Créer une stratégie d’accès .

    Capture d’écran de la commande Stratégie d’accès dans le volet gauche.

  3. Dans la page Autorisations , sous Configurer à partir du modèle, sélectionnez Azure Data Lake Storage ou Stockage Azure.

  4. Cliquez sur Suivant.

  5. Dans la page Principal , sélectionnez l’instance de fonction Azure que vous avez déployée. Vous pouvez la rechercher à l’aide de son préfixe de ressource, qui a une valeur par défaut de psdbf-function-app.

  6. Cliquez sur Suivant.

  7. Dans Révision + création, sélectionnez Créer.

Collecter des informations sur l’application

  1. Accédez à la fonction psdbf-function-app dans le portail Azure. Notez les propriétés suivantes dont vous aurez besoin pour les appels REST.

  2. Obtenez l’URL de la fonction, qui se trouve sous Essentials sur la page principale de la fonction.

    Capture d’écran de la page vue d’ensemble et de la section Essentials de l’application Azure Function.

  3. Obtenez le code de clé hôte, qui se trouve en accédant aux clés d’application et en affichant la clé par défaut , puis en copiant la valeur.

    Capture d’écran de la page Clés d'application de l'Azure Function app.

  1. Accédez à votre service Search dans le Portail Microsoft Azure.

  2. Dans la page Vue d’ensemble de votre service de recherche, obtenez le nom de votre service de recherche. Vous pouvez confirmer le nom de votre service en examinant l’URL du point de terminaison. Par exemple, si votre URL de point de terminaison est https://mydemo.search.windows.net, votre nom de service est mydemo.

  3. Dans Paramètres>Clés, obtenez une clé d’administration pour des droits complets sur le service. Il existe deux clés d’administration interchangeables, fournies pour la continuité de l’activité au cas où vous devrez en annuler une. Vous pouvez utiliser une clé sur les requêtes pour ajouter, modifier ou supprimer des objets.

Une clé API est requise dans l’en-tête de chaque requête envoyée à votre service. Une clé valide établit la confiance, par requête, entre l’application qui envoie la demande et le service qui la gère.

Configurer un client REST

Créez les variables suivantes pour les points de terminaison et les clés.

Variable Où l’obtenir
admin-key Dans la page Clés du service Recherche d’IA Azure.
search-service-name Nom du service Recherche d’IA Azure. L’URL est https://{{search-service-name}}.search.windows.net.
storage-connection-string Dans le compte de stockage, sous l’onglet Clés d’accès, sélectionnezla chaîne de connexion>.
storage-container-name Nom du conteneur d'objets blob qui contient les fichiers chiffrés à indexer.
function-uri Dans la fonction Azure, sous Essentials sur la page principale.
function-code Dans la fonction Azure, en accédant aux clés d’application, en affichant la clé par défaut et en copiant la valeur.
api-version Laissez le 2020-06-30.
datasource-name Laisser encrypted-blobs-ds.
index-name Laisser encrypted-blobs-idx.
skillset-name Laissez comme encrypted-blobs-ss.
indexer-name Laisser encrypted-blobs-ixr.

Vérifier et exécuter chaque requête

Utilisez les requêtes HTTP suivantes pour créer les objets d’un pipeline d’enrichissement.

  • Demande PUT pour créer l’index : cet index de recherche contient les données qu’Recherche Azure AI utilise et retourne.

  • Demande POST pour créer la source de données : cette source de données spécifie la connexion à votre compte de stockage contenant les fichiers blob chiffrés.

  • Demande PUT pour créer l’ensemble de compétences : l’ensemble de compétences spécifie la définition de compétence personnalisée pour la fonction Azure qui déchiffre les données du fichier blob. Il spécifie également un DocumentExtractionSkill pour extraire le texte de chaque document après son déchiffrement.

  • Une requête PUT pour créer l’indexeur : l’exécution de l’indexeur récupère les objets blob, applique les compétences et les index et stocke les résultats. Vous devez exécuter cette requête en dernier. La compétence personnalisée dans les compétences appelle la logique de déchiffrement.

Surveiller l’indexation

L’indexation et l’enrichissement commencent dès que vous envoyez la demande Create Indexer. En fonction du nombre de documents dans votre compte de stockage, l’indexation peut prendre un certain temps. Pour savoir si l’indexeur est toujours en cours d’exécution, envoyez une demande d’état Get Indexer et passez en revue la réponse pour savoir si l’indexeur est en cours d’exécution ou affiche les informations d’erreur et d’avertissement.

Si vous utilisez le niveau Gratuit, attendez-vous au message suivant : "Could not extract content or metadata from your document. Truncated extracted text to '32768' characters". Ce message s'affiche car l'indexation d'objets blob au niveau Gratuit présente une limite d'extraction de caractères de 32 000. Vous ne voyez pas ce message pour ce jeu de données sur les niveaux supérieurs.

Rechercher votre contenu

Une fois l’exécution de l’indexeur terminée, vous pouvez exécuter des requêtes pour vérifier que les données sont correctement déchiffrées et indexées. Accédez à votre service Recherche d’IA Azure dans le portail Azure et utilisez l’Explorateur de recherche pour exécuter des requêtes sur les données indexées.

Nettoyer les ressources

Lorsque vous travaillez dans votre propre abonnement, il est judicieux à la fin d’un projet de supprimer les ressources dont vous n’avez plus besoin. Les ressources qui restent actives peuvent vous coûter de l’argent. Vous pouvez supprimer des ressources individuellement ou supprimer le groupe de ressources pour supprimer l’ensemble des ressources.

Vous pouvez rechercher et gérer des ressources dans le portail Azure, à l’aide du lien Toutes les ressources ou groupes de ressources dans le volet de navigation gauche.

Étapes suivantes

Maintenant que vous avez indexé des fichiers chiffrés, vous pouvez itérer sur ce pipeline en ajoutant des compétences supplémentaires pour enrichir et obtenir plus d’informations sur vos données.

Si vous utilisez des données doublement chiffrées, vous pouvez examiner les fonctionnalités de chiffrement d’index disponibles dans Recherche IA Azure. Bien que l’indexeur ait besoin de données déchiffrées à des fins d’indexation, une fois l’index existant, il peut être chiffré dans un index de recherche à l’aide d’une clé gérée par le client. Cela garantit que vos données sont toujours chiffrées au repos. Pour plus d’informations, consultez Configurer des clés gérées par le client pour le chiffrement des données dans Recherche Azure AI.