Tutorial: Verwenden von REST und KI zum Generieren von durchsuchbarem Inhalt über Azure-Blobs

Wenn Sie in Azure Blob Storage über unstrukturierten Text oder Bilder verfügen, können Sie mithilfe einer KI-Anreicherungspipeline Informationen extrahieren und neue Inhalte erstellen, die für die Volltextsuche oder in Knowledge Mining-Szenarios verwendet werden können.

In diesem REST-Tutorial lernen Sie Folgendes:

  • Einrichten einer Entwicklungsumgebung
  • Definieren einer Pipeline mit optischer Zeichenerkennung, Sprachenerkennung, Entitätserkennung sowie mit Schlüsselwortextrahierung.
  • Ausführen der Pipeline zum Aufrufen von Transformationen sowie zum Erstellen und Laden eines Suchindexes
  • Erkunden Sie Ergebnisse per Volltextsuche und umfangreicher Abfragesyntax.

Sollten Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Übersicht

In diesem Tutorial werden Postman und die Azure Cognitive Search-REST-APIs verwendet, um eine Datenquelle, einen Index, einen Indexer und ein Skillset zu erstellen.

Der Indexer stellt eine Verbindung mit Azure Blob Storage und ruft den Inhalt ab, den Sie im Voraus laden müssen. Der Indexer ruft dann ein Skillset für die spezielle Verarbeitung auf und erfasst den angereicherten Inhalt in einem Suchindex.

Das Skillset wird an einen Indexer angefügt. Es werden integrierte Skills von Microsoft verwendet, um Informationen zu suchen und zu extrahieren. Die Schritte in der Pipeline umfassen die optische Zeichenerkennung (OCR) für Bilder, die Spracherkennung sowie die Schlüsselwortextraktion und die Entitätserkennung (Organisationen, Standorte, Menschen). Neue, durch die Pipeline erstellte Informationen werden in neuen Feldern in einem Index gespeichert. Nachdem der Index aufgefüllt wurde, können die Felder in Abfragen, Facetten und Filtern verwendet werden.

Voraussetzungen

Hinweis

In diesem Tutorial können Sie den kostenlosen Dienst verwenden. Der kostenlose Suchdienst ist auf drei Indizes, drei Indexer und drei Datenquellen beschränkt. In diesem Tutorial wird davon jeweils eine Instanz erstellt. Vergewissern Sie sich zunächst, dass Ihr Dienst über genügend freie Kapazität für die neuen Ressourcen verfügt.

Herunterladen von Dateien

Die Beispieldaten bestehen aus 14 Dateien mit gemischten Inhaltstypen, die Sie in einem späteren Schritt in Azure Blob Storage hochladen.

  1. Rufen Sie die Dateien aus azure-search-sample-data/ai-enrichment-mixed-media/ ab und kopieren Sie sie auf Ihren lokalen Computer.

  2. Als Nächstes erhalten Sie den Quellcode, eine Postman-Sammlungsdatei, für dieses Tutorial. Den Quellcode finden Sie unter azure-search-postman-samples/tree/master/Tutorial.

1\. Erstellen der Dienste

In diesem Tutorial werden Azure Cognitive Search für Indizierungsvorgänge und Abfragen, Cognitive Services im Back-End für die KI-Anreicherung und Azure Blob Storage für die Datenbereitstellung verwendet. Dieses Tutorial bleibt unter der kostenlosen Zuteilung von 20 Transaktionen pro Indexer pro Tag für Cognitive Services. Aus diesem Grund müssen Sie nur den Such- und den Speicherdienst erstellen.

Erstellen Sie diese beiden Dienste nach Möglichkeit in derselben Region und Ressourcengruppe, um eine möglichst große Nähe zu erreichen und die Verwaltung zu vereinfachen. In der Praxis kann sich Ihr Azure Storage-Konto in einer beliebigen Region befinden.

