Előrejelzések definiálása egy tudástárban

Note

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Note

A tudástárak olyan másodlagos tárolók, amelyek az Azure Storage-ban léteznek, és tartalmazzák az Azure AI Keresés-képességkészletek kimeneteit. Ezek különböznek a tudásforrásoktól és a tudásbázisoktól, amelyeket ügynöki lekéréses munkafolyamatokban használnak.

A kivetítések a tudástár definíciójának összetevői, amelyek meghatározzák, hogyan tárolják az AI-gazdagított tartalmakat az Azure Storage-ban. Az előrejelzések határozzák meg a tartalmat tartalmazó adatstruktúrák típusát, mennyiségét és összetételét.

Ebben a cikkben megismerheti az egyes vetülettípusok szintaxisát:

Ne feledje, hogy az előrejelzések egy knowledgeStore készségkészlet tulajdonsága alatt vannak definiálva.

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
      {
        "tables": [ ],
        "objects": [ ],
        "files": [ ]
      }
    ]
}

Ha az első lépések előtt több háttérre van szüksége, tekintse át ezt az ellenőrzőlistát a tippekért és a munkafolyamatért.

Tip

Az előrejelzések fejlesztésekor engedélyezze a bővítési gyorsítótárazást (előzetes verzió), hogy újra felhasználhassa a meglévő bővítéseket a vetületdefiníciók szerkesztése során. A bővítés gyorsítótárazása előzetes verziójú funkció, ezért mindenképpen használja az előzetes verziójú REST API-t az indexelő kérésben. Gyorsítótárazás nélkül a kivetítés egyszerű szerkesztései a gazdagított tartalom teljes újrafeldolgozását eredményezik. A gazdagítások gyorsítótárazásával az előrejelzéseket át lehet iterálni anélkül, hogy a képességkészletek feldolgozási költségei merülnek fel.

Requirements

Minden vetület rendelkezik forrás- és céltulajdonságokkal. A forrás mindig belső tartalom egy képességkészlet végrehajtása során létrehozott bővítőfából. A cél egy Azure Storage-ban létrehozott és feltöltött külső objektum neve és típusa.

A csak bináris képeket elfogadó fájlvetítések kivételével a forrásnak a következőnek kell lennie:

  • Érvényes JSON
  • Egy csomópont elérési útja a bővítési fában (például "source": "/document/objectprojection")

Bár a csomópontok egyetlen mezőre is feloldhatók, a gyakoribb ábrázolás egy összetett alakzatra mutató hivatkozás. Az összetett alakzatok formázási módszertanon keresztül jönnek létre, akár alakzatkezelő képesség , akár beágyazott formázási definíció, de általában Shaper-képesség. Az alakzat mezői vagy elemei határozzák meg a tárolókban és táblákban lévő mezőket.

A Shaper technológiák előnyben vannak, mert JSON-t adnak ki, míg a legtöbb technológia önállóan nem ad ki érvényes JSON-t. A Shaper-képesség által létrehozott adatalakzatot sok esetben egyformán használhatja a tábla- és objektumvetítés.

A forrásbemeneti követelményeknek megfelelően az adatok alakítása gyakorlati követelménysé válik a kivetítési definícióhoz, különösen akkor, ha táblákkal dolgozik.

Táblavetítés definiálása

A táblavetítések olyan forgatókönyvekhez ajánlottak, amelyek adatfeltárást követelnek meg, például a Power BI-val végzett elemzést vagy az adatkereteket használó számítási feladatokhoz. A kivetítési tömb táblák szakasza a kivetíteni kívánt táblák listája.

Táblavetület definiálásához használja a tables tömböt a vetítések tulajdonságában. A táblavetület három szükséges tulajdonsággal rendelkezik:

Property Description
tableName Meghatározza az Azure Table Storage-ban létrehozott új tábla nevét.
generatedKeyName Az egyes sorokat egyedileg azonosító kulcs oszlopneve. Az érték rendszer által generált. Ha kihagyja ezt a tulajdonságot, a rendszer automatikusan létrehoz egy oszlopot, amely a tábla nevét és a "kulcsot" használja elnevezési konvencióként.
adatforrás Egy csomópont elérési útja egy dúsítófában. A csomópontnak egy összetett alakzatra kell hivatkoznia, amely meghatározza, hogy mely oszlopok jönnek létre a táblában.

