Importieren von Daten in Azure KI Search

In Azure KI Search werden Abfragen für benutzereigene Inhalte ausgeführt, die in einen Suchindex geladen werden. In diesem Artikel werden die beiden grundlegenden Workflows zum Füllen eines Index beschrieben: Die Daten werden programmgesteuert mithilfe von Push oder per Suchindexer mithilfe von Pull in den Index übertragen.

Beide Ansätze laden Dokumente aus einer externen Datenquelle. Obwohl Sie einen leeren Index erstellen können, kann er erst abgefragt werden, wenn Sie den Inhalt hinzufügen.

Hinweis

Wenn KI-Anreicherung oder integrierte Vektorisierung Lösungsanforderungen sind, müssen Sie das Pullmodell (Indexer) verwenden, um einen Index zu laden. Skillsets werden an Indexer angefügt und können nicht unabhängig ausgeführt werden.

Übertragen von Daten per Pushvorgang in einen Index

Pushmodell ist ein Ansatz, der APIs verwendet, um Dokumente in einen vorhandenen Suchindex hochzuladen. Drittens können Sie Dokumente einzeln oder in Batches bis zu 1000 Dokumenten pro Batch oder 16 MB pro Batch hochladen, je nachdem, welcher Grenzwert zuerst erreicht ist.

Zentrale Vorteile:

  • Keine Einschränkungen für den Datenquellentyp. Das Dataset muss aus JSON-Dokumenten bestehen, die dem Indexschema zugeordnet sind, aber die Daten können aus beliebigen Quellen stammen.

  • Keine Einschränkungen für die Häufigkeit der Ausführung. Sie können Änderungen beliebig oft per Pushvorgang in einen Index übertragen. Für Anwendungen mit geringen Latenzanforderungen (z. B. wenn der Index mit Produktbestandsschwankungen synchronisiert werden muss), ist das Pushmodell Ihre einzige Option.

  • Viertens: Die Konnektivität und der sichere Abruf von Dokumenten unterliegen vollständig Ihrer Kontrolle. Im Gegensatz dazu werden Indexerverbindungen mithilfe der Sicherheitsfeatures authentifiziert, die in Azure KI Search bereitgestellt werden.

Übertragen von Daten in einen Azure KI Search-Index per Pushvorgang

Sie können die folgenden APIs verwenden, um ein oder mehrere Dokumente in einen Index zu laden:

Es gibt keine Unterstützung für das Pushen von Daten über das Azure-Portal.

Eine Einführung in die Push-APIs finden Sie unter:

Indizierungsaktionen: upload, merge, mergeOrUpload, delete

Sie können den Typ der Indizierungsaktion dokumentweise steuern, indem Sie angeben, ob das Dokument vollständig hochgeladen, mit vorhandenen Dokumentinhalten zusammengeführt oder gelöscht werden soll.

Unabhängig davon, ob Sie die REST-API oder ein SDK verwenden, werden die folgenden Dokumentvorgänge für den Datenimport unterstützt:

  • hochladen: Ähnelt einem „Upsert“, bei dem das Dokument eingefügt wird, wenn es neu ist, und aktualisiert oder ersetzt wird, wenn es bereits vorhanden ist. Wenn im Dokument Werte fehlen, die der Index benötigt, wird der Wert des Dokumentfelds auf NULL festgelegt.

  • Aktualisiert ein bereits vorhandenes Dokument und schlägt fehl, wenn das Dokument nicht gefunden werden kann. Merge ersetzt vorhandene Werte. Achten Sie deshalb darauf, nach Sammlungsfeldern zu suchen, die mehrere Werte enthalten, z. B. Felder vom Typ Collection(Edm.String). Wenn beispielsweise ein tags-Feld mit dem Wert ["budget"] beginnt und Sie eine Zusammenführung mit ["economy", "pool"] durchführen, lautet der Wert für das tags-Feld am Ende des Vorgangs ["economy", "pool"]. Der Wert lautet nicht etwa ["budget", "economy", "pool"].

  • mergeOrUpload verhält sich wie merge, wenn das Dokument vorhanden ist, und wie upload, wenn das Dokument neu ist.

  • delete: Hiermit wird das gesamte Dokument aus dem Index gelöscht. Wenn Sie ein einzelnes Feld entfernen möchten, verwenden Sie stattdessen merge und legen das betreffende Feld auf NULL fest.

Übertragen von Daten per Pullvorgang in einen Index

Das Pullmodell verwendet Indexer , die eine Verbindung mit einer unterstützten Datenquelle herstellen und die Daten automatisch in Ihren Index hochladen. Indexer von Microsoft sind für diese Plattformen verfügbar:

Sie können Connectors von Drittanbietern verwenden, die von Microsoft-Partnern entwickelt und verwaltet werden. Weitere Informationen und Links finden Sie im Datenquellenkatalog.

Mit Indexern wird für einen Index eine Verbindung mit einer Datenquelle (normalerweise eine Tabelle, Sicht oder ähnliche Struktur) hergestellt, und Quellfelder werden gleichwertigen Feldern im Index zugeordnet. Während der Ausführung wird das Rowset automatisch in JSON transformiert und in den angegebenen Index geladen. Alle Indexer unterstützen die Verwendung von Zeitplänen, sodass Sie angeben können, wie häufig die Daten aktualisiert werden sollen. Die meisten Indexer verfügen über eine Änderungsnachverfolgung, wenn dies von der Datenquelle unterstützt wird. Da Änderungen und Löschvorgänge in vorhandenen Dokumenten nachverfolgt und neue Dokumente erkannt werden, ist es mithilfe von Indexern nicht mehr erforderlich, die Daten in Ihrem Index aktiv zu verwalten.

Übertragen von Daten per Pull-Vorgang in einen Azure KI Search-Index

Verwenden Sie die folgenden Tools und APIs für die indexerbasierte Indizierung:

Die Indexer-Funktion steht im Azure-Portal und für die REST-API und das .NET SDK zur Verfügung.

Ein Vorteil der Verwendung des Portals ist, dass von Azure KI Search normalerweise ein Indexstandardschema generiert werden kann, indem die Metadaten des Quelldatasets gelesen werden.

Überprüfen des Datenimports mit dem Suchexplorer

Eine schnelle Möglichkeit zum Durchführen einer vorläufigen Prüfung für den Dokumentupload ist die Verwendung des Suchexplorers im Portal.

Screenshot des Suchexplorerbefehls im Azure-Portal

Mit dem Explorer können Sie einen Index abfragen, ohne dass Sie dafür Code schreiben müssen. Die Suche basiert auf den Standardeinstellungen, z.B. der einfachen Syntax und dem searchMode-Abfrageparameter, der standardmäßig verwendet wird. Ergebnisse werden im JSON-Format zurückgegeben, damit Sie das gesamte Dokument untersuchen können.

Hier ist eine Beispielabfrage, die Sie im Such-Explorer in der JSON-Ansicht ausführen können. Die „HotelId“ entspricht dem Dokumentenschlüssel von „hotels-sample-index“. Der Filter gibt die Dokument-ID eines bestimmten Dokuments an:

{
  "search": "*",
  "filter": "HotelId eq '50'"
}

Wenn Sie REST verwenden, erfüllt diese Suchabfrage den gleichen Zweck.

Siehe auch