Inkrementelle Anreicherung und Caching in Azure AI Search
Wichtig
Dieses Feature befindet sich in der öffentlichen Vorschau und unterliegt den zusätzlichen Nutzungsbedingungen. Die Vorschau-REST-API unterstützt dieses Feature.
Inkrementelle Anreicherung bezieht sich auf die Verwendung von zwischengespeicherten Anreicherungen während der Ausführung von Skillsets, sodass nur für neue und geänderte Skills und Dokumente nutzungsbasierte Verarbeitungsgebühren für API-Aufrufe von Azure KI Services anfallen. Der Cache enthält die Ausgaben aus der Dokumententschlüsselung sowie die Ausgaben der einzelnen Skills für jedes Dokument. Obwohl die Zwischenspeicherung abrechenbar ist (sie verwendet Azure Storage), werden die Gesamtkosten für die Anreicherung reduziert, da die Kosten für den Speicher geringer sind als die Bildverarbeitung und KI-Verarbeitung.
Um die Synchronisierung zwischen Ihren Datenquellendaten und Ihrem Index sicherzustellen, müssen Sie Ihre eindeutige Datenquelle Voraussetzungen für die Änderungs- und Löschnachverfolgung verstehen. In diesem Leitfaden wird insbesondere darauf eingegangen, wie sie inkrementelle Änderungen in Bezug auf Ihre Verarbeitung ihrer Fähigkeiten und die Verwendung des Caches für diesen Zweck verwalten.
Wenn Sie die Zwischenspeicherung aktivieren, wertet der Indexer Ihre Updates aus, um zu bestimmen, ob vorhandene Anreicherungen aus dem Cache gezogen werden können. Bild- und Textinhalte aus der Phase der Dokumententschlüsselung sowie Skillausgaben, die sich upstream oder orthogonal zu Ihren Bearbeitungen befinden, sind wahrscheinlich wiederverwendbar.
Nachdem die Skillsetverarbeitung abgeschlossen ist, werden die aktualisierten Ergebnisse zurück in den Cache und auch in den Suchindex oder Wissensspeicher geschrieben.
Begrenzungen
Achtung
Wenn Sie den SharePoint Online-Indexer (Vorschau) verwenden, sollten Sie die inkrementelle Anreicherung vermeiden. Unter bestimmten Umständen wird der Cache ungültig, so dass ein Reset des Indexers und ein Lauf erforderlich sind, wenn Sie ihn neu laden wollen.
Cachekonfiguration
Der Cache wird physisch in einem Blobcontainer in Ihrem Azure Storage-Konto gespeichert, jeweils einer je Indexer. Jedem Indexer wird ein eindeutiger und unveränderlicher Cachebezeichner zugewiesen, der dem Container entspricht, den er verwendet.
Der Cache wird erstellt, wenn Sie die Eigenschaft „cache“ angeben und den Indexer ausführen. Nur angereicherte Inhalte können zwischengespeichert werden. Wenn Ihr Indexer nicht über ein angefügtes Skillset verfügt, wird das Zwischenspeichern nicht angewendet.
Das folgende Beispiel veranschaulicht einen Indexer, bei dem die Zwischenspeicherung aktiviert ist. Vollständige Anweisungen finden Sie unter Aktivieren der Anreicherungszwischenspeicherung.
Um die Cacheeigenschaft zu verwenden, können Sie 2020-06-30-preview oder höher verwenden, wenn Sie einen Indexer erstellen oder aktualisieren. Wir empfehlen die neueste Vorschau-API.
POST https://[search service name].search.windows.net/indexers?api-version=2024-05-01-rreview
{
"name": "myIndexerName",
"targetIndexName": "myIndex",
"dataSourceName": "myDatasource",
"skillsetName": "mySkillset",
"cache" : {
"storageConnectionString" : "<Your storage account connection string>",
"enableReprocessing": true
},
"fieldMappings" : [],
"outputFieldMappings": [],
"parameters": []
}
Cacheverwaltung
Der Lebenszyklus des Caches wird vom Indexer verwaltet. Wird ein Indexer gelöscht, wird auch sein Cache gelöscht. Wird die cache
-Eigenschaft im Indexer auf „Null“ festgelegt oder die Verbindungszeichenfolge geändert, wird der vorhandene Cache gelöscht.
Die inkrementelle Anreicherung ist zwar so konzipiert, dass Änderungen erkannt werden und darauf reagiert wird, ohne dass Sie selbst eingreifen müssen. Es gibt aber Parameter, die Sie verwenden können, um bestimmte Verhaltensweisen aufzurufen:
- Neue Dokumente priorisieren
- Umgeben von Skillsetüberprüfungen
- Umgehung der Datenquellenprüfungen
- Erzwingen der Skillsetauswertung
Priorisieren neuer Dokumente
Die Cacheeigenschaft enthält einen enableReprocessing
-Parameter. Er wird verwendet, um die Verarbeitung eingehender Dokumente, die bereits im Cache vorhanden sind, zu steuern. Ist diese Option auf „true“ festgelegt (Standard), werden Dokumente, die bereits im Cache vorhanden sind, bei der erneuten Ausführung des Indexers erneut verarbeitet, vorausgesetzt, dass sich Ihre Skillaktualisierung auf dieses Dokument auswirkt.
Wenn dies auf FALSE festgelegt ist, werden bestehende Dokumente nicht erneut verarbeitet, wodurch neuen, eingehenden Inhalten effektiv Priorität vor bestehenden Inhalten eingeräumt wird. Sie sollten „enableReprocessing“ nur vorübergehend auf FALSE festlegen. Wenn „enableReprocessing“ die meiste Zeit auf TRUE festgelegt ist, wird sichergestellt, dass alle Dokumente, sowohl neue als auch vorhandene, nach der aktuellen Skillsetdefinition gültig sind.
Umgehen der Skillsetauswertung
Das Ändern eines Skills und das erneute Verarbeiten dieses Skills gehen in der Regel Hand in Hand. Einige Änderungen an einem Skill sollten jedoch nicht zur erneuten Verarbeitung führen (z. B. das Bereitstellen eines benutzerdefinierten Skills an einem neuen Speicherort oder mit einem neuen Zugriffsschlüssel). Höchstwahrscheinlich handelt es sich hierbei um periphere Änderungen, die keine echte Auswirkung auf den Inhalt der Skillausgabe haben.
Wenn Sie wissen, dass eine Änderung des Skills tatsächlich oberflächlich ist, sollten Sie die Skillauswertung außer Kraft setzen, indem Sie den Parameter disableCacheReprocessingChangeDetection
auf WAHR festlegen:
- Rufen Sie Skillset aktualisieren auf, und ändern Sie die Skillsetdefinition.
- Fügen Sie den Parameter „disableCacheReprocessingChangeDetection=true“ an die Anforderung an.
- Übermitteln Sie die Änderung.
Indem Sie diesen Parameter festlegen, wird sichergestellt, dass nur Aktualisierungen der Skillsetdefinition committet werden. Die Auswirkungen der Änderung auf den vorhandenen Cache werden dagegen nicht ausgewertet. Verwenden Sie eine Vorschauversion der API (2020-06-30-Preview oder höher). Wir empfehlen die neueste Vorschau-API.
PUT https://[servicename].search.windows.net/skillsets/[skillset name]?api-version=2024-05-01-preview&disableCacheReprocessingChangeDetection
Umgehen von Datenquellen-Validierungsüberprüfungen
Die meisten Änderungen an einer Datenquellendefinition führen dazu, dass der Cache ungültig wird. Für Szenarien, in denen Sie wissen, dass eine Änderung den Cache nicht ungültig machen sollte – wie z. B. das Ändern einer Verbindungszeichenfolge oder das Drehen des Schlüssels im Speicherkonto – fügen Sie den ignoreResetRequirement
-Parameter bei der Aktualisierung der Datenquelle hinzu. Wird dieser Parameter auf „true“ festgelegt, kann der Commit durchlaufen werden, ohne eine Bedingung „Zurücksetzen“ auszulösen, die dazu führen würde, dass alle Objekte von Grund auf neu erstellt und gefüllt werden.
PUT https://[search service].search.windows.net/datasources/[data source name]?api-version=2024-05-01-preview&ignoreResetRequirement
Erzwingen der Skillsetauswertung
Der Zweck des Caches ist es, unnötige Verarbeitung zu vermeiden, aber angenommen, Sie nehmen eine Änderung an einer Qualifikation vor, die der Indexer nicht erkennt (etwa eine Änderung an Elementen in externem Code, wie z. B. einer benutzerdefinierten Qualifikation).
In diesem Fall können Sie Reset Skills verwenden, um die erneute Verarbeitung einer bestimmten Qualifikation zu erzwingen, einschließlich aller Downstreamqualifikationen, die von der Ausgabe dieser Qualifikation abhängig sind. Diese API akzeptiert eine POST-Anforderung mit einer Liste von Qualifikationen, die ungültig gemacht und zur erneuten Verarbeitung markiert werden sollten. Führen Sie nach dem Zurücksetzen von Skills eine Run Indexer-Anforderung aus, um die Pipelineverarbeitung aufzurufen.
Erneutes Zwischenspeichern bestimmter Dokumente
Das Zurücksetzen eines Indexers führt dazu, dass alle Dokumente im Suchkorpus erneut verarbeitet werden.
In Szenarien, in denen nur wenige Dokumente erneut verarbeitet werden müssen, nutzen Sie das Zurücksetzen von Dokumenten (Vorschau), um die erneute Verarbeitung bestimmter Dokumente zu erzwingen. Wenn ein Dokument zurückgesetzt wird, macht der Indexer den Cache für dieses Dokument ungültig, das dann erneut verarbeitet wird, indem es aus der Datenquelle gelesen wird. Weitere Informationen finden Sie unter Ausführen oder Zurücksetzen von Indexern, Skills und Dokumenten.
Um bestimmte Dokumente zurückzusetzen, stellt die Anforderung eine Liste von Dokumentschlüsseln bereit, die aus dem Suchindex gelesen werden. Wenn der Schlüssel einem Feld in der externen Datenquelle zugeordnet ist, sollte der Wert, den Sie bereitstellen, derjenige sein, der im Suchindex verwendet wird.
Je nachdem, wie Sie die API aufrufen, wird die Anforderung entweder angefügt, überschrieben oder in die Warteschlange der Schlüsselliste gestellt:
Wenn Sie die API mehrmals mit unterschiedlichen Schlüsseln aufrufen, werden die neuen Schlüssel der Liste der zurückgesetzten Dokumentschlüssel angehängt.
Wenn Sie die API mit auf „true“ festgelegtem Abfragezeichenfolgen-Parameter „overwrite“ aufrufen, wird die aktuelle Liste der zurückzusetzenden Dokumentschlüssel mit den Nutzdaten der Anforderung überschrieben.
Das Aufrufen der API führt nur dazu, dass die Dokumentschlüssel der Verarbeitungswarteschlange des Indexers hinzugefügt werden. Wenn der Indexer das nächste Mal aufgerufen wird (entweder geplant oder bei Bedarf), priorisiert er die Verarbeitung der Zurücksetzung der Dokumentschlüssel gegenüber anderen Änderungen in der Datenquelle.
Das folgende Beispiel veranschaulicht eine Zurücksetzungsanforderung für Dokumente:
POST https://[search service name].search.windows.net/indexers/[indexer name]/resetdocs?api-version=2024-05-01-preview
{
"documentKeys" : [
"key1",
"key2",
"key3"
]
}
Änderungen, die den Cache ungültig machen
Sobald Sie einen Cache aktivieren, wertet der Indexer Änderungen in Ihrer Pipelinekomposition aus, um zu bestimmen, welche Inhalte wiederverwendet werden können und welche neu verarbeitet werden müssen. In diesem Abschnitt werden Änderungen aufgezählt, die den Cache vollständig ungültig machen, gefolgt von Änderungen, die eine inkrementelle Verarbeitung auslösen.
Durch eine solche Änderung wird der gesamte Cache ungültig. Ein Beispiel für eine solche Änderung wäre die Aktualisierung Ihrer Datenquelle. Hier ist die vollständige Liste der Änderungen an einem beliebigen Teil der Indexerpipeline, die Ihren Cache ungültig machen würden:
- Ändern des Datenquellentyps
- Ändern des Datenquellencontainers
- Ändern der Anmeldeinformationen der Datenquelle
- Ändern der Richtlinie zur Erkennung von Änderungen für die Datenquelle
- Ändern der Richtlinie zur Erkennung von Löschungen für die Datenquelle
- Ändern von Indexerfeldzuordnungen
- Ändern von Indexerparametern:
- Analysemodus
- Ausgeschlossene Dateierweiterungen
- Indizierter Dateierweiterungen
- Indexspeicher-Metadaten (nur für übergroße Dokumente)
- Textheader mit Trennzeichen
- Trennzeichen für Text mit Trennzeichen
- Dokumentstamm
- Bildaktion (Änderung an der Art der Bildextraktion)
Änderungen, die eine inkrementelle Verarbeitung auslösen
Bei der inkrementellen Verarbeitung wird Ihre Skillsetdefinition ausgewertet, und es wird ermittelt, welche Qualifikationen erneut ausgeführt werden sollen, wobei die betroffenen Teile der Dokumentstruktur selektiv aktualisiert werden. Hier finden Sie die vollständige Liste der Änderungen, die zu einer inkrementellen Anreicherung führen:
- Ändern des Skilltyps (der OData-Typ des Skills wird aktualisiert)
- Skillspezifische Parameter wie URL, Standardwerte oder andere Parameter werden aktualisiert
- Skillausgabeänderungen, der Skill gibt zusätzliche oder andere Ausgaben zurück
- Skilleingabeänderungen, durch die sich eine andere Herkunft ergibt, Änderung der Skillverkettung
- Upstream-Qualifikationsinvalidierung (im Falle der Aktualisierung einer Qualifikation, die eine Eingabe für diese Qualifikation bereitstellt)
- Aktualisierungen des Speicherorts für Wissensspeicherprojektionen, wodurch Dokumente neu projiziert werden müssen
- Änderungen an den Wissensspeicherprojektionen, wodurch Dokumente neu projiziert werden müssen
- Die Ausgabefeldzuordnungen für einen Indexer wurden geändert, wodurch Dokumente im Index neu projiziert werden müssen
Für die Zwischenspeicherung verwendete APIs
Die REST-API-Version 2020-06-30-Preview
(oder höher) bietet eine inkrementelle Anreicherung durch zusätzliche Eigenschaften für Indexer. Wir empfehlen die neueste Vorschau-API.
Skillsets und Datenquellen können die allgemein verfügbare Version verwenden. Ergänzende Informationen zur Referenzdokumentation mit Einzelheiten zur Reihenfolge der Vorgänge finden Sie unter Konfigurieren der Zwischenspeicherung für die inkrementelle Anreicherung.
Erstellen oder Aktualisieren von Indexern (api-version=2024-05-01-preview)
Erstellen oder Aktualisieren von Skillsets (api-version=2024-07-01) (neuer URI-Parameter in der Anforderung)
Erstellen oder Aktualisieren von Datenquellen (api-version=2024-07-01) stellt beim Aufruf mit einer Vorschauversion der API einen neuen Parameter mit dem Namen „ignoreResetRequirement“ bereit, der auf „WAHR“ festgelegt werden sollte, wenn der Cache durch Ihre Aktualisierungsaktion nicht ungültig gemacht werden soll. Verwenden Sie „ignoreResetRequirement“ sparsam, da es zu unbeabsichtigten Inkonsistenzen in Ihren Daten führen kann, die nicht leicht zu erkennen sind.
Nächste Schritte
Inkrementelle Anreicherung ist ein leistungsstarkes Feature, das die Änderungsverfolgung auf Skillsets und KI-Anreicherung ausdehnt. Die inkrementelle Anreicherung ermöglicht die Wiederverwendung vorhandener, verarbeiteter Inhalte beim Durchlaufen des Skillsetdesigns. Aktivieren Sie im nächsten Schritt das Zwischenspeichern für Ihre Indexer.