A táblavetületekben a "forrás" általában a tábla alakját meghatározó Shaper-képesség kimenete. A táblák sorokkal és oszlopokkal rendelkeznek, és a formázás az a mechanizmus, amellyel a sorok és oszlopok meg vannak adva. Shaper-készséget vagy beágyazott alakzatokat is használhat. A Shaper-képesség érvényes JSON-t hoz létre, de a forrás bármely képesség kimenete lehet, ha érvényes JSON.

Note

A táblavetítésekre az Azure Storage által előírt tárolási korlátok vonatkoznak. Az entitás mérete nem haladhatja meg az 1 MB-ot, és egyetlen tulajdonság sem lehet nagyobb 64 KB-nál. Ezek a korlátozások jó megoldássá teszik a táblákat nagy számú kis entitás tárolására.

Egy táblás példa

A tábla sémáját részben a kivetítés (tábla neve és kulcsa), valamint a táblázat alakját (oszlopait) biztosító forrás határozza meg. Ez a példa csak egy táblát mutat be, hogy a definíció részleteire összpontosíthasson.

"projections" : [
  {
    "tables": [
      { "tableName": "Hotels", "generatedKeyName": "HotelId", "source": "/document/tableprojection" }
    ]
  }
]

Az oszlopok a "forrásból" származnak. A következő, HotelId, HotelName, Category és Description adatokat tartalmazó adatalakzat a táblázatban lévő oszlopok létrehozását eredményezi.

{
    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
    "name": "#3",
    "description": null,
    "context": "/document",
    "inputs": [
    {
        "name": "HotelId",
        "source": "/document/HotelId"
    },
    {
        "name": "HotelName",
        "source": "/document/HotelName"
    },
    {
        "name": "Category",
        "source": "/document/Category"
    },
    {
        "name": "Description",
        "source": "/document/Description"
    },
    ],
    "outputs": [
    {
        "name": "output",
        "targetName": "tableprojection"
    }
    ]
}

Több tábla (szeletelés) példa

A táblavetítések gyakori mintája, hogy több kapcsolódó táblával is rendelkezik, ahol a rendszer által létrehozott partitionKey és rowKey oszlopokkal támogatja a táblaközi kapcsolatokat az azonos vetületcsoportban lévő összes tábla esetében.

Több tábla létrehozása akkor lehet hasznos, ha szabályozni szeretné a kapcsolódó adatok összesítését. Ha a gazdagított tartalomnak vannak nem kapcsolódó vagy független összetevői, például a dokumentumból kinyert kulcsszavak nem kapcsolódnak az ugyanabban a dokumentumban felismert entitásokhoz, feloszthatja ezeket a mezőket szomszédos táblákra.

Ha több táblázatra vetít, a teljes struktúra minden táblázatba belekerül, kivéve, ha egy gyermekcsomópont egy másik táblázat adatszerkezeti elem forrása azonos csoportban. Ha egy meglévő vetítés gyermekét tartalmazó forrásútvonallal rendelkező vetítést adunk hozzá, a gyermekcsomópont kiemelődik a szülőcsomópontból, és az új, de kapcsolódó táblába vetül. Ez a technika lehetővé teszi egyetlen csomópont definiálását egy Shaper-képességben, amely az összes előrejelzés forrása lehet.

Több tábla mintája a következőkből áll:

  • Egy tábla szülő- vagy főtáblaként
  • Egyéb táblázatok, amelyek a bővített tartalom szeleteit tartalmazzák

Tegyük fel például, hogy egy Shaper-képesség egy "EnrichedShape" értéket ad ki, amely szállodai információkat, valamint bővített tartalmakat, például kulcskifejezéseket, helyszíneket és szervezeteket tartalmaz. A főtábla a szállodát leíró mezőket (azonosító, név, leírás, cím, kategória) tartalmazza. A kulcskifejezések a kulcskifejezések oszlopát kapják meg. Az entitások megkapják az entitásoszlopokat.