Azure Storage

  1. Melden Sie sich beim Azure-Portal an, und klicken Sie auf + Ressource erstellen.

  2. Suchen Sie nach Speicherkonto, und wählen Sie das Speicherkonto-Angebot von Microsoft aus.

    Create Storage account

  3. Auf der Registerkarte „Grundlagen“ sind folgende Angaben erforderlich. Übernehmen Sie bei allen anderen Optionen die Standardeinstellungen.

    • Ressourcengruppe. Sie können entweder eine vorhandene Ressourcengruppe auswählen oder eine neue Ressourcengruppe erstellen. Verwenden Sie jedoch für alle Dienste die gleiche Gruppe, um die Dienste gemeinsam verwalten zu können.

    • Speicherkontoname: Falls Sie über mehrere Ressourcen des gleichen Typs verfügen, geben Sie zur Unterscheidung den Typ und die Region an (Beispiel: blobstoragewestus).

    • Standort. Wählen Sie nach Möglichkeit den gleichen Standort aus, der auch für Azure Cognitive Search und Cognitive Services verwendet wird. Bei Verwendung eines einzelnen Standorts fallen keine Bandbreitengebühren an.

    • Kontoart: Verwenden Sie die Standardeinstellung StorageV2 (allgemein, Version 2) .

  4. Wählen Sie zum Erstellen des Diensts die Option Überprüfen + erstellen aus.

  5. Wählen Sie nach der Erstellung Go to the resource (Zur Ressource), um die Übersichtsseite zu öffnen.

  6. Wählen Sie den Dienst Blobs aus.

  7. Wählen Sie + Container, um einen Container zu erstellen, und nennen Sie ihn cog-search-demo.

  8. Wählen Sie cog-search-demo aus, und wählen Sie dann Hochladen, um den Ordner zu öffnen, in dem Sie die Downloaddateien gespeichert haben. Wählen Sie alle Dateien aus. Wählen Sie die Option Hochladen.

    Screenshot of the files in File Explorer.

  9. Rufen Sie eine Verbindungszeichenfolge ab, bevor Sie Azure Storage verlassen, um in Azure Cognitive Search eine Verbindung herstellen zu können.

    1. Kehren Sie zur Übersichtsseite Ihres Speicherkontos zurück. (Wir haben blobstoragewestus als Beispiel verwendet.)

    2. Wählen Sie im linken Navigationsbereich die Option Zugriffsschlüssel aus, und kopieren Sie eine der Verbindungszeichenfolgen.

    Die Verbindungszeichenfolge ist eine URL, die in etwa wie folgt aussieht:

    DefaultEndpointsProtocol=https;AccountName=cogsrchdemostorage;AccountKey=<your account key>;EndpointSuffix=core.windows.net
    
  10. Speichern Sie die Verbindungszeichenfolge im Editor. Sie wird später bei der Einrichtung der Datenquellenverbindung benötigt.

Cognitive Services

Die KI-Anreicherung basiert auf Cognitive Services (einschließlich Sprachdienst und maschinellem Sehen für die Verarbeitung von natürlicher Sprache und Bildern). Bei der Erstellung eines echten Prototyps oder Projekts würden Sie an dieser Stelle Cognitive Services bereitstellen (in der gleichen Region wie Azure Cognitive Search), um eine Verknüpfung mit einem Skillset zu ermöglichen.

In dieser Übung können Sie die Ressourcenbereitstellung allerdings überspringen, da Azure Cognitive Search eine Verbindung mit Cognitive Services herstellen kann und 20 kostenlose Transaktionen pro Indexerausführung ausführen kann. Da in diesem Tutorial 14 Transaktionen verwendet werden, ist die kostenlose Zuteilung ausreichend. Planen Sie bei umfangreicheren Projekten die Bereitstellung von Cognitive Services im S0-Tarif (nutzungsbasierte Bezahlung).

Azure Cognitive Search ist die dritte Komponente, die Sie im Portal erstellen können, oder Sie suchen nach einem vorhandenen Suchdienst in Ihrem Abonnement.

Im Rahmen dieser exemplarischen Vorgehensweise können Sie den Free-Tarif verwenden.

