Kennisopslag projecties in Azure Cognitive Search
Projecties zijn de fysieke tabellen, objecten en bestanden in een kennisopslag die inhoud van een Cognitive Search AI-verrijkingspijplijn accepteren. Als u een kennisopslag maakt, is het definiëren en vormgeven van projecties het grootste deel van het werk.
In dit artikel worden projectieconcepten en werkstromen beschreven, zodat u enige achtergrond hebt voordat u begint met coderen.
Projecties worden gedefinieerd in Cognitive Search vaardighedensets, maar de eindresultaat zijn de projecties van tabel-, object- en afbeeldingsbestand in Azure Storage.
Typen projecties en gebruik
Een kennisopslag 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 Table Storage | 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 vorm definiëren met behulp van een Shaper-vaardigheid of inline shaping gebruiken om kolommen en rijen op te geven. U kunt inhoud in meerdere tabellen ordenen op basis van bekende normalisatieprincipes. Tabellen die zich in dezelfde groep hebben, worden automatisch gerelateerd. |
| Objecten | Azure Blob Storage | 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. Dit kan u helpen bij het vormgeven. |
| Bestanden | Azure Blob Storage | 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 indexer om objecten te maken en te laden in Azure Storage 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 maken 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 meerdere gebruiken als opslagvereisten ondersteuning bieden voor verschillende hulpprogramma's en scenario's. 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 verwante kenmerken.
| Principe | Description |
|---|---|
| Wederzijdse exclusiviteit | Elke groep is volledig geïsoleerd van andere groepen om verschillende scenario's voor het vormgeven van gegevens te ondersteunen. Als u bijvoorbeeld verschillende tabelstructuren en combinaties test, zet u elke set in een andere projectiegroep voor AB-tests. Elke groep verkrijgt gegevens uit dezelfde bron (verrijkingsstructuur), maar is volledig geïsoleerd van de combinatie table-object-file van alle peerprojectiegroepen. |
| Gerelateerdheid | Binnen een projectiegroep is inhoud in tabellen, objecten en bestanden gerelateerd. In een kennisopslag worden gegenereerde sleutels gebruikt als referentiepunten naar een gemeenschappelijk bovenliggend knooppunt. Denk bijvoorbeeld aan een scenario waarin u een document met afbeeldingen en tekst hebt. U kunt de tekst naar tabellen en afbeeldingen projecteren 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 uit een AI-verrijkingspijplijn opslaan, is de bron van een projectie altijd de uitvoer van een vaardigheid. Als zodanig kan de uitvoer één veld zijn (bijvoorbeeld een veld met vertaalde tekst), maar vaak is het een verwijzing naar een gegevensvorm.
Gegevensvormen zijn afkomstig uit uw vaardighedenset. Van alle ingebouwde vaardigheden die worden geboden in Cognitive Search, is er een hulpprogramma-vaardigheid genaamd de Shaper-vaardigheid die wordt gebruikt om gegevensvormen te maken. U kunt Shaper-vaardigheden (zoveel als u nodig hebt) opnemen ter ondersteuning van de projecties in het kennisopslag.
Vormen worden vaak gebruikt met tabelprojecties, waarbij de vorm niet alleen aangeeft welke rijen in de tabel komen, maar ook welke kolommen worden gemaakt (u kunt ook een vorm doorgeven aan een objectprojectie).
Vormen kunnen complex zijn en vallen buiten het bereik om ze hier uitgebreid te bespreken, maar in het volgende voorbeeld wordt een eenvoudige vorm kort geïllustreerd. De uitvoer van de vaardigheid Shaper wordt opgegeven als de bron van een tabelprojectie. Binnen de tabelprojectie zelf zijn kolommen voor 'metadata-storage_path', 'reviews_text', 'reviews_title', enzovoort, zoals opgegeven in de vorm.
{
"@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"
}
]
}
Levenscyclus van projectie
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 indexeringsfunctie of de zoekservice zelf wordt verwijderd.
Gebruiken in apps
Nadat de indexering is uitgevoerd, maakt u verbinding met projecties en gebruikt u de gegevens in andere apps en workloads.
Gebruik Storage Browser om het maken van objecten en inhoud te controleren.
Gebruik Power BI voor gegevensverkenning. Dit hulpprogramma werkt het beste wanneer de gegevens zich in Azure Table Storage. Binnen Power BI kunt u gegevens bewerken in nieuwe tabellen die gemakkelijker kunnen worden opgevraagd en geanalyseerd.
Verrijkte gegevens gebruiken in een blobcontainer in een data science-pijplijn. U kunt bijvoorbeeld de gegevens uit blobs laden in een Pandas DataFrame.
Als u ten slotte uw gegevens uit het kennisopslag wilt exporteren, Azure Data Factory connectors om de gegevens te exporteren en in de database van uw keuze te krijgen.
Controlelijst om aan de slag te gaan
Denk eraan dat projecties exclusief zijn voor kennisopslag en niet worden gebruikt om een zoekindex te structureren.
Haal Azure Storage toegangssleutels een connection string op en controleer of het account StorageV2 (algemeen gebruik V2) is.
Terwijl u Azure Storage, moet u zich vertrouwd maken met bestaande inhoud in containers en tabellen, zodat u niet-conflicterende namen voor de projecties kiest. Een kennisopslag is een losse verzameling tabellen en containers. Overweeg een naamconventie te gebruiken om gerelateerde objecten bij te houden.
Schakel Cognitive Search verrijkingscache (preview) in de indexer in en voer vervolgens de indexer uit om de vaardighedenset uit te voeren en de cache te vullen. Dit is een preview-functie, dus zorg ervoor dat u de preview-REST API (api-version=2020-06-30-preview of hoger) gebruikt in de indexeraanvraag. Zodra de cache is gevuld, kunt u gratis projectiedefinities in een kennisopslag wijzigen (zolang de vaardigheden zelf niet worden gewijzigd).
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: de eigenschap knowledgeStore en de vaardigheden array.
Geef onder knowledgeStore tabel-, object- en bestandsprojecties op in de
projectionssectie . Objecttype, objectnaam en hoeveelheid (volgens het aantal projecties dat u definieert) worden in deze sectie bepaald.Bepaal vanuit de vaardigheden array naar welke vaardigheidsuitvoer wordt verwezen in de
sourcevan elke 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 middel van vormen.
Als u projecties toevoegt aan een bestaande vaardighedenset, moet u de vaardighedenset bijwerken en de indexer uitvoeren.
Controleer uw resultaten in Azure Storage. Bij volgende runs voorkomt u naamcondy's door objecten in de Azure Storage te verwijderen of projectnamen in de vaardighedenset te wijzigen.
Volgende stappen
Bekijk de syntaxis en voorbeelden voor elk projectietype.