Képességkészlet létrehozása az Azure AI Searchben

indexer stages

A képességkészlet olyan műveleteket határoz meg, amelyek szöveges tartalmat és struktúrát hoznak létre képeket vagy strukturálatlan szöveget tartalmazó dokumentumokból. Ilyenek például a képek OCR-jei, a nem közömbös szövegek entitásfelismerése és a szövegfordítás. A képességkészlet a szöveg és képek külső adatforrásból való kinyerése és a mezőleképezések feldolgozása után hajtja végre.

Ez a cikk bemutatja, hogyan hozhat létre készségkészletet REST API-k használatával, de ugyanezek a fogalmak és lépések érvényesek más programozási nyelvekre is.

A képességkészlet-definícióra vonatkozó szabályok a következők:

  • Egy egyedi név a készségkészlet-gyűjteményben. A készségkészlet egy legfelső szintű erőforrás, amelyet bármely indexelő használhat.
  • Legalább egy képesség. 3-5 képesség jellemző. A maximális érték 30.
  • A készségkészletek azonos típusú készségeket (például több Shaper-készséget) képesek megismételni.
  • A képességkészlet támogatja a láncolt műveleteket, a hurkokat és az elágaztatást.

Az indexelők a képességkészlet végrehajtását hajtják végre. A képességkészlet teszteléséhez indexelőre, adatforrásra és indexre van szüksége.

Tipp.

Engedélyezze a bővítési gyorsítótárazást a már feldolgozott tartalom újrafelhasználásához , és csökkentse a fejlesztési költségeket.

Képességkészlet-definíció hozzáadása

Kezdje az alapstruktúrával. A Create Skillset REST API-ban a kérés törzse JSON-ban van létrehozva, és a következő szakaszokból áll:

{
   "name":"skillset-template",
   "description":"A description makes the skillset self-documenting (comments aren't allowed in JSON itself)",
   "skills":[
       
   ],
   "cognitiveServices":{
      "@odata.type":"#Microsoft.Azure.Search.CognitiveServicesByKey",
      "description":"An Azure AI services resource in the same region as Azure AI Search",
      "key":"<Your-Cognitive-Services-Multiservice-Key>"
   },
   "knowledgeStore":{
      "storageConnectionString":"<Your-Azure-Storage-Connection-String>",
      "projections":[
         {
            "tables":[ ],
            "objects":[ ],
            "files":[ ]
         }
      ]
    },
    "encryptionKey":{ }
}

A név és a leírás után egy készségkészlet négy fő tulajdonsággal rendelkezik:

  • skillstömb, a készségek rendezetlen gyűjteménye. A készségek lehetnek haszonelvűek (például szöveg felosztása), átalakítási (az Azure AI-szolgáltatásokból származó AI-n alapuló) vagy az Ön által biztosított egyéni készségek. A következő szakaszban egy készségtömböt mutatunk be.

  • cognitiveServicesAz Azure AI-szolgáltatások API-jait hívó számlázható készségekhez használatos. Távolítsa el ezt a szakaszt, ha nem számlázható készségeket vagy egyéni entitáskeresést használ. Ha van, csatoljon egy erőforrást .

  • knowledgeStore (nem kötelező) egy Azure Storage-fiókot és a képességkészlet kimenetének az Azure Storage-ban lévő táblákba, blobokba és fájlokba való kivetítését szolgáló beállításokat adja meg. Ha nincs rá szüksége, távolítsa el ezt a szakaszt, különben adjon meg egy tudástárat.

  • encryptionKey(nem kötelező) egy Azure Key Vaultot és ügyfél által felügyelt kulcsokat határoz meg, amelyek bizalmas tartalmak (leírások, kapcsolati sztring, kulcsok) titkosítására szolgálnak egy képességkészlet-definícióban. Távolítsa el ezt a tulajdonságot, ha nem ügyfél által felügyelt titkosítást használ.

Készségek hozzáadása

A képességkészlet-definíción belül a képességtömb határozza meg, hogy mely képességeket kell végrehajtani. A háromtól ötig terjedő készségek gyakoriak, de a szolgáltatási korlátoktól függően annyi készséget adhat hozzá, amennyi szükséges.

