Incrementele verrijking en caching in Azure AI Search

Belangrijk

Deze functie is beschikbaar als openbare preview onder aanvullende gebruiksvoorwaarden. De preview-REST API ondersteunt deze functie.

Incrementele verrijking verwijst naar het gebruik van verrijkingen in de cache tijdens de uitvoering van de vaardighedenset, zodat alleen nieuwe en gewijzigde vaardigheden en documenten kosten in rekening worden gebracht voor verwerking van betalen per gebruik voor API-aanroepen naar Azure AI-services. De cache bevat de uitvoer van documentbarsten, plus de uitvoer van elke vaardigheid voor elk document. Hoewel caching factureerbaar is (azure Storage wordt gebruikt), worden de totale kosten voor verrijking verlaagd omdat de opslagkosten minder zijn dan afbeeldingsextractie en AI-verwerking.

Wanneer u caching inschakelt, evalueert de indexeerfunctie uw updates om te bepalen of bestaande verrijkingen uit de cache kunnen worden opgehaald. Afbeeldings- en tekstinhoud uit de fase van het kraken van documenten, plus uitvoer van vaardigheden die upstream of orthogonaal zijn voor uw bewerkingen, zijn waarschijnlijk herbruikbaar.

Nadat de verwerking van vaardighedensets is voltooid, worden de vernieuwde resultaten teruggeschreven naar de cache en ook naar de zoekindex of het kennisarchief.

Beperkingen

Let op

Als u de SharePoint Online-indexeerfunctie (preview) gebruikt, moet u incrementele verrijking voorkomen. Onder bepaalde omstandigheden wordt de cache ongeldig, waarvoor een indexeerfunctie opnieuw moet worden ingesteld en uitgevoerd, moet u ervoor kiezen om deze opnieuw te laden.

Cacheconfiguratie

Fysiek wordt de cache opgeslagen in een blobcontainer in uw Azure Storage-account, één per indexeerfunctie. Aan elke indexeerfunctie wordt een unieke en onveranderbare cache-id toegewezen die overeenkomt met de container die wordt gebruikt.

De cache wordt gemaakt wanneer u de eigenschap Cache opgeeft en de indexeerfunctie uitvoert. Alleen verrijkte inhoud kan in de cache worden opgeslagen. Als uw indexeerfunctie geen gekoppelde vaardighedenset heeft, is caching niet van toepassing.

In het volgende voorbeeld ziet u een indexeerfunctie waarvoor caching is ingeschakeld. Zie Verrijkingscaching inschakelen voor volledige instructies. Wanneer u de cache-eigenschap toevoegt, gebruikt u een preview-API-versie, 2020-06-30-Preview of hoger, op de aanvraag.

POST https://[search service name].search.windows.net/indexers?api-version=2020-06-30-Preview
    {
        "name": "myIndexerName",
        "targetIndexName": "myIndex",
        "dataSourceName": "myDatasource",
        "skillsetName": "mySkillset",
        "cache" : {
            "storageConnectionString" : "<Your storage account connection string>",
            "enableReprocessing": true
        },
        "fieldMappings" : [],
        "outputFieldMappings": [],
        "parameters": []
    }

Cachebeheer

De levenscyclus van de cache wordt beheerd door de indexeerfunctie. Als een indexeerfunctie wordt verwijderd, wordt de cache ook verwijderd. Als de cache eigenschap van de indexeerfunctie is ingesteld op null of als de verbindingsreeks wordt gewijzigd, wordt de bestaande cache verwijderd tijdens de volgende uitvoering van de indexeerfunctie.

Hoewel incrementele verrijking is ontworpen voor het detecteren en reageren op wijzigingen zonder tussenkomst van uw kant, zijn er parameters die u kunt gebruiken om specifiek gedrag aan te roepen:

Prioriteit geven aan nieuwe documenten

De cache-eigenschap bevat een enableReprocessing parameter. Het wordt gebruikt om de verwerking te beheren van binnenkomende documenten die al in de cache worden weergegeven. Wanneer waar (standaard) documenten die zich al in de cache bevinden, opnieuw worden verwerkt wanneer u de indexeerfunctie opnieuw uitvoert, ervan uitgaande dat uw vaardigheidsupdate van invloed is op dat document.

Als dit onwaar is, worden bestaande documenten niet opnieuw verwerkt, waarbij nieuwe inhoud effectief wordt ge prioriteerd voor bestaande inhoud. U moet enableReprocessing alleen tijdelijk instellen op false. Als enableReprocessing is ingesteld op true, zorgt u er meestal voor dat alle documenten, zowel nieuw als bestaand, geldig zijn volgens de huidige definitie van de vaardighedenset.

