Kennisarchief 'projecties' in Azure AI Search

Projecties definiëren de fysieke tabellen, objecten en bestanden in een kennisarchief dat inhoud van een Azure AI Search-verrijkingspijplijn accepteert. Als u een kennisarchief maakt, bestaat het meeste werk uit het definiëren en vormgeven van projecties.

In dit artikel worden projectieconcepten en werkstroom geïntroduceerd, zodat u enige achtergrond hebt voordat u begint met coderen.

Projecties worden gedefinieerd in vaardighedensets van Azure AI Search, maar de eindresultaten zijn de projecties van tabellen, objecten en afbeeldingsbestanden in Azure Storage.

Projections expressed in Azure Storage

Typen projecties en gebruik

Een kennisarchief is een logische constructie die fysiek wordt uitgedrukt als een losse verzameling tabellen, JSON-objecten of binaire afbeeldingsbestanden in Azure Storage.

Projectie Storage Gebruik
Tabellen Azure-tabelopslag Wordt gebruikt voor gegevens die het beste worden weergegeven als rijen en kolommen, of wanneer u gedetailleerde weergaven van uw gegevens nodig hebt (bijvoorbeeld als gegevensframes). Met tabelprojecties kunt u een geschematiseerde shape definiëren met behulp van een Shaper-vaardigheid of inline-vormgeving gebruiken om kolommen en rijen op te geven. U kunt inhoud in meerdere tabellen ordenen op basis van vertrouwde normalisatieprincipes. Tabellen die zich in dezelfde groep bevinden, zijn automatisch gerelateerd.
Objecten Azure Blob-opslag Wordt gebruikt wanneer u de volledige JSON-weergave van uw gegevens en verrijkingen in één JSON-document nodig hebt. Net als bij tabelprojecties kunnen alleen geldige JSON-objecten worden geprojecteerd als objecten en kunt u dit vormgeven.
Bestanden Azure Blob-opslag Wordt gebruikt wanneer u genormaliseerde, binaire afbeeldingsbestanden moet opslaan.

Projectiedefinitie

Projecties worden opgegeven onder de eigenschap 'knowledgeStore' van een vaardighedenset. Projectiedefinities worden gebruikt tijdens het aanroepen van de indexeerfunctie voor het maken en laden van objecten in Azure Storage met verrijkte inhoud. Als u niet bekend bent met deze concepten, begint u met AI-verrijking voor een inleiding.

In het volgende voorbeeld ziet u de plaatsing van projecties onder knowledgeStore en de basisconstructie. De naam, het type en de inhoudsbron vormen een projectiedefinitie.

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
      {
        "tables": [
          { "tableName": "ks-museums-main", "generatedKeyName": "ID", "source": "/document/tableprojection" },
          { "tableName": "ks-museumEntities", "generatedKeyName": "ID","source": "/document/tableprojection/Entities/*" }
        ],
        "objects": [
          { "storageContainer": "ks-museums", "generatedKeyName": "ID", "source": "/document/objectprojection" }
        ],
        "files": [ ]
      }
    ]

Projectiegroepen

Projecties zijn een matrix van complexe verzamelingen, wat betekent dat u meerdere sets van elk type kunt opgeven. Het is gebruikelijk om slechts één projectiegroep te gebruiken, maar u kunt er meerdere gebruiken als opslagvereisten verschillende hulpprogramma's en scenario's ondersteunen. U kunt bijvoorbeeld één groep gebruiken voor het ontwerpen en opsporen van fouten in een vaardighedenset, terwijl een tweede set uitvoer verzamelt die wordt gebruikt voor een online-app, met een derde voor data science-workloads.

Dezelfde uitvoer van de vaardighedenset wordt gebruikt om alle groepen onder projecties te vullen. In het volgende voorbeeld ziet u twee.

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

Projectiegroepen hebben de volgende belangrijke kenmerken van wederzijdse exclusiviteit en verwantschap.

Principe Beschrijving
Wederzijdse exclusiviteit Elke groep is volledig geïsoleerd van andere groepen ter ondersteuning van verschillende scenario's voor het vormgeven van gegevens. Als u bijvoorbeeld verschillende tabelstructuren en combinaties test, plaatst u elke set in een andere projectiegroep voor AB-tests. Elke groep haalt gegevens op uit dezelfde bron (verrijkingsstructuur), maar is volledig geïsoleerd van de combinatie van tabel-object-bestand van alle peerprojectiegroepen.
Verwantschap Binnen een projectiegroep zijn inhoud in tabellen, objecten en bestanden gerelateerd. Kennisarchief maakt gebruik van gegenereerde sleutels als referentiepunten naar een gemeenschappelijk bovenliggend knooppunt. Denk bijvoorbeeld aan een scenario waarin u een document hebt met afbeeldingen en tekst. U kunt de tekst projecteren naar tabellen en de afbeeldingen naar binaire bestanden, en zowel tabellen als objecten hebben een kolom/eigenschap die de bestands-URL bevat.

Projectie "bron"

De bronparameter is het derde onderdeel van een projectiedefinitie. Omdat projecties gegevens opslaan uit een AI-verrijkingspijplijn, is de bron van een projectie altijd de uitvoer van een vaardigheid. Als zodanig kan uitvoer één veld zijn (bijvoorbeeld een veld met vertaalde tekst), maar vaak is het een verwijzing naar een gegevensshape.

Gegevensshapes zijn afkomstig uit uw vaardighedenset. Onder alle ingebouwde vaardigheden die worden geboden in Azure AI Search, is er een hulpprogramma-vaardigheid genaamd de Shaper-vaardigheid die wordt gebruikt om gegevensshapes te maken. U kunt Shaper-vaardigheden (zoveel als u nodig hebt) opnemen om de projecties in het kennisarchief te ondersteunen.