A bővítési folyamat végeredménye szöveges tartalom egy keresési indexben vagy egy tudástárban. Emiatt a legtöbb képesség vagy képekből (OCR-szöveg, képaláírás, címkék) hoz létre szöveget, vagy elemzi a meglévő szöveget új információk (entitások, kulcskifejezések, hangulat) létrehozásához. Az önállóan működő készségek feldolgozása párhuzamosan történik. Az egymástól függő készségek meghatározzák egy képesség kimenetét (például kulcskifejezéseket) a második képesség bemeneteként (például szövegfordítás). A keresési szolgáltatás határozza meg a képesség végrehajtásának sorrendjét és a végrehajtási környezetet.

Minden készség típussal, környezettel, bemenetekkel és kimenetekkel rendelkezik. Előfordulhat, hogy egy képességnek neve és leírása is van. Az alábbi példa két egymástól független beépített képességet mutat be, hogy összehasonlíthassa az alapszintű struktúrát.

"skills": [
    {
        "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
        "name": "#1",
        "description": "This skill detects organizations in the source content",
        "context": "/document",
        "categories": [
            "Organization"
        ],
        "inputs": [
            {
                "name": "text",
                "source": "/document/content"
            }
        ],
        "outputs": [
            {
                "name": "organizations",
                "targetName": "orgs"
            }
        ]
    },
    {
        "name": "#2",
        "description": "This skill detects corporate logos in the source files",
        "@odata.type": "#Microsoft.Skills.Vision.ImageAnalysisSkill",
        "context": "/document/normalized_images/*",
        "visualFeatures": [
            "brands"
        ],
        "inputs": [
            {
                "name": "image",
                "source": "/document/normalized_images/*"
            }
        ],
        "outputs": [
            {
                "name": "brands"
            }
        ]
    }
]

Minden képesség egyedi a bemeneti értékek és a szükséges paraméterek szempontjából. A szakértelemre vonatkozó referenciadokumentáció egy adott képesség összes paraméterét és tulajdonságát ismerteti. Bár vannak különbségek, a legtöbb készség közös halmazt használ, és hasonló mintázatú.

Feljegyzés

A kifejezések létrehozásához a Feltételes képesség használatával összetett készségkészleteket hozhat létre hurkolással és elágaztatással. A szintaxis a JSON-mutató elérési útjának jelölésén alapul, és néhány módosítással azonosítja a csomópontokat a bővítési fában. A "/" bejárások a fán alacsonyabb szinten haladnak, és "*" a környezet minden egyes operátoraként szolgálnak. A cikkben számos példa szemlélteti a szintaxist.

Képességkörnyezet beállítása

Minden képesség rendelkezik egy környezeti tulajdonságokkal , amelyek meghatározzák a műveletek végrehajtásának szintjét. Ha a "context" tulajdonság nincs explicit módon beállítva, az alapértelmezett érték "/document"az, ahol a környezet a teljes dokumentum (a képesség dokumentumonként egyszer van meghívva).

"skills":[
  {
    "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
    "context": "/document",
    "inputs": [],
    "outputs": []
  },
  {
      "@odata.type": "#Microsoft.Skills.Vision.ImageAnalysisSkill",
      "context": "/document/normalized_images/*",
      "visualFeatures": [],
      "inputs": [],
      "outputs": []
  }
]

A környezet általában az alábbi példák egyikére van beállítva:

Példa környezetre Leírás
"context": "/document" (Alapértelmezett) A bemenetek és kimenetek a dokumentum szintjén vannak.
"context": "/document/pages/*" Egyes készségek, például a hangulatelemzés jobban teljesítnek kisebb szövegtömböknél. Ha egy nagy tartalommezőt lapokra vagy mondatokra oszt, a környezetnek minden összetevőrészen át kell lennie.
"context": "/document/normalized_images/*" A képtartalmak esetében a bemenetek és kimenetek képenként egyek a szülődokumentumban.

