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 die Lösung KI-Anreicherung erfordert, muss zum Laden eines Index das Pullmodell (Indexer) verwendet werden. Skillsets werden an einen Indexer angefügt und lassen sich nicht unabhängig ausführen.

Übertragen von Daten per Pushvorgang in einen Index

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

Zentrale Vorteile:

  • Keine Einschränkungen für den Datenquellentyp. Die Nutzlast muss aus JSON-Dokumenten bestehen, die Ihrem Indexschema zugeordnet sind, aber die Daten können von praktisch überall aus 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.

  • Verbinden ivität und der sichere Abruf von Dokumenten unterliegen 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

Verwenden Sie die folgenden APIs, um einzelne oder mehrere Dokumente in einen Index zu laden:

Es gibt keine Unterstützung für das Pushen von Daten über die 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 Azure SDK verwenden, werden die folgenden Dokumentvorgänge für den Datenimport unterstützt:

  • Hochladen, ähnlich wie ein "Upsert", bei dem das Dokument eingefügt wird, wenn es neu ist, und aktualisiert oder ersetzt, wenn es vorhanden ist. Wenn im Dokument Werte fehlen, die der Index benötigt, wird der Wert des Dokumentfelds auf NULL festgelegt.

  • Die Zusammenführung aktualisiert ein bereits vorhandenes Dokument und schlägt ein Dokument fehl, das 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 Standard unterstützt 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 Indexerfunktionalität wird in der [Azure-Portal], der REST-API und dem .NET SDK verfügbar gemacht.

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 of Search Explorer command in the 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