Charger des données dans un index de recherche dans la Recherche Azure AI
Cet article explique comment importer des documents dans un index de recherche prédéfini. Dans Recherche Azure AI, un index de recherche est d’abord créé, puis des données sont importées. Les Assistants Importation dans le portail et les pipelines d’indexeur, qui créent et chargent un index en un seul workflow, sont des exceptions.
Fonctionnement de l’importation de données
Un service de recherche accepte les documents JSON qui sont conformes au schéma de l’index. Un service de recherche importe et indexe du texte brut et des vecteurs au format JSON pour une utilisation dans des scénarios de recherche en texte intégral, de recherche vectorielle, de recherche hybride et d’exploration des connaissances.
Le contenu en texte brut peut être obtenu à partir de champs alphanumériques dans la source de données externe, de métadonnées utiles dans les scénarios de recherche ou de contenu enrichi créé par un ensemble de compétences (les compétences peuvent extraire ou déduire des descriptions textuelles à partir d’images et de contenu non structuré).
Le contenu vectoriel est vectorisé avec un modèle d’incorporation externe ou une vectorisation intégrée à l’aide des fonctionnalités de Recherche Azure AI qui s’intègrent à l’IA appliquée.
Vous pouvez préparer ces documents vous-même, mais si le contenu réside dans une source de données prise en charge, l’exécution d’un indexeur ou d’un Assistant Importation peut automatiser la récupération des documents, la sérialisation JSON et l’indexation.
Une fois les données indexées, les structures de données physiques de l’index sont verrouillées. Pour obtenir de l’aide sur ce qui peut et ne peut pas être modifié, consultez Mettre à jour et reconstruire un index.
L’indexation n’est pas un processus en arrière-plan. Un service de recherche équilibre les charges de travail d’indexation et d’exécution des requêtes, mais si la latence des requêtes est trop élevée, vous pouvez augmenter la capacité ou identifier les périodes de faible activité des requêtes pour charger un index.
Pour plus d’informations, consultez Stratégies d’importation de données.
Utilisation du portail Azure
Dans le Portail Azure, utilisez les Assistants Importation pour créer et charger des index dans un workflow transparent. Si vous souhaitez charger un index existant, choisissez une autre approche.
Connectez-vous au Portail Azure avec votre compte Azure, puis localisez votre service de recherche.
Dans la page Vue d’ensemble, sélectionnez Importer des données ou Importer et vectoriser des données dans la barre de commandes pour créer et remplir un index de recherche.
Vous pouvez suivre ces liens pour passer en revue le flux de travail : Démarrage rapide : Créer un index Recherche Azure AI et Démarrage rapide : Vectorisation intégrée.
Une fois l’Assistant terminé, utilisez l’Explorateur de recherche pour vérifier les résultats.
Conseil
Les Assistants Importation créent et exécutent des indexeurs. Si les indexeurs sont déjà définis, vous pouvez réinitialiser et exécuter un indexeur à partir du portail Azure, ce qui est utile si vous ajoutez des champs de manière incrémentielle. La réinitialisation force l’indexeur à recommencer depuis le début, en sélectionnant tous les champs de tous les documents sources.
Utiliser les API REST
Documents – Index est l’API REST permettant d’importer des données dans un index de recherche. Les API REST sont utiles pour les tests de preuve de concept initiaux, où vous pouvez tester les workflows d’indexation sans avoir à écrire beaucoup de code. Le paramètre @search.action
détermine si les documents sont ajoutés en totalité ou partiellement en termes de valeurs nouvelles ou de remplacement pour des champs spécifiques.
Démarrage rapide : recherche de texte à l’aide de REST explique les étapes. Ce qui suit est une version modifiée de l’exemple. Il a été raccourci par souci de concision, et la première valeur HotelId a été modifiée pour éviter le remplacement d’un document existant.
Formulez un appel POST spécifiant le nom de l’index, le point de terminaison « docs/index » et un corps de demande qui comprend le paramètre
@search.action
.POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/index?api-version=2024-07-01 Content-Type: application/json api-key: [admin key] { "value": [ { "@search.action": "upload", "HotelId": "1111", "HotelName": "Stay-Kay City Hotel", "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.", "Category": "Boutique", "Tags": [ "pool", "air conditioning", "concierge" ] }, { "@search.action": "mergeOrUpload", "HotelId": "2", "HotelName": "Old Century Hotel", "Description": "This is description is replacing the original one for this hotel. New and changed values overwrite the previous ones. In a comma-delimited list like Tags, be sure to provide the full list because there is no merging of values within the field itself.", "Category": "Boutique", "Tags": [ "pool", "free wifi", "concierge", "my first new tag", "my second new tag" ] } ] }
Définissez le paramètre
@search.action
surupload
pour créer ou remplacer un document. Définissez-le surmerge
ouuploadOrMerge
si vous ciblez des mises à jour sur des champs spécifiques dans le document. L’exemple précédent montre les deux actions.Action Effet merge 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 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 fusion si le document existe et charge si le document est nouveau. Il s’agit de l’action la plus courante pour les mises à jour incrémentielles. upload Similaire à un « upsert » où le document est inséré s’il est nouveau et 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. Envoyez la demande.
En guise d’étape de validation, recherchez les documents que vous venez d’ajouter :
GET https://[service name].search.windows.net/indexes/hotel-sample-index/docs/1111?api-version=2024-07-01
Dans le cas d’une nouvelle clé ou d’un nouvel ID de document, null devient la valeur des champs non spécifiés dans le document. Pour les actions sur un document existant, les valeurs mises à jour remplacent les valeurs précédentes. Tout champ non spécifié dans une opération « merge » ou « mergeUpload » est laissé intact dans l’index de recherche.
utiliser les kits SDK Azure ;
La programmabilité est fournie dans les Kits de développement logiciel (SDK) Azure suivants.
Le kit SDK Azure pour .NET fournit les API suivantes pour les chargements de documents simples et en bloc dans un index :
Voici plusieurs exemples qui illustrent l’indexation dans un contexte simple ou à grande échelle :
« Charger un index » explique les étapes de base.
Exemples Azure.Search.Documents - Indexation de documents de l’équipe en charge du SDK Azure, avec SearchIndexingBufferedSender.
Le Tutoriel : Indexer des données associe l’indexation par lots à des stratégies de test pour déterminer une taille optimale.
Veillez à consulter le référentiel azure-search-vector-samples pour obtenir des exemples de code montrant comment indexer des champs vectoriels.