"projections" : [
  {
    "tables": [
    { "tableName": "MainTable", "generatedKeyName": "HotelId", "source": "/document/EnrichedShape" },
    { "tableName": "KeyPhrases", "generatedKeyName": "KeyPhraseId", "source": "/document/EnrichedShape/*/KeyPhrases/*" },
    { "tableName": "Entities", "generatedKeyName": "EntityId", "source": "/document/EnrichedShape/*/Entities/*" }
    ]
  }
]

Névadási kapcsolatok

A generatedKeyName tulajdonságok és referenceKeyName a tulajdonságok táblák vagy akár vetülettípusok adatainak összekapcsolására szolgálnak. A gyermektábla minden sorában van egy tulajdonság, amely a szülőre mutat. A gyermek oszlopának vagy tulajdonságának neve a referenceKeyName szülőtől származik. Ha a referenceKeyName nincs megadva, a szolgáltatás alapértelmezésként a szülőtől származó generatedKeyName értéket használja.

A Power BI ezeket a létrehozott kulcsokat használja a táblákon belüli kapcsolatok felderítéséhez. Ha a gyermektábla más néven elnevezett oszlopára van szüksége, állítsa be a referenceKeyName tulajdonságot a szülőtáblán. Például állítsd be a generatedKeyName mint ID-t a tblDocument táblán és a referenceKeyName mint DocumentID-t. Ez azt eredményezné, hogy a tblEntities és a tblKeyPhrases táblák oszlopa a DocumentID nevű dokumentumazonosítót tartalmazza.

Objektumvetítés definiálása

Az objektumvetítések a bővítési fa JSON-ábrázolásai, amelyek bármely csomópontból származhatnak. A táblavetületekkel összehasonlítva az objektumvetítések egyszerűbben definiálhatók és használhatók a teljes dokumentumok kivetítésekor. Az objektumvetítések egy tároló egyetlen vetületére korlátozódnak, és nem szeletelhetők.

Objektumvetítés definiálásához használja a objects tömböt a vetítések tulajdonságában. Az objektumvetítés három szükséges tulajdonsággal rendelkezik:

Property Description
storageContainer Meghatározza az Azure Storage-ban létrehozott új tároló nevét.
generatedKeyName Az egyes sorokat egyedileg azonosító kulcs oszlopneve. Az érték rendszer által generált. Ha kihagyja ezt a tulajdonságot, a rendszer automatikusan létrehoz egy oszlopot, amely a tábla nevét és a "kulcsot" használja elnevezési konvencióként.
adatforrás Egy csomópont elérési útja egy gazdagítófán, amely a kivetítés gyökere. A csomópont általában egy összetett adatalakzatra mutató hivatkozás, amely meghatározza a blob szerkezetét.

Az alábbi példa az egyes szállodai dokumentumokat, blobonként egy szállodai dokumentumot egy úgynevezett hotelstárolóba veti be.

"knowledgeStore": {
  "storageConnectionString": "an Azure storage connection string",
  "projections" : [
    {
      "tables": [ ]
    },
    {
      "objects": [
        {
        "storageContainer": "hotels",
        "source": "/document/objectprojection",
        }
      ]
    },
    {
        "files": [ ]
    }
  ]
}

A forrás a ""objectprojection"" nevű Shaper-képesség eredménye. Minden blob JSON-reprezentációval rendelkezik az egyes mezőbemenetek esetében.

    {
      "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
      "name": "#3",
      "description": null,
      "context": "/document",
      "inputs": [
        {
          "name": "HotelId",
          "source": "/document/HotelId"
        },
        {
          "name": "HotelName",
          "source": "/document/HotelName"
        },
        {
          "name": "Category",
          "source": "/document/Category"
        },
        {
          "name": "keyPhrases",
          "source": "/document/HotelId/keyphrases/*"
        },
      ],
      "outputs": [
        {
          "name": "output",
          "targetName": "objectprojection"
        }
      ]
    }

Fájlvetítés definiálása

A fájlvetítések mindig bináris, normalizált képek, ahol a normalizálás a képességkészletek végrehajtásához használható lehetséges átméretezést és forgatást jelenti. Az objektumvetítésekhez hasonló fájlvetítések blobokként jönnek létre az Azure Storage-ban, és bináris adatokat tartalmaznak (szemben a JSON-sal).

