Definir projeções

Concluído

As projeções de dados a serem armazenados em seu armazenamento de conhecimento são baseadas nas estruturas de documentos geradas pelo pipeline de enriquecimento em seu processo de indexação. Cada habilidade em seu conjunto de habilidades cria iterativamente uma representação JSON dos dados enriquecidos para os documentos que estão sendo indexados, e você pode persistir alguns ou todos os campos no documento como projeções.

Usando a habilidade Shaper

O processo de indexação incrementalmente cria um documento complexo que contém os vários campos de saída das habilidades no conjunto de habilidades. Isso pode resultar em um esquema difícil de trabalhar e que inclui coleções de valores de dados primitivos que não são mapeados facilmente para JSON bem formado.

Para simplificar o mapeamento desses valores de campo para projeções em um repositório de conhecimento, é comum usar a habilidade Shaper para criar um novo campo contendo uma estrutura mais simples para os campos que você deseja mapear para projeções.

Por exemplo, considere a seguinte definição de habilidade Shaper:

{
  "@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"
    }
  ]
}

Esta habilidade Shaper cria um campo de projeção com a seguinte estrutura:

{
    "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"
        },
        ...
    ]
}

O documento JSON resultante é bem formado e mais fácil de mapear para uma projeção em um repositório de conhecimento do que o documento mais complexo que foi construído iterativamente pelas habilidades anteriores no pipeline de enriquecimento.