Extraire des données avec un indexeur
Tip
Pour plus d’informations, consultez l’onglet Texte et images !
Au cœur des solutions Recherche d’IA Azure se trouve la création d’un index. Un index contient votre contenu pouvant faire l’objet d’une recherche et est créé et mis à jour, sans surprise, par un indexeur.
Le processus d’indexation commence par une source de données : emplacement de stockage de vos artefacts de données d’origine ; par exemple, un conteneur de magasin d’objets blob Azure plein de documents, une base de données ou un autre magasin.
L’indexeur automatise l’extraction et l’indexation des champs de données via un pipeline d’enrichissement, dans lequel il applique le craquage de document pour extraire le contenu des documents sources et applique des étapes incrémentielles pour créer un document hiérarchique (basé sur JSON) avec les champs requis pour la définition d’index.
Le résultat est un index rempli, qui peut être interrogé pour renvoyer les champs spécifiés à partir de documents qui correspondent aux critères de requête.
Comment les documents sont construits pendant l’indexation
Le processus d’indexation consiste à créer un document pour chaque entité indexée. Pendant l’indexation, un pipeline d’enrichissement crée de manière itérative les documents qui combinent les métadonnées de la source de données avec des champs enrichis extraits ou générés par des compétences. Vous pouvez considérer chaque document indexé comme une structure JSON, qui se compose initialement d’un document contenant les champs d’index que vous avez mappés aux champs extraits directement à partir des données sources, comme suit :
-
document
- metadata_storage_name
- metadata_author
- contenu
Lorsque les documents de la source de données contiennent des images, vous pouvez configurer l’indexeur pour extraire les données de l’image et placer chaque image dans une collection normalized_images, comme suit :
-
document
- metadata_storage_name
- metadata_author
- contenu
-
normalized_images
- image0
- image1
Le fait de normaliser les données d’image de cette façon vous permet d’utiliser la collection d’images comme entrée pour les compétences qui extraient des informations à partir des données d’image.
Chaque compétence ajoute des champs au document. Par exemple, une compétence qui détecte la langue dans laquelle est rédigé un document peut stocker sa sortie dans un champ language, comme suit :
-
document
- metadata_storage_name
- metadata_author
- contenu
-
normalized_images
- image0
- image1
- language
Le document est structuré de manière hiérarchique et les compétences sont appliquées à un contexte spécifique au sein de la hiérarchie, ce qui vous permet d’exécuter la compétence pour chaque élément à un niveau particulier du document. Par exemple, vous pouvez exécuter une compétence de reconnaissance optique de caractères (OCR) pour chaque image de la collection d’images normalisées afin d’extraire tout le texte éventuel qu’elles contiennent :
-
document
- metadata_storage_name
- metadata_author
- contenu
-
normalized_images
-
image0
- Texte
-
image1
- Texte
-
image0
- language
Les champs de sortie de chaque compétence peuvent être utilisés comme entrées pour d’autres compétences à une phase ultérieure du pipeline, qui à leur tour stockent leurs sorties dans la structure du document. Par exemple, nous pouvons utiliser une compétence de fusion pour combiner le contenu du texte d’origine avec le texte extrait de chaque image afin de créer un champ merged_content contenant tout le texte du document, y compris celui des images.
-
document
- metadata_storage_name
- metadata_author
- contenu
-
normalized_images
-
image0
- Texte
-
image1
- Texte
-
image0
- language
- merged_content
Les champs inclus dans la structure du document final à la fin du pipeline sont mappés aux champs d’index par l’indexeur de l’une des deux manières suivantes :
- Les champs extraits directement à partir des données sources sont tous mappés aux champs d’index. Ces mappages peuvent être implicites (les champs sont automatiquement mappés aux champs portant le même nom dans l’index) ou explicites (un mappage est défini pour faire correspondre un champ source à un champ d’index, souvent pour renommer le champ à l’aide d’un nom plus utile ou pour appliquer une fonction à la valeur de données mappée).
- Les champs de sortie issus des compétences incluses dans l’ensemble de compétences sont explicitement mappés à partir de leur emplacement hiérarchique dans la sortie au champ cible de l’index.