Fájlvetítés definiálásához használja a files tömböt a vetítések tulajdonságában. A fájlvetítés három szükséges tulajdonsággal rendelkezik:

Property Description
storageContainer Meghatározza az Azure Storage-ban létrehozott új tároló nevét.
generatedKeyName Az egyes sorokat egyedileg azonosító kulcs oszlopneve. Az érték rendszer által generált. Ha kihagyja ezt a tulajdonságot, a rendszer automatikusan létrehoz egy oszlopot, amely a tábla nevét és a "kulcsot" használja elnevezési konvencióként.
adatforrás Egy csomópont elérési útja egy gazdagítófán, amely a kivetítés gyökere. A képfájlok esetében a forrás mindig /document/normalized_images/*. A fájlvetítések csak a normalized_images gyűjteményen működnek. Sem az indexelők, sem a képességkészletek nem haladnak át az eredeti nem normalizált képen.

A cél mindig egy blobtároló, amely a dokumentumazonosító base64 kódolású értékének mappaelőtagjával rendelkezik. Ha több kép is van, azokat ugyanabban a mappában helyezik el. A fájlvetítések nem oszthatják meg ugyanazt a tárolót, mint az objektumvetítések, ezért egy másik tárolóba kell kivetíteni.

Az alábbi példa egy bővített dokumentum dokumentumcsomópontjából kinyert összes normalizált lemezképet egy úgynevezett myImagestárolóba alakítja.

"projections": [
    {
        "tables": [ ],
        "objects": [ ],
        "files": [
            {
                "storageContainer": "myImages",
                "source": "/document/normalized_images/*"
            }
        ]
    }
]

Tesztvetítések

A vetítések feldolgozásához kövesse az alábbi lépéseket:

  1. Állítsa be a tudástár tulajdonságát storageConnectionString érvényes V2 általános célú tárfiókhoz kapcsolati sztringre.

  2. Frissítse a készségkészletet úgy, hogy egy PUT-kéréssel benyújtja a vetítési definíciót a készségkészlet törzs részében.

  3. Futtassa az indexelőt a képességkészlet végrehajtásához.

  4. Az indexelő végrehajtásának monitorozása az előrehaladás ellenőrzéséhez és a hibák észleléséhez.

  5. Az Azure Portal használatával ellenőrizheti az objektumok létrehozását az Azure Storage-ban.

  6. Ha táblákat vetít ki, importálja őket a Power BI-ba táblázatkezeléshez és vizualizációhoz. A Legtöbb esetben a Power BI automatikusan észleli a táblák közötti kapcsolatokat.

Gyakori problémák

Az alábbi lépések kihagyása váratlan eredményeket eredményezhet. Ellenőrizze a következő feltételeket, ha a kimenet nem megfelelő.

  • A sztringek bővítése nem érvényes JSON-ra van formázva. Ha a sztringek gazdagodnak, például merged_content kulcskifejezésekkel gazdagodnak, a gazdagított tulajdonság a gazdagítási merged_content fán belül gyermekként jelenik meg. Az alapértelmezett ábrázolás nem megfelelően formázott JSON. A kijelzéskor győződjön meg arról, hogy a bővítést egy érvényes JSON-objektummá alakítja, amelynek neve és értéke van. A probléma megoldásához a Shaper használata vagy beágyazott alakzatok meghatározása segít.

  • A /* kihagyása a forrásútvonal végén. Ha a kivetítés forrása a /document/projectionShape/keyPhrases, a kulcskifejezések tömbje egyetlen objektumként vagy sorként lesz kivetítve. Ehelyett állítsa be a forrás elérési útját úgy, hogy /document/projectionShape/keyPhrases/* az egyes kulcskifejezésekhez egyetlen sort vagy objektumot adjon meg.

  • Az útvonal szintaxis hiba. Az elérési út kiválasztók érzékenyek a kis- és nagybetűkre, és hiányzó bemeneti figyelmeztetésekhez vezethetnek, ha nem pontosan ugyanazt a kis- és nagybetűs használatot alkalmazza a választóban.

Következő lépések

A következő lépés végigvezeti egy gazdag képességkészlet kimenetének alakításán és kivetítésén. Ha a készségkészlet összetett, az alábbi cikk példákat tartalmaz az alakzatokra és a kivetítésekre is.