Définir des projections

Effectué

Les projections de données à stocker dans votre base de connaissances sont basées sur les structures de documents générées par le pipeline d’enrichissement dans votre processus d’indexation. Chaque compétence de votre ensemble de compétences crée de manière itérative une représentation JSON des données enrichies pour les documents en cours d’indexation, et vous pouvez conserver une partie ou la totalité des champs du document comme des projections.

Utilisation de la compétence Modélisateur

Le processus d’indexation crée de manière incrémentielle un document complexe qui contient les différents champs de sortie des compétences de l’ensemble de compétences. Cela peut aboutir à un schéma qui est difficile à utiliser et qui comprend des collections de valeurs de données primitives qui ne sont pas facilement mappées à un JSON bien formé.

Pour simplifier le mappage de ces valeurs de champs à des projections dans une base de connaissances, il est courant d’utiliser la compétence Modélisateur pour créer un autre champ contenant une structure plus simple pour les champs que vous souhaitez mapper aux projections.

Par exemple, prenons la définition de la compétence Modélisateur suivante :

{
  "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
  "name": "define-projection",
  "description": "Prepare projection fields",
  "context": "/document",
  "inputs": [
    {
      "name": "file_name",
      "source": "/document/metadata_content_name"
    },
    {
      "name": "url",
      "source": "/document/url"
    },
    {
      "name": "sentiment",
      "source": "/document/sentimentScore"
    },
    {
      "name": "key_phrases",
      "source": null,
      "sourceContext": "/document/merged_content/keyphrases/*",
      "inputs": [
        {
          "name": "phrase",
          "source": "/document/merged_content/keyphrases/*"
        }
      ]
    }
  ],
  "outputs": [
    {
      "name": "output",
      "targetName": "projection"
    }
  ]
}

Cette compétence Modélisateur permet de créer un champ de projection avec la structure suivante :

{
    "file_name": "file_name.pdf",
    "url": "https://<storage_path>/file_name.pdf",
    "sentiment": 1.0,
    "key_phrases": [
        {
            "phrase": "first key phrase"
        },
        {
            "phrase": "second key phrase"
        },
        {
            "phrase": "third key phrase"
        },
        ...
    ]
}

Le document JSON obtenu est bien formé et plus facile à mapper à une projection dans une base de connaissances que le document plus complexe qui a été créé de façon itérative par les compétences précédentes du pipeline d’enrichissement.