Für die Interaktion mit dem Azure Cognitive Search-Dienst benötigen Sie die Dienst-URL und einen Zugriffsschlüssel.

  1. Melden Sie sich beim Azure-Portal an, und rufen Sie auf der Seite Übersicht Ihres Suchdiensts den Namen Ihres Suchdiensts ab. Sie können den Dienstnamen anhand der Endpunkt-URL überprüfen. Wenn Ihre Endpunkt-URL z.B. https://mydemo.search.windows.net lautet, ist der Name des Diensts mydemo.

  2. Rufen Sie unter Einstellungen>Schlüssel einen Administratorschlüssel ab, um Vollzugriff auf den Dienst zu erhalten. Sie können entweder den primären oder den sekundären Schlüssel kopieren.

    Get the service name and admin key

Alle HTTP-Anforderungen an einen Suchdienst erfordern einen API-Schlüssel. Ein gültiger Schlüssel stellt anforderungsbasiert eine Vertrauensstellung her zwischen der Anwendung, die die Anforderung sendet, und dem Dienst, der sie verarbeitet.

2\. Einrichten von Postman

  1. Starten Sie Postman, importieren Sie die Sammlung, und richten Sie die Umgebungsvariablen ein. Wenn Sie mit diesem Tool nicht vertraut sind, lesen Sie Schnellstart: Erstellen eines Azure Cognitive Search-Index mithilfe von REST-APIs.

  2. Sie müssen einen Suchdienstnamen, einen Administrator-API-Schlüssel, einen Indexnamen, eine Verbindungszeichenfolge für Ihr Azure Storage-Konto und den Containernamen angeben.

    Screenshot of the Variables page in Postman.

Die in dieser Sammlung verwendeten Anforderungsmethoden sind PUT und GET. Sie verwenden die Methoden, um eine Datenquelle, ein Skillset, einen Index und einen Indexer zu erstellen.

3\. Erstellen der Pipeline

In Azure Cognitive Search erfolgt die Anreicherung während der Indizierung (oder Datenerfassung). In diesem Teil der exemplarischen Vorgehensweise werden vier Objekte erstellt: Datenquelle, Indexdefinition, Skillset und Indexer.

Schritt 1: Erstellen einer Datenquelle

Rufen Sie Datenquelle erstellen auf, um die Verbindungszeichenfolge auf den Blobcontainer festzulegen, der die Beispieldatendateien enthält.

  1. Wählen Sie die Anforderung „Datenquelle erstellen“ aus.

  2. Der Anforderungstext ist JSON und enthält Eigenschaften eines Indexerdatenquellenobjekts. Die Verbindungszeichenfolge enthält Anmeldeinformationen für den Zugriff auf den Dienst.

    {   
        "description" : "Demo files to demonstrate cognitive search capabilities.",  
        "type" : "azureblob",
        "credentials" : { 
           "connectionString": "{{azure-storage-connection-string}}"
        },  
      "container" : { 
        "name" : "{{blob-container}}"
      }
    }
    
  3. Senden Sie die Anforderung. Daraufhin sollte zur Bestätigung der erfolgreichen Ausführung ein Statuscode vom Typ 201 angezeigt werden.

Wenn Sie den Fehler 403 oder 404 erhalten haben, überprüfen Sie den API-Schlüssel für den Suchadministrator und die Azure Storage Verbindungszeichenfolge.

Schritt 2: Erstellen eines Skillsets

