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 par IA ou la vectorisation intégrée sont des exigences pour la solution, vous devez utiliser le modèle d’extraction (indexeurs) pour charger un index. Les ensembles de compétences sont attachés aux indexeurs 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 première limite atteinte.
Voici les principaux avantages :
Il n’y a pas de restrictions 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ù.
Il n’y a 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.
La connectivité 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 un ou plusieurs documents dans un index :
- Indexer des documents (API REST)
- IndexDocumentsAsync (Kit de développement logiciel (SDK) Azure pour .NET) ou SearchIndexingBufferedSender
- IndexDocumentsBatch (Kit de développement logiciel (SDK) Azure pour Python) ou SearchIndexingBufferedSender
- IndexDocumentsBatch (Kit de développement logiciel (SDK) Azure pour Java) ou SearchIndexingBufferedSender
- IndexDocumentsBatch (Kit de développement logiciel (SDK) Azure pour JavaScript ou SearchIndexingBufferedSender
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 :
- Démarrage rapide : recherche en texte intégral à l’aide des kits SDK Azure
- Tutoriel C# : optimiser l’indexation avec l’API d’envoi (push)
- Démarrage rapide REST : créer un index de recherche Azure AI à l’aide de PowerShell
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 :
Charger, similaire à un « upsert », où le document est inséré s’il est nouveau et mis à jour/remplacé s’il existe déjà. 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 pour 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 champtags
commence par la valeur["budget"]
et que vous exécutez une fusion avec la valeur["economy", "pool"]
, la valeur finale du champtags
est["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 :
- stockage d’objets blob Azure
- Stockage Table Azure
- Azure Data Lake Storage Gen2
- Azure Files (préversion)
- Azure Cosmos DB
- Azure SQL Database, SQL Managed Instance et SQL Server sur des machines virtuelles Azure
- Fichiers et raccourcis OneLake
- SharePoint Online (préversion)
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 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 :
- Assistant Importation de données ou Assistant Importation et vectorisation de données
- API REST : Créer un indexeur (REST), Créer une source de données (REST), Créer un index (REST)
- Kit de développement logiciel (SDK) Azure pour .NET : SearchIndexer, SearchIndexerDataSourceConnection, SearchIndex,
- Kit de développement logiciel (SDK) Azure pour Python : SearchIndexer, SearchIndexerDataSourceConnection, SearchIndex,
- Kit de développement logiciel (SDK) Azure pour Java : SearchIndexer, SearchIndexerDataSourceConnection, SearchIndex,
- Kit de développement logiciel (SDK) Azure pour JavaScript : SearchIndexer, SearchIndexerDataSourceConnection, SearchIndex,
La fonctionnalité de l’indexeur est exposée dans le [Portail Azure], ainsi que dans l’API REST et le Kit de développement logiciel (SDK) .NET.
Grâce au portail Azure, la 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 d'effectuer une vérification préliminaire du téléchargement de documents consiste à utiliser l’explorateur de recherche dans le portail Azure.
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 dans la vue 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.