Importation de données dans la recherche Azure AI

Dans la recherche Azure AI, les requêtes s’exécutent sur le contenu détenu par l’utilisateur chargé dans un index de recherche. Cet article décrit les deux flux de travail de base pour le remplissage d’un index : placer vos données (push) dans l’index de façon programmatique, ou extraire les données à l’aide d’un indexeur de recherche.

Les deux approches chargent des documents à partir d’une source de données externe. Bien que vous puissiez créer un index vide, il ne peut pas être interrogé tant que vous n’ajoutez pas le contenu.

Remarque

Si l’enrichissement en IA est une condition de la solution, vous devez utiliser le modèle d’extraction (indexeurs) pour charger un index. Les ensembles de compétences sont attachés à un indexeur et ne s’exécutent pas indépendamment.

Envoyer des données à un index

Le modèle Push est une approche qui utilise des API pour charger des documents dans un index de recherche existant. Vous pouvez charger des documents individuellement ou par lots jusqu’à 1 000 par lot, ou 16 Mo par lot, selon la limite en premier.

Voici les principaux avantages :

  • Aucune restriction sur le type de source de données. La charge utile doit être composée de documents JSON mappés à votre schéma d’index, mais les données peuvent être sources n’importe où.

  • Aucune restriction sur la fréquence d’exécution. Vous pouvez transmettre des modifications à un index aussi souvent que vous le souhaitez. Pour les applications ayant des exigences de faible latence (par exemple, lorsque l’index doit être synchronisé avec les fluctuations de l’inventaire des produits), le modèle push est votre seule option.

  • Connecter ivité et la récupération sécurisée des documents sont entièrement sous votre contrôle. En revanche, les connexions d’indexeur sont authentifiées à l’aide des fonctionnalités de sécurité fournies dans la recherche Azure AI.

Comment envoyer des données à un index de recherche Azure AI

Utilisez les API suivantes pour charger des documents uniques ou multiples dans un index :

Il n’existe aucune prise en charge de l’envoi de données via le Portail Azure.

Pour obtenir une présentation des API d’envoi (push), consultez :

Actions d’indexation : upload, merge, mergeOrUpload, supprimer

Vous pouvez contrôler le type d’action d’indexation par document, en spécifiant si le document doit être chargé en intégralité, fusionné avec du contenu de document existant ou supprimé.

Que vous utilisiez l’API REST ou un Kit de développement logiciel (SDK) Azure, les opérations de document suivantes sont prises en charge pour l’importation de données :

  • Chargez, similaire à un « upsert » où le document est inséré s’il est nouveau, puis mis à jour ou remplacé s’il existe. Si les valeurs requises par l’index sont manquantes dans le document, la valeur du champ du document est définie sur Null.

  • fusionner met à jour un document qui existe déjà et échoue un document introuvable. Merge remplace les valeurs existantes. Pour cette raison, veillez à rechercher les champs de collection qui contiennent plusieurs valeurs, telles que les champs de type Collection(Edm.String). Par exemple, si un champ tags commence par la valeur ["budget"] et que vous exécutez une fusion avec la valeur ["economy", "pool"] , la valeur finale du champ tagsest ["economy", "pool"]. Il ne s’agit pas de ["budget", "economy", "pool"].

  • mergeOrUpload se comporte comme merge si le document existe et upload si le document est nouveau.

  • supprimer supprime de l'index le document complet. Si vous souhaitez supprimer un champ individuel, utilisez plutôt fusionner en définissant le champ en question sur Null.

Extraction de données dans un index

Le modèle d’extraction utilise des indexeurs se connectant à une source de données prise en charge, en chargeant automatiquement les données dans votre index. Les indexeurs de Microsoft sont disponibles pour ces plateformes :

Vous pouvez utiliser des connecteurs tiers, développés et gérés par des partenaires Microsoft. Pour plus d’informations et de liens, consultez la galerie de sources de données.

Les indexeurs connectent un index à une source de données (généralement une table, une vue ou une structure équivalente) et mappent les champs source aux champs équivalents de l’index. Pendant l’exécution, l’ensemble de lignes est automatiquement transformé en JSON et chargé dans l’index spécifié. Tous les indexeurs prennent en charge les planifications de sorte que vous puissiez spécifier la fréquence à laquelle les données sont à actualiser. La plupart des indexeurs fournissent le suivi des modifications si la source de données le prend en charge. En suivant les modifications et les suppressions effectuées dans les documents existants, et en reconnaissant les nouveaux documents, les indexeurs suppriment la nécessité de gérer activement les données de votre index.

Comment extraire des données dans un index de recherche Azure AI

Utilisez les outils et API suivants pour l’indexation basée sur l’indexeur :

La fonctionnalité d’indexeur est exposée dans le [Portail Azure], l’API REST et le Kit de développement logiciel (SDK) .NET.

Grâce au portail, le recherche Azure AI peut générer un schéma d’index par défaut en lisant les métadonnées du jeu de données source.

Vérifier l’importation de données avec l’Explorateur de recherche

Un moyen rapide pour effectuer une vérification préliminaire sur le chargement de documents consiste à utiliser l’Explorateur de recherche dans le portail.

Screenshot of Search Explorer command in the Azure portal.

L’Explorateur vous permet d’interroger un index sans avoir à écrire du code. L’expérience de recherche est basée sur les paramètres par défaut, tels que la syntaxe simple et le paramètre de requête searchMode. Les résultats sont retournés au format JSON afin que vous puissiez inspecter le document dans son intégralité.

Voici un exemple de requête que vous pouvez exécuter dans l’Explorateur de recherche en mode JSON. « HotelId » est la clé de document de l’index-hôtels-échantillon. Le filtre fournit l’ID de document d’un document spécifique :

{
  "search": "*",
  "filter": "HotelId eq '50'"
}

Si vous utilisez REST, cette requête de recherche atteint le même objectif.

Voir aussi