A környezet azt is meghatározza, hogy hol jönnek létre kimenetek a bővítőfán. Az Entitásfelismerési képesség például egy , a következőképpen rögzített nevű tulajdonságot "organizations"ad orgsvissza. Ha a környezet az "/document", akkor a rendszer egy "szervezeti" csomópontot "/document"ad hozzá gyermekként. Ha ezután az alsóbb rétegbeli készségekben hivatkozni szeretne erre a csomópontra, az elérési út az lenne "/document/orgs".

Bemenetek definiálása

A képességek egy gazdagított dokumentumból olvasnak és írnak. A készségbemenetek határozzák meg a bejövő adatok eredetét. Ez gyakran a bővített dokumentum gyökércsomópontja. A blobok esetében a jellemző képességbevitel a dokumentum tartalomtulajdonsága.

Az egyes képességek képesség-referenciadokumentációja leírja, hogy milyen bemeneteket használhat fel. Minden bemenethez tartozik egy "név", amely egy adott bemenetet azonosít, és egy "forrás", amely meghatározza a bővített dokumentum adatainak helyét. A következő példa az Entitásfelismerési képességből származik:

"inputs": [
    {
        "name": "text", 
        "source": "/document/content"
    },
    {
        "name": "languageCode", 
        "source": "/document/language"
    }
]
  • A készségek több bemenettel is rendelkezhetnek. A "név" az adott bemenet. Az Entitásfelismerés esetében a konkrét bemenetek a "text" és a "languageCode".

  • A "forrás" tulajdonság határozza meg, hogy melyik mező vagy sor biztosítja a feldolgozandó tartalmat. A szövegalapú képességekhez a forrás a dokumentum vagy a sor egy olyan mezője, amely szöveget biztosít. A képalapú képességekhez a bemenetet biztosító csomópont normalizált képeket tartalmaz.

    Példa forrásra Leírás
    "source": "/document" Táblázatos adathalmaz esetén a dokumentum egy sornak felel meg.
    "source": "/document/content" Blobok esetén a forrás általában a blob tartalomtulajdonság.
    "source": "/document/some-named-field" A szövegalapú képességek, például az entitásfelismerés vagy a kulcskifejezések kinyerése esetén a forrásnak olyan mezőnek kell lennie, amely elegendő elemezni kívánt szöveget tartalmaz, például "leírást" vagy "összefoglalást".
    "source": "/document/normalized_images/*" A képtartalmak esetében a forrás a dokumentumtörés során normalizált kép.