Rufen Sie Skillset erstellen auf, um anzugeben, welche Anreicherungsschritte auf Ihren Inhalt angewendet werden.

  1. Wählen Sie die Anforderung „Skillset erstellen“ aus.

  2. Der Anforderungstext gibt die folgenden integrierten Qualifikationen an:

    Skill BESCHREIBUNG
    Optische Zeichenerkennung Erkennt Text und Zahlen in Bilddateien.
    Textzusammenführung Erstellt „zusammengeführten Inhalt“, der zuvor getrennte Inhalte neu kombiniert, nützlich für Dokumente mit eingebetteten Bildern (PDF, DOCX usw.). Bilder und Text werden während der Dokumententschlüsselungsphase getrennt. Der Zusammenführungs-Skill führt eine Neukombinierung durch, indem alle erkannten Texte, Bildbeschriftungen oder Tags, die während der Anreicherung erstellt wurden, an derselben Stelle eingefügt werden, an der das Bild aus dem Dokument extrahiert wurde.

    Wenn Sie mit zusammengeführten Inhalten in einem Skillset arbeiten, enthält dieser Knoten den gesamten Text im Dokument, einschließlich nur textbasierter Dokumente, die niemals OCR- oder Bildanalysen unterzogen werden.
    Sprachenerkennung Erkennt die Sprache und gibt entweder einen Sprachnamen oder Code aus. In mehrsprachigen Datasets kann ein Sprachfeld für Filter nützlich sein.
    Entitätserkennung Extrahiert die Namen von Personen, Organisationen und Orten aus zusammengeführten Inhalten.
    Textaufteilung Unterteilt große zusammengeführte Inhalte vor dem Aufrufen der Schlüsselbegriffserkennung in kleinere Blöcke. Die Schlüsselbegriffserkennung akzeptiert Eingaben von 50.000 Zeichen oder weniger. Für einige der Beispieldateien ist eine Aufteilung erforderlich, um diesen Grenzwert zu erfüllen.
    Schlüsselbegriffserkennung Extrahiert die wichtigsten Schlüsselbegriffe.

    Jede Qualifikation wird auf den Inhalten des Dokuments ausgeführt. Während der Verarbeitung entschlüsselt Azure Cognitive Search jedes Dokument, um die Inhalte aus verschiedenen Dateiformaten zu lesen. Gefundener Text, der aus der Quelldatei stammt, wird in einem generierten Feld content gespeichert, einem für jedes Dokument. Die Eingabe wird somit zu "/document/content".

    Da wir hier die Qualifikation „Text unterteilen“ verwenden, um größere Dateien in Seiten zu unterteilen, lautet der Kontext bei der Schlüsselbegriffserkennung nicht "/document/content", sondern "document/pages/*" (für jede Seite im Dokument).

    {
      "description": "Apply OCR, detect language, extract entities, and extract key-phrases.",
      "cognitiveServices": null,
      "skills":
      [
        {
          "@odata.type": "#Microsoft.Skills.Vision.OcrSkill",
          "context": "/document/normalized_images/*",
          "defaultLanguageCode": "en",
          "detectOrientation": true,
          "inputs": [
            {
              "name": "image",
              "source": "/document/normalized_images/*"
            }
          ],
          "outputs": [
            {
              "name": "text"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.MergeSkill",
          "description": "Create merged_text, which includes all the textual representation of each image inserted at the right location in the content field. This is useful for PDF and other file formats that supported embedded images.",
          "context": "/document",
          "insertPreTag": " ",
          "insertPostTag": " ",
          "inputs": [
            {
              "name":"text", 
              "source": "/document/content"
            },
            {
              "name": "itemsToInsert", 
              "source": "/document/normalized_images/*/text"
            },
            {
              "name":"offsets", 
              "source": "/document/normalized_images/*/contentOffset" 
            }
          ],
          "outputs": [
            {
              "name": "mergedText", 
              "targetName" : "merged_text"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.SplitSkill",
          "textSplitMode": "pages",
          "maximumPageLength": 4000,
          "defaultLanguageCode": "en",
          "context": "/document",
          "inputs": [
            {
              "name": "text",
              "source": "/document/merged_text"
            }
          ],
          "outputs": [
            {
              "name": "textItems",
              "targetName": "pages"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.LanguageDetectionSkill",
          "description": "If you have multilingual content, adding a language code is useful for filtering",
          "context": "/document",
          "inputs": [
            {
              "name": "text",
              "source": "/document/merged_text"
            }
          ],
          "outputs": [
            {
              "name": "languageName",
              "targetName": "language"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.KeyPhraseExtractionSkill",
          "context": "/document/pages/*",
          "inputs": [
            {
              "name": "text",
              "source": "/document/pages/*"
            }
          ],
          "outputs": [
            {
              "name": "keyPhrases",
              "targetName": "keyPhrases"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
          "categories": ["Organization"],
          "context": "/document",
          "inputs": [
            {
              "name": "text",
              "source": "/document/merged_text"
            }
          ],
          "outputs": [
            {
              "name": "organizations",
              "targetName": "organizations"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
          "categories": ["Location"],
          "context": "/document",
          "inputs": [
            {
              "name": "text",
              "source": "/document/merged_text"
            }
          ],
          "outputs": [
            {
              "name": "locations",
              "targetName": "locations"
            }
          ]
        },
        {
          "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
          "categories": ["Person"],
          "context": "/document",
          "inputs": [
            {
              "name": "text",
              "source": "/document/merged_text"
            }
          ],
          "outputs": [
            {
              "name": "persons",
              "targetName": "persons"
            }
          ]
        }
      ]
    }
    

    Unten finden Sie eine grafische Darstellung eines Teils des Skillsets.

    Understand a skillset

  3. Senden Sie die Anforderung. Daraufhin sollte von Postman zur Bestätigung der erfolgreichen Ausführung ein Statuscode vom Typ 201 zurückgegeben werden.

Hinweis

Ausgaben können einem Index zugeordnet, als Eingabe einer Downstream-Qualifikation verwendet oder in beider Weise zugleich eingesetzt werden, wie etwa bei Sprachcode. Im Index ist ein Sprachcode zu Filterungszwecken nützlich. Weitere Informationen zu den Grundlagen von Qualifikationsgruppen finden Sie unter How to define a skillset (Definieren von Qualifikationsgruppen).

Schritt 3: Erstellen eines Index

Rufen Sie Index erstellen auf, um das Schema bereitzustellen, das verwendet wird, um invertierte Indizes und andere Konstrukte in Azure Cognitive Search zu erstellen. Die größte Komponente eines Index ist die Feldauflistung, deren Datentyp und Attribute die Inhalte und Verhaltensweisen in Azure Cognitive Search bestimmen.

  1. Wählen Sie die Anforderung „Index erstellen“ aus.

  2. Der Anforderungstext definiert das Schema des Suchindexes. Für eine Feldsammlung muss ein Feld als Schlüssel festgelegt werden. Bei Blobinhalten ist dieses Feld häufig „metadata_storage_path“, das jedes Blob im Container eindeutig identifiziert.

    In diesem Schema empfängt das Feld „text“ die OCR-Ausgabe, „content“ empfängt eine zusammengeführte Ausgabe, „language“ empfängt die Spracherkennungsausgabe. Schlüsselbegriffe, Entitäten und mehrere Felder, die aus Blob-Speicher entfernt wurden, umfassen die verbleibenden Einträge.

    {
      "fields": [
        {
          "name": "text",
          "type": "Collection(Edm.String)",
          "searchable": true,
          "sortable": false,
          "filterable": true,
          "facetable": false
        },
        {
          "name": "content",
          "type": "Edm.String",
          "searchable": true,
          "sortable": false,
          "filterable": false,
          "facetable": false
        },
        {
          "name": "language",
          "type": "Edm.String",
          "searchable": false,
          "sortable": true,
          "filterable": true,
          "facetable": false
        },
        {
          "name": "keyPhrases",
          "type": "Collection(Edm.String)",
          "searchable": true,
          "sortable": false,
          "filterable": true,
          "facetable": true
        },
        {
          "name": "organizations",
          "type": "Collection(Edm.String)",
          "searchable": true,
          "sortable": false,
          "filterable": true,
          "facetable": true
        },
        {
          "name": "persons",
          "type": "Collection(Edm.String)",
          "searchable": true,
          "sortable": false,
          "filterable": true,
          "facetable": true
        },
        {
          "name": "locations",
          "type": "Collection(Edm.String)",
          "searchable": true,
          "sortable": false,
          "filterable": true,
          "facetable": true
        },
        {
          "name": "metadata_storage_path",
          "type": "Edm.String",
          "key": true,
          "searchable": true,
          "sortable": false,
          "filterable": false,
          "facetable": false
        },
        {
          "name": "metadata_storage_name",
          "type": "Edm.String",
          "searchable": true,
          "sortable": false,
          "filterable": false,
          "facetable": false
        }
      ]
    }
    
  3. Senden Sie die Anforderung. Daraufhin sollte von Postman zur Bestätigung der erfolgreichen Ausführung ein Statuscode vom Typ 201 zurückgegeben werden.

Schritt 4: Erstellen und Ausführen eines Indexers

Rufen Sie Indexer erstellen auf, um die Pipeline zu steuern. Die drei bereits erstellten Komponenten (Datenquelle, Skillset und Index) sind Eingaben für einen Indexer. Durch die Erstellung des Indexers in Azure Cognitive Search wird die gesamte Pipeline aktiviert.

  1. Wählen Sie die Anforderung „Indexer erstellen“ aus.

  2. Der Anforderungsteil enthält Verweise auf die vorherigen Objekte, Konfigurationseigenschaften, die für die Bildverarbeitung erforderlich sind, und zwei Typen von Feldzuordnungen.

    "fieldMappings" werden vor dem Skillset verarbeitet und senden Inhalte aus der Datenquelle an Zielfelder in einem Index. Feldzuordnungen werden verwendet, um bereits vorhandene, unveränderte Inhalte an den Index zu senden. Wenn die Feldnamen und -typen auf beiden Seiten gleich sind, ist keine Zuordnung erforderlich.

    "outputFieldMappings" sind für Felder, die nach der Ausführung des Skillsets von Qualifikationen erstellt wurden. Die Verweise auf sourceFieldName in outputFieldMappings müssen erst durch die Dokumententschlüsselung oder Anreicherung erstellt werden. Bei targetFieldName handelt es sich um ein im Indexschema definiertes Feld in einem Index.

    {
      "dataSourceName" : "{{index_name}}-datasource",
      "targetIndexName" : "{{index_name}}",
      "skillsetName" : "{{index_name}}-skillset",
      "fieldMappings" : [
            {
              "sourceFieldName" : "metadata_storage_path",
              "targetFieldName" : "metadata_storage_path",
              "mappingFunction" : { "name" : "base64Encode" }
            },
            {
            	"sourceFieldName": "metadata_storage_name",
            	"targetFieldName": "metadata_storage_name"
            }
       ],
      "outputFieldMappings" : 
    	[
    		{
            	"sourceFieldName": "/document/merged_text",
            	"targetFieldName": "content"
            },
            {
                "sourceFieldName" : "/document/normalized_images/*/text",
                "targetFieldName" : "text"
            },
      		{
              "sourceFieldName" : "/document/organizations", 
              "targetFieldName" : "organizations"
            },
            {
            	"sourceFieldName": "/document/language",
            	"targetFieldName": "language"
            },
      		{
              "sourceFieldName" : "/document/persons", 
              "targetFieldName" : "persons"
            },
      		{
              "sourceFieldName" : "/document/locations", 
              "targetFieldName" : "locations"
            },
            {
              "sourceFieldName" : "/document/pages/*/keyPhrases/*", 
              "targetFieldName" : "keyPhrases"
            }
        ],
      "parameters":
      {
    	"batchSize": 1,
      	"maxFailedItems":-1,
      	"maxFailedItemsPerBatch":-1,
      	"configuration": 
    	{
        	"dataToExtract": "contentAndMetadata",
        	"imageAction": "generateNormalizedImages"
    	}
      }
    }
    
  3. Senden Sie die Anforderung. Daraufhin sollte von Postman zur Bestätigung der erfolgreichen Verarbeitung ein Statuscode vom Typ 201 zurückgegeben werden.

    Sie sollten damit rechnen, dass die Ausführung dieses Schritts mehrere Minuten in Anspruch nimmt. Das Dataset ist zwar klein, Analysequalifikationen sind aber rechenintensiv.

Hinweis

Die Pipeline wird durch Erstellen eines Indexers aufgerufen. Wenn beim Zugriff auf die Daten, dem Zuordnen von Ein- und Ausgaben oder der Reihenfolge der Vorgänge Probleme bestehen, äußern sie sich in dieser Phase. Um die Pipeline mit Code- oder Skriptänderungen auszuführen, müssen Sie möglicherweise zuerst Objekte löschen. Weitere Informationen finden Sie unter Reset and re-run (Zurücksetzen und erneut Ausführen).

Informationen zu Indexerparametern

Das Skript legt "maxFailedItems" auf -1 fest, was die Index-Engine anweist, Fehler beim Datenimport zu ignorieren. Dies ist akzeptabel, da die Demodatenquelle nur einige wenige Dokumente enthält. Für eine größere Datenquelle sollten Sie den Wert größer als 0 festlegen.

Durch die Anweisung "dataToExtract":"contentAndMetadata" wird der Indexer angewiesen, die Inhalte aus verschiedenen Dateiformaten sowie die den einzelnen Dateien zugeordneten Metadaten automatisch zu extrahieren.

Wenn die Inhalte extrahiert werden, können Sie imageAction darauf festlegen, Text aus in der Datenquelle gefundenen Bildern zu extrahieren. Die Konfiguration "imageAction":"generateNormalizedImages" in Kombination mit der OCR- und der Textzusammenführungsqualifikation weist den Indexer an, Text aus den Bildern zu extrahieren (beispielsweise das Wort „Stop“ aus einem Stoppschild) und ihn als Teil des Inhaltsfelds einzubetten. Dieses Verhalten betrifft sowohl die in den Dokumenten eingebetteten Bilder (denken Sie etwa an Bilder in PDF-Dateien) als auch die in der Datenquelle gefundenen Bilder, z.B. eine JPG-Datei.

4\. Überwachen der Indizierung

Indizierung und Anreicherung beginnen, sobald Sie die Anforderung für die Indexererstellung übermitteln. Abhängig von den kognitiven Qualifikationen, die Sie definiert haben, kann die Indizierung eine Weile dauern.

Um herauszufinden, ob der Indexer noch ausgeführt wird, rufen Sie Indexer-Status abrufen auf, um den Indexerstatus zu überprüfen.

  1. Wählen Sie die Anforderung „Indexerstatus überprüfen“ aus, und senden Sie sie.

  2. Ermitteln Sie anhand der Antwort, ob der Indexer ausgeführt wird, oder sehen Sie sich Fehler- und Warnungsinformationen an.

Warnungen sind in bestimmten Szenarien keine Seltenheit, deuten aber nicht immer auf ein Problem hin. Wenn zum Beispiel ein Blobcontainer Bilddateien enthält und die Pipeline keine Bilder verarbeitet, wird eine entsprechende Warnung angezeigt.

In diesem Beispiel gibt es eine PNG-Datei, die keinen Text enthält. Alle fünf textbasierten Qualifikationen (Spracherkennung, Entitätserkennung von Standorten, Organisationen, Personen und Schlüsselbegriffserkennung) können in dieser Datei nicht ausgeführt werden. Die resultierende Benachrichtigung wird im Ausführungsverlauf angezeigt.

Nachdem Sie nun einen Index erstellt haben, der von KI generierte Inhalte enthält, rufen Sie Dokumente durchsuchen auf, um die Ergebnisse anzuzeigen.

Zur Erinnerung: Wir haben Blobinhalte als Grundlage verwendet, bei denen das gesamte Dokument in ein einzelnes Feld vom Typ content gepackt wird. Sie können dieses Feld durchsuchen und nach Übereinstimmungen für Ihre Abfragen suchen.

  1. Öffnen Sie die Anforderung „Suchen“, und führen Sie sie aus, um den Indexinhalt zum ersten Mal anzuzeigen. Diese Anforderung ist eine leere Suche („search=*“), sodass sie Inhalt für jedes der 14 Dokumente anzeigt. Der $select-Parameter beschränkt die Ergebnisse auf den Dateinamen, den Sprachnamen und eine der erkannten Entitäten.

     GET /indexes//{{index_name}}/docs?search=*&$select=metadata_storage_name,language,organizations&$count=true&api-version=2020-06-30
    
  2. Überarbeiten Sie die vorherige Abfrage, um nach „Erstellen von grenzenlosen Gelegenheiten“ zu suchen. Dieser Ausdruck wurde über OCR aus einer eingebetteten Bilddatei in einem PDF-Dokument erhalten. Fügen Sie „Hervorhebung“ ein, um Formatierungen auf übereinstimmende Begriffe in eng gefüllten Feldern anzuwenden.

     GET /indexes//{{index_name}}/docs?search=creating boundaryless opportunities&$select=content&highlight=content&$count=true&api-version=2020-06-30
    
  3. Wenden Sie für die nächste Abfrage einen Filter an. Denken Sie daran, dass das Sprachfeld und alle Entitätsfelder filterbar sind.

     GET /indexes/{{index_name}}/docs?search=*&$filter=organizations/any(organizations: organizations eq 'NASDAQ')&$select=metadata_storage_name,organizations&$count=true&api-version=2020-06-30
    

Diese Abfragen veranschaulichen einige der Verwendungsmöglichkeiten von Abfragesyntax und Filtern für neue Felder, die von Cognitive Search erstellt werden. Weitere Abfragebeispiele finden Sie unter Beispiele im Artikel „Durchsuchen von Dokumenten (Azure Cognitive Search-REST-API)“, unter Erstellen einer einfachen Abfrage in Azure Search sowie unter Verwenden der „vollständigen“ Lucene-Suchsyntax (erweiterte Abfragen in der kognitiven Azure-Suche).

Zurücksetzen und erneut ausführen

In frühen Phasen der Entwicklung kommt es häufig zu Iterationen des Entwurfs. Sie werden die gleichen Objekte wahrscheinlich häufig löschen und neu erstellen.

Wenn Sie das Portal zum Löschen verwenden und zuerst den Indexer löschen, werden Sie vom Portal aufgefordert, die zugeordneten Objekte zu löschen.

Delete search objects

Alternativ können Sie DELETE verwenden und URLs für jedes Objekt angeben. Der folgende Befehl löscht einen Indexer:

DELETE https://[YOUR-SERVICE-NAME].search.windows.net/indexers/cog-search-demo-idxr?api-version=2020-06-30

Nach erfolgreichem Löschen wird der Statuscode 204 zurückgegeben.

Wesentliche Punkte

Dieses Tutorial veranschaulicht die grundlegenden Schritte beim Erstellen einer erweiterten Indizierungspipeline durch Erstellung von Komponenten: eine Datenquelle, eine Qualifikationsgruppe, ein Index und ein Indexer.

Es wurden integrierte Qualifikationen im Zusammenhang mit der Skillsetdefinition und den Mechanismen zur Verkettung von Qualifikationen mithilfe von Ein- und Ausgängen vorgestellt. Sie haben darüber hinaus erfahren, dass outputFieldMappings in der Indexerdefinition erforderlich ist, um angereicherte Werte aus der Pipeline an einen durchsuchbaren Index in einem Azure Cognitive Search-Dienst weiterzuleiten.

Ferner haben Sie erfahren, wie die Ergebnisse getestet werden und das System für weitere Entwicklungsschritte zurückgesetzt wird. Sie haben gelernt, dass das Ausgeben von Abfragen auf den Index die von der angereicherten Indizierungspipeline erstellte Ausgabe zurückgibt.

Bereinigen von Ressourcen

Wenn Sie in Ihrem eigenen Abonnement arbeiten, ist es ratsam, nach Abschluss eines Projekts die nicht mehr benötigten Ressourcen zu entfernen. Ressourcen, die weiterhin ausgeführt werden, können Sie Geld kosten. Sie können entweder einzelne Ressourcen oder aber die Ressourcengruppe löschen, um den gesamten Ressourcensatz zu entfernen.

Ressourcen können im Portal über den Link „Alle Ressourcen“ oder „Ressourcengruppen“ im linken Navigationsbereich gesucht und verwaltet werden.

Nächste Schritte

Nachdem Sie sich nun mit allen Objekten einer KI-Anreicherungspipeline vertraut gemacht haben, können Sie sich weiter über Skillsetdefinitionen und einzelne Qualifikationen informieren.