Evaluatie van vaardighedenset overslaan

Het wijzigen van een vaardigheid en het opnieuw verwerken van die vaardigheid gaat doorgaans hand in hand. Sommige wijzigingen in een vaardigheid mogen echter niet resulteren in het opnieuw verwerken (bijvoorbeeld het implementeren van een aangepaste vaardigheid op een nieuwe locatie of met een nieuwe toegangssleutel). Dit zijn waarschijnlijk randapparatuurwijzigingen die geen echte invloed hebben op de stof van de vaardigheidsuitvoer zelf.

Als u weet dat een wijziging in de vaardigheid inderdaad oppervlakkig is, moet u de beoordeling van vaardigheden overschrijven door de disableCacheReprocessingChangeDetection parameter in te stellen op waar:

  1. Roep updatevaardighedenset aan en wijzig de definitie van de vaardighedenset.
  2. Voeg de parameter disableCacheReprocessingChangeDetection=true toe aan de aanvraag.
  3. Verzend de wijziging.

Als u deze parameter instelt, zorgt u ervoor dat alleen updates voor de definitie van de vaardighedenset worden doorgevoerd en dat de wijziging niet wordt geëvalueerd op effecten op de bestaande cache. Gebruik een preview-API-versie, 2020-06-30-Preview of hoger.

PUT https://[servicename].search.windows.net/skillsets/[skillset name]?api-version=2020-06-30-Preview&disableCacheReprocessingChangeDetection
  

Validatiecontroles voor gegevensbronnen overslaan

De meeste wijzigingen in een gegevensbrondefinitie maken de cache ongeldig. Voor scenario's waarin u echter weet dat een wijziging de cache niet ongeldig mag maken, zoals het wijzigen van een verbindingsreeks of het roteren van de sleutel in het opslagaccount, voegt u de ignoreResetRequirement parameter toe aan de gegevensbronupdate. Als u deze parameter instelt op true, kan de doorvoer worden doorlopen, zonder een resetvoorwaarde te activeren die ertoe zou leiden dat alle objecten opnieuw worden opgebouwd en helemaal opnieuw worden ingevuld.

PUT https://[search service].search.windows.net/datasources/[data source name]?api-version=2020-06-30-Preview&ignoreResetRequirement
 

Evaluatie van vaardighedenset afdwingen

Het doel van de cache is om onnodige verwerking te voorkomen, maar stel dat u een wijziging aanbrengt in een vaardigheid die de indexeerfunctie niet detecteert (bijvoorbeeld het wijzigen van iets in externe code, zoals een aangepaste vaardigheid).

In dit geval kunt u de vaardigheden opnieuw instellen gebruiken om het opnieuw verwerken van een bepaalde vaardigheid af te dwingen, inclusief eventuele downstreamvaardigheden die afhankelijk zijn van de uitvoer van die vaardigheid. Deze API accepteert een POST-aanvraag met een lijst met vaardigheden die ongeldig moeten worden gemaakt en moeten worden gemarkeerd voor herverwerking. Na het opnieuw instellen van vaardigheden volgt u een Run Indexer-aanvraag om de pijplijnverwerking aan te roepen.

Specifieke documenten opnieuw opslaan in de cache

Het opnieuw instellen van een indexeerfunctie leidt ertoe dat alle documenten in het zoekproces opnieuw worden verwerkt. In scenario's waarin slechts een paar documenten opnieuw moeten worden verwerkt, gebruikt u Opnieuw instellen van documenten (preview) om herverwerking van specifieke documenten af te dwingen. Wanneer een document opnieuw wordt ingesteld, wordt de cache voor dat document ongeldig door de indexeerfunctie, die vervolgens opnieuw wordt verwerkt door het te lezen uit de gegevensbron. Zie Indexeerfuncties, vaardigheden en documenten uitvoeren of opnieuw instellen voor meer informatie.

Als u specifieke documenten opnieuw wilt instellen, biedt de aanvraag een lijst met documentsleutels die worden gelezen uit de zoekindex. Als de sleutel is toegewezen aan een veld in de externe gegevensbron, moet de waarde die u opgeeft, de waarde zijn die u in de zoekindex gebruikt.

