プロジェクションを定義する

完了

ナレッジ ストアに格納されるデータのプロジェクションは、インデックス作成プロセスでエンリッチメント パイプラインによって生成されるドキュメント構造に基づいています。 スキルセット内の各スキルは、インデックスが作成されるドキュメントのエンリッチされたデータの JSON 表現を繰り返し構築し、ドキュメント内のフィールドの一部またはすべてをプロジェクションとして保持できます。

Shaper スキルの使用

インデックス作成のプロセスでは、スキルセット内のスキルのさまざまな出力フィールドを含む複雑なドキュメントが段階的に作成されます。 これにより、スキーマの操作が困難になり、適切な形式の JSON に簡単にマップされないプリミティブ データ値のコレクションが含まれる可能性があります。

これらのフィールド値をナレッジ ストア内のプロジェクションに簡単にマッピングするには、 Shaper スキルを使用して、プロジェクションにマップするフィールドの構造が単純な新しいフィールドを作成するのが一般的です。

たとえば、次の 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"
    }
  ]
}

この Shaper スキルは、次の構造の プロジェクション フィールドを作成します。

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

結果として得られる JSON ドキュメントは整形式であり、エンリッチメント パイプラインの以前のスキルによって反復的に構築されたより複雑なドキュメントよりも、ナレッジ ストア内のプロジェクションにマップする方が簡単です。