Ha a képesség egy tömbön keresztül iterál, a környezetnek és a bemeneti forrásnak is szerepelnie /* kell a megfelelő pozíciókban.

Kimenetek meghatározása

Az egyes képességeket úgy tervezték, hogy bizonyos típusú kimeneteket bocsátanak ki, amelyekre a képességkészletben név szerint hivatkoznak. A képességkimenetben szerepel egy "név" és egy választható "targetName" is.

Az egyes képességek képesség-referenciadokumentációja ismerteti az általa előállított kimeneteket. A következő példa az Entitásfelismerési képességből származik:

"outputs": [
    {
        "name": "persons", 
        "targetName": "people"
    },
    {
        "name": "organizations", 
        "targetName": "orgs"
    },
    {
        "name": "locations", 
        "targetName": "places"
    }
]
  • A készségek több kimenettel is rendelkezhetnek. A "név" egy adott kimenetet azonosít. Az Entitásfelismerés esetében például a kimenet lehet többek között "személyek", "helyek", "szervezetek".

  • A "targetName" azt a nevet adja meg, amelyet a csomópontnak a bővített dokumentumban szeretne megadni. Ez akkor hasznos, ha a képességkimenetek neve megegyezik. Ha több olyan képessége van, amely ugyanazt a kimenetet adja vissza, használja a név egyértelműsítését a "targetName" bővítési csomópont elérési útjaiban. Ha a célnév nincs meghatározva, a névtulajdonság mindkettőhöz használható.

Bizonyos helyzetekben a tömb minden elemére külön hivatkozni kell. Tegyük fel például, hogy az egyes elemeket"/document/orgs" külön szeretné átadni egy másik képességnek. Ehhez adjon hozzá csillagot az elérési úthoz: "/document/orgs/*".

A képességkimenet a bővített dokumentumba lesz beírva új csomópontként a bővítési fában. Ez lehet egy egyszerű érték, például hangulatpont vagy nyelvi kód. Gyűjtemény is lehet, például szervezetek, személyek vagy helyek listája. A képességkimenet összetett struktúra is lehet, ahogyan az Shaper-képesség esetében is. A képesség bemenetei határozzák meg az alakzat összetételét, de a kimenet az elnevezett objektum, amelyre hivatkozhat egy keresési indexben, egy tudástár-vetítésben vagy egy másik képességben a neve alapján.

Egyéni képesség hozzáadása

Ez a szakasz egy egyéni képesség példáját tartalmazza. Az URI egy Azure-függvényre mutat, amely viszont meghívja a megadott modellt vagy átalakítást. További információ: Egyéni felület definiálása.

Bár az egyéni képesség a folyamaton kívüli kódot hajt végre, egy képességtömbben ez csak egy újabb képesség. A beépített képességekhez hasonlóan típussal, környezettel, bemenetekkel és kimenetekkel is rendelkezik. Olvasást és írást is végez egy bővítőfán, ahogyan a beépített képességek teszik. Figyelje meg, hogy a "context" mező csillaggal van beállítva"/document/orgs/*", ami azt jelenti, hogy a dúsítási lépés az egyes szervezeteknél "/document/orgs"a .

A kimenet, például a jelen példában szereplő cégleírás minden azonosított szervezethez létre lesz hozva. Ha egy alsóbb rétegbeli lépésben (például kulcskifejezések kinyerésekor) hivatkozik a csomópontra, ehhez használja az elérési utat "/document/orgs/*/companyDescription" .

{
  "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
  "description": "This skill calls an Azure function, which in turn calls custom code",
  "uri": "https://indexer-e2e-webskill.azurewebsites.net/api/InvokeCode?code=foo",
  "httpHeaders": {
      "Ocp-Apim-Subscription-Key": "foobar"
  },
  "context": "/document/orgs/*",
  "inputs": [
    {
      "name": "query",
      "source": "/document/orgs/*"
    }
  ],
  "outputs": [
    {
      "name": "description",
      "targetName": "companyDescription"
    }
  ]
}

Kimenet küldése célhelyre

Bár a képességkimenet opcionálisan gyorsítótárazható újrafelhasználási célokra, ez általában ideiglenes, és csak akkor létezik, ha a képesség végrehajtása folyamatban van.

Tippek első készségkészlethez

  • Próbálja ki az Adatok importálása varázslót.

    A varázsló számos olyan lépést automatizál, amelyek első alkalommal kihívást jelenthetnek. Meghatározza a képességkészletet, az indexet és az indexelőt, beleértve a mezőleképezéseket és a kimeneti mezőleképezéseket. Emellett a tudástárban lévő előrejelzéseket is definiálja, ha használ egyet. Bizonyos készségek, például az OCR vagy a képelemzés esetében a varázsló olyan segédprogram-képességeket ad hozzá, amelyek egyesítik a dokumentumtörés során elválasztott képet és szöveges tartalmat.

    A varázsló futtatása után megnyithatja az egyes objektumokat az Azure Portalon a JSON-definíció megtekintéséhez.

  • Próbálja ki a hibakeresési munkameneteket , hogy meghívja a képességkészlet végrehajtását egy céldokumentumon keresztül, és vizsgálja meg a képességkészlet által létrehozott bővített dokumentumot. Megtekintheti és módosíthatja a bemeneti és kimeneti beállításokat és értékeket. Ez az oktatóanyag jó kiindulópont: Oktatóanyag: Képességkészlet hibakeresése Hibakeresési munkamenetek használatával.

Következő lépések

A környezet és a bemeneti forrásmezők a csomópontok elérési útjai egy bővítőfán. A következő lépésben többet is megtudhat a csomópontok elérési útszintaxisáról egy bővítőfán.