Afhankelijk van hoe u de API aanroept, wordt de aanvraag toegevoegd, overschreven of wordt de sleutellijst in de wachtrij geplaatst:

  • Als u de API meerdere keren aanroept met verschillende sleutels, worden de nieuwe sleutels toegevoegd aan de lijst met documentsleutels die opnieuw worden ingesteld.

  • Als u de API aanroept met de queryreeksparameter 'overschrijven' die is ingesteld op true, wordt de huidige lijst met documentsleutels overschreven die opnieuw moeten worden ingesteld met de nettolading van de aanvraag.

  • Als u de API aanroept, worden alleen de documentsleutels toegevoegd aan de wachtrij met werk dat de indexeerfunctie uitvoert. Wanneer de indexeerfunctie vervolgens wordt aangeroepen, zoals gepland of op aanvraag, wordt prioriteit gegeven aan het verwerken van de documentsleutels voor opnieuw instellen voordat andere wijzigingen uit de gegevensbron worden gewijzigd.

In het volgende voorbeeld ziet u een aanvraag voor het opnieuw instellen van een document:

POST https://[search service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2020-06-30-Preview
    {
        "documentKeys" : [
            "key1",
            "key2",
            "key3"
        ]
    }

Wijzigingen die de cache ongeldig maken

Nadat u een cache hebt ingeschakeld, evalueert de indexeerfunctie wijzigingen in uw pijplijnsamenstelling om te bepalen welke inhoud opnieuw kan worden gebruikt en welke opnieuw moet worden verwerkt. In deze sectie worden wijzigingen opgesomd die de cache ongeldig maken, gevolgd door wijzigingen die incrementele verwerking activeren.

Een ongeldige wijziging is een wijziging waarbij de hele cache niet meer geldig is. Een voorbeeld van een ongeldige wijziging is een wijziging waarin uw gegevensbron wordt bijgewerkt. Hier volgt de volledige lijst met wijzigingen in een deel van de indexeerpijplijn die uw cache ongeldig maakt:

  • Het gegevensbrontype wijzigen
  • Gegevensbroncontainer wijzigen
  • Gegevensbronreferenties wijzigen
  • Beleid voor wijzigingsdetectie van gegevensbron wijzigen
  • Detectiebeleid voor verwijderen van gegevensbron wijzigen
  • Veldtoewijzingen voor indexeerfunctie wijzigen
  • Parameters voor indexeerfuncties wijzigen:
    • Parseermodus
    • Uitgesloten bestandsnaamextensies
    • Geïndexeerde bestandsnaamextensies
    • Opslagmetagegevens indexeren alleen voor oversized documenten
    • Tekstkoppen met scheidingstekens
    • Scheidingsteken voor tekstscheidingsteken
    • Hoofdmap van document
    • Afbeeldingsactie (wijzigingen in hoe afbeeldingen worden geëxtraheerd)

Wijzigingen die incrementele verwerking activeren

Incrementele verwerking evalueert uw definitie van deze vaardighedenset en bepaalt welke vaardigheden moeten worden uitgevoerd, waarbij de betrokken gedeelten van de documentstructuur selectief worden bijgewerkt. Hier volgt de volledige lijst met wijzigingen die resulteren in incrementele verrijking:

  • Het vaardigheidstype wijzigen (het OData-type van de vaardigheid wordt bijgewerkt)
  • Vaardigheidsspecifieke parameters worden bijgewerkt, bijvoorbeeld een URL, standaardwaarden of andere parameters
  • Wijzigingen in vaardigheidsuitvoer, de vaardigheid retourneert extra of andere uitvoer
  • Wijzigingen in de invoer van vaardigheden die resulteren in verschillende opeenhoud, het koppelen van vaardigheden is gewijzigd
  • Een upstream-vaardigheid is ongeldig als een vaardigheid die een invoer voor deze vaardigheid biedt, wordt bijgewerkt
  • Updates voor de projectielocatie van het kennisarchief, resulteert in het opnieuw projecteren van documenten
  • Wijzigingen in de projecties van het kennisarchief, resulteert in het opnieuw projecteren van documenten
  • Uitvoerveldtoewijzingen die zijn gewijzigd op een indexeerfunctie, resulteert in het opnieuw projecteren van documenten in de index

API's die worden gebruikt voor caching

REST API-versie 2020-06-30-Preview of hoger biedt incrementele verrijking via aanvullende eigenschappen voor indexeerfuncties. Vaardighedensets en gegevensbronnen kunnen gebruikmaken van de algemeen beschikbare versie. Naast de referentiedocumentatie raadpleegt u Caching configureren voor incrementele verrijking voor meer informatie over de volgorde van bewerkingen.

Volgende stappen

Incrementele verrijking is een krachtige functie die het bijhouden van wijzigingen uitbreidt naar vaardighedensets en AI-verrijking. Met incrementele verrijking kunt u bestaande verwerkte inhoud opnieuw gebruiken tijdens het herhalen van het ontwerp van de vaardighedenset. Als volgende stap schakelt u caching in op uw indexeerfuncties.