Az Azure AI Search-képességkészlet környezet- és forrástulajdonságait használó gazdagított csomópontok elérési útjának hivatkozása

A képességkészlet végrehajtása során a motor létrehoz egy memóriabeli dúsítási fát , amely rögzíti az egyes bővítéseket, például felismert entitásokat vagy lefordított szöveget. Ebből a cikkből megtudhatja, hogyan hivatkozhat a gazdagítási fában található bővítési csomópontra, hogy átadhassa a kimenetet az alsóbb rétegbeli készségeknek, vagy megadhat egy kimeneti mezőleképezést egy keresési indexmezőhöz.

Ez a cikk példákkal szemlélteti a különböző forgatókönyveket. A teljes szintaxist a Szakértelem környezete és a beviteli széljegyzet nyelve című témakörben tekintheti meg.

Háttérfogalmak

Mielőtt áttekintené a szintaxist, tekintsünk át néhány fontos fogalmat a cikk későbbi részében bemutatott példák jobb megértéséhez.

Időszak Leírás
"bővített dokumentum" A bővített dokumentum egy memórián belüli struktúra, amely összegyűjti a képességkimenetet a létrehozásakor, és a dokumentumhoz kapcsolódó összes bővítést tartalmazza. Gondoljon egy bővített dokumentumra, mint egy fára. A fa általában a gyökérdokumentum szintjén kezdődik, és minden új bővítés egy korábbi gyermekből jön létre.
"csomópont" A bővített dokumentumokban egy csomópontot (más néven "széljegyzetet") hoz létre és tölt fel egy képesség, például a "text" és az "layoutText" az OCR-képességben. A bővített dokumentumokat a program a forrásból másolt eredeti forrásmezőértékekkel és metaadatokkal együtt tölti ki.
"környezet" A bővítés hatóköre, amely vagy a teljes dokumentum, egy dokumentum egy része, vagy ha képekkel dolgozik, a dokumentumból kinyert képek. Alapértelmezés szerint a bővítési környezet a "/document" szinten van, és az adatforrásban található egyes dokumentumokra terjed ki. Egy képesség futtatásakor a képesség kimenetei a meghatározott környezet tulajdonságaivá válnak.

Különböző forgatókönyvek elérési útjai

Az elérési utak egy képességkészlet "környezet" és "forrás" tulajdonságaiban, valamint az indexelő kimeneti mezőleképezéseiben vannak megadva.

Képernyőkép egy képességkészlet-definícióról, kiemelve a környezet- és a forráselemeket.

A képernyőképen látható példa egy Azure Cosmos DB-gyűjtemény egy elemének elérési útját mutatja be.

  • context elérési útja az, /document/HotelId hogy a gyűjteményt a mező dokumentumaiba particionálta /HotelId .

  • source az elérési út azért van /document/Description , mert a képesség fordítási képesség, és a lefordítandó mező az Description egyes dokumentumok mezője.

Minden elérési út ezzel /documentkezdődik: . A bővített dokumentum az indexelő végrehajtásának "dokumentumrepedés" szakaszában jön létre, amikor az indexelő megnyit egy dokumentumot, vagy egy sorban olvas az adatforrásból. Kezdetben a bővített dokumentumok egyetlen csomópontja a gyökércsomópont (/document), és ez az a csomópont, ahonnan az összes többi bővítés történik.