Shapes worden vaak gebruikt met tabelprojecties, waarbij de shape niet alleen aangeeft welke rijen naar de tabel gaan, maar ook welke kolommen worden gemaakt (u kunt ook een shape doorgeven aan een objectprojectie).

Shapes kunnen complex zijn en het valt buiten het bereik om ze hier uitgebreid te bespreken, maar in het volgende voorbeeld ziet u een korte illustratie van een basisshape. De uitvoer van de shaper-vaardigheid wordt opgegeven als de bron van een tabelprojectie. In de tabelprojectie zelf staan kolommen voor 'metadata-storage_path', 'reviews_text', 'reviews_title', enzovoort, zoals opgegeven in de shape.

{
    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
    "name": "ShaperForTables",
    "description": null,
    "context": "/document",
    "inputs": [
        {
            "name": "metadata_storage_path",
            "source": "/document/metadata_storage_path",
            "sourceContext": null,
            "inputs": []
        },
        {
          "name": "reviews_text",
          "source": "/document/reviews_text"
        }, 
        {
          "name": "reviews_title",
          "source": "/document/reviews_title"
        },
        {
          "name": "reviews_username",
          "source": "/document/reviews_username"
        },
    ],
    "outputs": [
      {
        "name": "output",
        "targetName": "mytableprojection"
      }
    ]
}

Projectielevenscyclus

Projecties hebben een levenscyclus die is gekoppeld aan de brongegevens in uw gegevensbron. Wanneer brongegevens worden bijgewerkt en opnieuw worden geïndexeerd, worden projecties bijgewerkt met de resultaten van de verrijkingen, zodat uw projecties uiteindelijk consistent zijn met de gegevens in uw gegevensbron. Projecties worden echter ook onafhankelijk opgeslagen in Azure Storage. Ze worden niet verwijderd wanneer de indexeerfunctie of de zoekservice zelf wordt verwijderd.

Gebruiken in apps

Nadat de indexeerfunctie is uitgevoerd, maakt u verbinding met projecties en gebruikt u de gegevens in andere apps en workloads.

  • Gebruik Azure Portal om het maken van objecten en inhoud in Azure Storage te controleren.

  • Gebruik Power BI voor gegevensverkenning. Dit hulpprogramma werkt het beste wanneer de gegevens zich in Azure Table Storage bevinden. In Power BI kunt u gegevens bewerken in nieuwe tabellen die gemakkelijker te doorzoeken en te analyseren zijn.

  • Gebruik verrijkte gegevens in een blobcontainer in een data science-pijplijn. U kunt bijvoorbeeld de gegevens uit blobs laden in een Pandas DataFrame.

  • Ten slotte, als u uw gegevens wilt exporteren uit het kennisarchief, heeft Azure Data Factory connectors om de gegevens te exporteren en in de database van uw keuze te landen.

Controlelijst voor aan de slag

Zoals u weet, zijn projecties exclusief voor kennisarchieven en worden ze niet gebruikt om een zoekindex te structuren.

  1. Haal in Azure Storage een verbindingsreeks op uit toegangssleutels en controleer of het account StorageV2 (algemeen gebruik V2) is.

  2. Maak in Azure Storage vertrouwd met bestaande inhoud in containers en tabellen, zodat u niet-conflicterende namen voor de projecties kiest. Een kennisarchief is een losse verzameling tabellen en containers. Overweeg een naamconventie te gebruiken om gerelateerde objecten bij te houden.

  3. Schakel in Azure AI Search verrijkingscaching (preview) in de indexeerfunctie in en voer vervolgens de indexeerfunctie uit om de vaardighedenset uit te voeren en de cache te vullen. Dit is een preview-functie. Zorg er dus voor dat u de PREVIEW REST API (api-version=2020-06-30-preview of hoger) gebruikt in de indexeeraanvraag. Zodra de cache is ingevuld, kunt u projectiedefinities gratis wijzigen in een kennisarchief (zolang de vaardigheden zelf niet worden gewijzigd).

  4. In uw code worden alle projecties alleen gedefinieerd in een vaardighedenset. Er zijn geen indexeereigenschappen (zoals veldtoewijzingen of uitvoerveldtoewijzingen) die van toepassing zijn op projecties. Binnen een definitie van een vaardighedenset richt u zich op twee gebieden: knowledgeStore-eigenschappen en vaardighedenmatrix.

    1. Geef onder knowledgeStore tabel, object, bestandsprojecties in de projections sectie op. Objecttype, objectnaam en hoeveelheid (per aantal projecties die u definieert) worden bepaald in deze sectie.

    2. Bepaal in de vaardighedenmatrix welke vaardigheidsuitvoer moet worden verwezen in de source projectie. Alle projecties hebben een bron. De bron kan de uitvoer zijn van een upstream-vaardigheid, maar is vaak de uitvoer van een Shaper-vaardigheid. De samenstelling van uw projectie wordt bepaald door vormen.

  5. Als u projecties toevoegt aan een bestaande vaardighedenset, werkt u de vaardighedenset bij en voert u de indexeerfunctie uit.

  6. Controleer uw resultaten in Azure Storage. Vermijd bij volgende uitvoeringen naamconflicten door objecten in Azure Storage te verwijderen of projectnamen in de vaardighedenset te wijzigen.

  7. Als u tabelprojecties gebruikt, controleert u Inzicht in het tabelservicegegevensmodel en de schaalbaarheids- en prestatiedoelen voor Table Storage om ervoor te zorgen dat uw gegevensvereisten binnen de gedocumenteerde limieten voor Table Storage vallen.

Volgende stappen

Bekijk de syntaxis en voorbeelden voor elk projectietype.