Freigeben über


Laden von Daten in einen Suchindex in Azure AI Search

In diesem Artikel wird erläutert, wie Dokumente in einen vordefinierten Suchindex importiert werden. In Azure KI-Suche wird zunächst ein Suchindex erstellt, der Datenimport folgt dann in einem zweiten Schritt. Eine Ausnahme bilden Import-Assistenten im Azure-Portal und die Indexerpipelines, die einen Index in einem Workflow erstellen und laden.

Funktionsweise des Datenimports

Ein Suchdienst akzeptiert JSON-Dokumente, die dem Indexschema entsprechen. Ein Suchdienst kann Nur-Text- und Vektorinhalte in JSON-Dokumenten importieren und indizieren.

  • Nur-Text-Inhalte werden aus Feldern in der externen Datenquelle, aus Metadateneigenschaften oder aus angereicherten Inhalten abgerufen, die von einem Skillset generiert werden (Skills können Textbeschreibungen aus Bildern und unstrukturierten Inhalten extrahieren oder ableiten).

  • Vektorinhalte werden aus einer Datenquelle abgerufen, die sie bereitstellt, oder sie werden durch ein Skillset erstellt, das die integrierte Vektorisierung in einer Azure KI-Suche-Indexerworkload implementiert.

Sie können diese Dokumente selbst vorbereiten. Wenn sich der Inhalt aber in einer unterstützten Datenquelle befindet, können Sie mit einem Indexer oder dem Import-Assistenten den Abruf der Dokumente, die JSON-Serialisierung und die Indizierung automatisieren.

Nachdem die Daten indiziert wurden, werden die physischen Datenstrukturen des Indexes gesperrt. Einen Leitfaden dazu, was geändert werden kann, finden Sie unter Aktualisieren und Neuerstellen eines Index.

Die Indizierung ist kein Hintergrundprozess. Ein Suchdienst gleicht Indizierungs- und Abfrageworkloads aus. Wenn die Abfragewartezeit jedoch zu lang ist, können Sie entweder Kapazität hinzufügen oder Zeiträume mit geringer Abfrageaktivität zum Laden eines Indexes identifizieren.

Weitere Informationen finden Sie unter Datenimportstrategien.

Verwenden des Azure-Portals

Verwenden Sie die Import-Assistenten im Azure-Portal, um Indizes in einem nahtlosen Workflow zu erstellen und zu laden. Wenn Sie einen vorhandenen Index laden möchten, wählen Sie einen alternativen Ansatz aus.

  1. Melden Sie sich mit Ihrem Azure-Konto beim Azure-Portal an, und suchen Sie Ihren Suchdienst.

  2. Wählen Sie auf der Übersichtsseite auf der Befehlsleiste Daten importieren oder Daten importieren und vektorisieren aus, um einen Suchindex zu erstellen und aufzufüllen.

    Screenshot des Befehls „Daten importieren“

    Sie können diesen Links folgen, um den Workflow zu überprüfen: Schnellstart: Erstellen eines Index für Azure KI-Suche und Schnellstart: Integrierte Vektorisierung.

  3. Verwenden Sie nach Abschluss des Assistenten den Such-Explorer, um die Ergebnisse zu überprüfen.

Tipp

Die Import-Assistenten erstellen die Indexer und führen sie aus. Wenn Indexer bereits definiert sind, können Sie einen Indexer aus dem Azure-Portal zurücksetzen und ausführen, was hilfreich ist, wenn Sie Felder inkrementell hinzufügen. Beim Zurücksetzen wird der Indexer dazu gezwungen, neu zu beginnen. Dabei werden alle Felder aus allen Quelldokumenten übernommen.

Verwenden der REST-APIs

Dokumente indizieren ist die REST-API zum Importieren von Daten in einen Suchindex. REST-APIs sind nützlich für anfängliche Proof of Concept-Tests, bei denen Sie Indizierungsworkflows testen können, ohne viel Code schreiben zu müssen. Der@search.action-Parameter bestimmt, ob Dokumente vollständig oder teilweise in Bezug auf neue oder Ersetzungswerte für bestimmte Felder hinzugefügt werden.

Schnellstart: Die Textsuche mithilfe von REST erläutert die Schritte. Das folgende Beispiel ist eine geänderte Version des Beispiels. Es wurde aus Gründen der Übersichtlichkeit gekürzt, und der erste HotelId-Wert wurde geändert, um zu vermeiden, dass ein vorhandenes Dokument überschrieben wird.

  1. Formulieren Sie einen POST-Aufruf, der den Indexnamen, den Endpunkt „docs/index“ und einen Anforderungstext mit dem @search.action-Parameter angibt.

    POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/index?api-version=2024-07-01
    Content-Type: application/json   
    api-key: [admin key] 
    {
        "value": [
        {
        "@search.action": "upload",
        "HotelId": "1111",
        "HotelName": "Stay-Kay City Hotel",
        "Description": "The hotel is ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Time's Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.",
        "Category": "Boutique",
        "Tags": [ "pool", "air conditioning", "concierge" ]
        },
        {
        "@search.action": "mergeOrUpload",
        "HotelId": "2",
        "HotelName": "Old Century Hotel",
        "Description": "This is description is replacing the original one for this hotel. New and changed values overwrite the previous ones. In a comma-delimited list like Tags, be sure to provide the full list because there is no merging of values within the field itself.",
        "Category": "Boutique",
        "Tags": [ "pool", "free wifi", "concierge", "my first new tag", "my second new tag" ]
        }
      ]
    }
    
  2. Legen Sie den @search.action-Parameter auf upload fest, um ein Dokument zu erstellen oder zu überschreiben. Legen Sie den Wert auf merge oder uploadOrMerge fest, wenn Sie bestimmte Felder im Dokument aktualisieren möchten. Im vorherigen Beispiel werden beide Aktionen gezeigt.

    Aktion Auswirkung
    merge 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 Zusammenführen, wenn das Dokument vorhanden ist, und wie Hochladen, wenn das Dokument neu ist. Dies ist die häufigste Aktion für inkrementelle Updates.
    upload Ä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.
  3. Senden Sie die Anforderung.

  4. Suchen Sie die Dokumente, die Sie soeben als Validierungsschritt hinzugefügt haben:

    GET https://[service name].search.windows.net/indexes/hotel-sample-index/docs/1111?api-version=2024-07-01
    

Wenn der Dokumentschlüssel oder die ID neu ist, wird NULL der Wert für jedes Feld, das im Dokument nicht angegeben ist. Bei Aktionen für ein vorhandenes Dokument ersetzen aktualisierte Werte die vorherigen Werte. Alle Felder, die nicht in einem Vorgang vom Typ „merge“ oder „mergeUpload“ angegeben wurden, bleiben im Suchindex erhalten.

Verwenden der Azure SDKs

Die Programmierbarkeit wird über die folgenden Azure-SDKs bereitgestellt.

Das Azure-SDK für .NET stellt die folgenden APIs für Einzel- und Massenuploads von Dokumenten in einen Index bereit:

Es gibt mehrere Beispiele, die die Indizierung im Kontext der einfachen und umfangreichen Indizierung veranschaulichen:

Weitere Informationen