Az alábbi lista számos gyakori példát tartalmaz:

  • /document a gyökércsomópont, amely egy teljes blobot jelöl az Azure Storage-ban, vagy egy SQL-tábla egy sorát.
  • /document/{key} Egy Azure Cosmos DB-gyűjtemény dokumentumának vagy elemének szintaxisa, ahol {key} a tényleges kulcs található, például /document/HotelId az előző példában.
  • /document/content egy JSON-blob "content" tulajdonságát adja meg.
  • /document/{field} egy adott mezőn végrehajtott művelet szintaxisa, például a /document/Description mező lefordítása, amely az előző példában látható.
  • /document/pages/* vagy /document/sentences/* a környezetté, ha egy nagy dokumentumot kisebb adattömbökre tör feldolgozásra. Ha a "környezet" az /document/pages/*, a képesség a dokumentum minden oldalán egyszer végrehajtja a elemet. Mivel egynél több oldal vagy mondat is lehet, az összeset hozzá kell fűznie /* .
  • /document/normalized_images/* akkor jön létre, ha a dokumentum képeket tartalmaz. A képek elérési útjai normalized_images kezdődnek. Mivel gyakran több kép van beágyazva egy dokumentumba, fűzze hozzá /*.

A cikk hátralévő részében található példák az Azure blobindexelők által automatikusan létrehozott "tartalom" mezőn alapulnak a dokumentumtörési fázis részeként. Amikor blobtárolóból származó dokumentumokra hivatkozik, használjon olyan formátumot, mint "/document/content"például a "tartalom" mező a "dokumentum" része.

1. példa: Egyszerű széljegyzethivatkozás

Tegyük fel, hogy az Azure Blob Storage-ban számos fájl található, amelyek az entitásfelismeréssel kinyerni kívánt személyek nevére mutató hivatkozásokat tartalmaznak. A következő képességdefinícióban "/document/content" a teljes dokumentum szöveges ábrázolása, a "személyek" pedig a személyekként azonosított entitások teljes nevének kinyerése.

Mivel az alapértelmezett környezet az "/document", a személyek listája mostantól a következőképpen hivatkozhat gombra "/document/people". Ebben a konkrét esetben "/document/people" egy széljegyzet, amely mostantól leképezhető egy index egy mezőjére, vagy egy másik készségben is használható ugyanabban a képességkészletben.

  {
    "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
    "categories": [ "Person"],
    "defaultLanguageCode": "en",
    "inputs": [
      {
        "name": "text",
        "source": "/document/content"
      }
    ],
    "outputs": [
      {
        "name": "persons",
        "targetName": "people"
      }
    ]
  }

2. példa: Hivatkozás egy tömbre egy dokumentumban

Ez a példa az előzőre épül, amely bemutatja, hogyan hívhat meg többször egy bővítési lépést ugyanazon a dokumentumon keresztül. Tegyük fel, hogy az előző példa sztringekből álló tömböt hozott létre egyetlen dokumentumból 10 személynévvel. Egy ésszerű következő lépés lehet egy második bővítés, amely kinyeri a vezetéknevet egy teljes névből. Mivel 10 név van, ezt a lépést 10-szer kell meghívni ebben a dokumentumban, egyenként egyszer.

A megfelelő számú iteráció meghívásához állítsa be a környezetet úgy, hogy "/document/people/*"a csillag ("*") a bővített dokumentum összes csomópontját a program leszármazottjaként "/document/people"jelöli. Bár ez a képesség csak egyszer van definiálva a képességtömbben, a rendszer a dokumentum minden tagjához meghívja, amíg az összes tag feldolgozásra nem kerül.

  {
    "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
    "description": "Fictitious skill that gets the last name from a full name",
    "uri": "http://names.azurewebsites.net/api/GetLastName",
    "context" : "/document/people/*",
    "defaultLanguageCode": "en",
    "inputs": [
      {
        "name": "fullname",
        "source": "/document/people/*"
      }
    ],
    "outputs": [
      {
        "name": "lastname",
        "targetName": "last"
      }
    ]
  }

Ha a széljegyzetek tömbök vagy sztringek gyűjteményei, érdemes lehet az adott tagokat megcélzni a tömb egésze helyett. A fenti példa a környezet által képviselt csomópontok alatt egy jegyzetet "last" hoz létre. Ha erre a széljegyzetcsaládra szeretne hivatkozni, használhatja a szintaxist "/document/people/*/last". Ha egy adott széljegyzetre szeretne hivatkozni, használhat egy explicit indexet: "/document/people/1/last" használatával hivatkozhat a dokumentumban azonosított első személy vezetéknevére. Figyelje meg, hogy ebben a szintaxistömbben a "0 indexelt" érték szerepel.

3. példa: Hivatkozás tagokra egy tömbben

Néha egy adott típusú széljegyzetet kell csoportosítania, hogy átadhassa őket egy adott képességnek. Vegyünk egy hipotetikus egyéni képességet, amely a 2. példában kinyert összes vezetéknév leggyakoribb vezetéknevét azonosítja. Ha csak a vezetékneveket szeretné megadni az egyéni képességnek, adja meg a kontextust "/document" és a bemenetet."/document/people/*/lastname"

Figyelje meg, hogy a számosság "/document/people/*/lastname" nagyobb, mint a dokumentum. Előfordulhat, hogy 10 vezetéknévcsomópont van, míg ehhez a dokumentumhoz csak egy dokumentumcsomópont van. Ebben az esetben a rendszer automatikusan létrehoz egy tömböt "/document/people/*/lastname" , amely tartalmazza a dokumentum összes elemét.

  {
    "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
    "description": "Fictitious skill that gets the most common string from an array of strings",
    "uri": "http://names.azurewebsites.net/api/MostCommonString",
    "context" : "/document",
    "inputs": [
      {
        "name": "strings",
        "source": "/document/people/*/lastname"
      }
    ],
    "outputs": [
      {
        "name": "mostcommon",
        "targetName": "common-lastname"
      }
    ]
  }

Tippek a széljegyzetek elérési útjának hibaelhárításához

Ha problémákat tapasztal a képességbemenetek megadásával kapcsolatban, az alábbi tippek segíthetnek a továbblépésben:

  • Futtassa az Adatok importálása varázslót az adatokon a varázsló által létrehozott képességkészlet-definíciók és mezőleképezések áttekintéséhez.

  • Hibakeresési munkamenet indítása egy készségkészleten a bővített dokumentumok szerkezetének megtekintéséhez. Szerkesztheti a képességdefiníció elérési útjait és más részeit, majd futtathatja a képességet a módosítások ellenőrzéséhez.

Lásd még