Freigeben über


Lernprogramm: Vektorisieren von Bildern und Text

Azure AI Search kann Sowohl Text als auch Bilder aus PDF-Dokumenten extrahieren und indizieren, die in Azure Blob Storage gespeichert sind. In diesem Lernprogramm erfahren Sie, wie Sie eine multimodale Indizierungspipeline in Azure AI Search erstellen, die Daten mithilfe der integrierten Fähigkeit "Textteilung" gliedert und multimodale Einbettungen verwendet, um Text und Bilder aus demselben Dokument zu vektorisieren. Zugeschnittene Bilder werden in einem Wissensspeicher gespeichert, und sowohl Text als auch visuelle Inhalte werden vektorisiert und in einem durchsuchbaren Index aufgenommen.

In dieser Anleitung verwenden Sie Folgendes:

  • Ein 36-seitiges PDF-Dokument, das umfangreiche visuelle Inhalte wie Diagramme, Infografiken und gescannte Seiten mit herkömmlichem Text kombiniert.

  • Ein Indexer und Skillset zum Erstellen einer Indizierungspipeline, die KI-Anreicherung durch Skills umfasst.

  • Die Dokumentextraktionsfähigkeit zum Extrahieren normalisierter Bilder und Text. Die Textteilungskompetenz gliedert die Daten.

  • Die Azure Vision multimodale Einbettungskompetenz zum Vektorisieren von Text und Bildern.

  • Ein Suchindex, der zum Speichern extrahierter Text- und Bildinhalte konfiguriert ist. Einige Inhalte werden für die vektorbasierte Ähnlichkeitssuche vektorisiert.

In diesem Lernprogramm wird ein kostengünstigerer Ansatz zum Indizieren von multimodalen Inhalten mithilfe der Dokumentextraktionsfähigkeit veranschaulicht. Es ermöglicht die Extraktion und Suche über Text und Bilder aus Dokumenten, die aus Azure Blob Storage abgerufen werden. Es enthält jedoch keine Positionsmetadaten für Text, z. B. Seitenzahlen oder Begrenzungsregionen. Eine umfassendere Lösung mit strukturierten Textlayouts und räumlichen Metadaten finden Sie im Lernprogramm: Vektorisieren aus einem strukturierten Dokumentlayout.

Note

Die Bildextraktion durch die Dokumentextraktions-Funktion ist kostenpflichtig. Die Einstellung von imageAction auf generateNormalizedImages im Skillset löst die Bildextraktion aus, was zusätzliche Gebühren verursacht. Informationen zur Abrechnung finden Sie unter Azure AI Search-Preise.

Prerequisites

  • Microsoft Foundry-Ressource. Diese Ressource bietet Zugriff auf das in diesem Lernprogramm verwendete multimodale Einbettungsmodell von Azure Vision. Sie müssen auf ein Foundry-Ressourcen-Fähigkeits-Set zugreifen, um diese Ressource zu nutzen.

  • Azure AI Search. Konfigurieren Sie Ihren Suchdienst für die rollenbasierte Zugriffssteuerung und eine verwaltete Identität für Verbindungen mit Azure Storage und Azure Vision. Ihr Dienst muss sich auf der Stufe "Einfach" oder höher befinden. Dieses Lernprogramm wird auf der Stufe "Kostenlos" nicht unterstützt.

  • Azure Storage, verwendet zum Speichern von Beispieldaten und zum Erstellen eines Wissensspeichers.

  • Visual Studio Code mit einem REST-Client

Limitations

Vorbereiten von Daten

Die folgenden Anweisungen gelten für Azure Storage, die die Beispieldaten bereitstellt und auch den Wissensspeicher hosten. Eine Suchdienstidentität benötigt Lesezugriff auf Azure Storage, um die Beispieldaten abzurufen, und sie benötigt Schreibzugriff, um den Wissensspeicher zu erstellen. Der Suchdienst erstellt den Container für zugeschnittene Bilder während der Skillset-Verarbeitung, wobei der Name verwendet wird, den Sie in einer Umgebungsvariable angeben.

  1. Laden Sie das folgende Beispiel PDF herunter: sustainable-ai-pdf

  2. Erstellen Sie in Azure Storage einen neuen Container namens sustainable-ai-pdf.

  3. Laden Sie die Beispieldatendatei hoch.

  4. Erstellen Sie Rollenzuweisungen, und geben Sie eine verwaltete Identität in einer Verbindungszeichenfolge an:

    1. Weisen Sie die Rolle Storage Blob Data Reader für den Datenabruf durch den Indexer zu. Weisen Sie den Mitwirkenden von Speicher-Blob-Daten und den Mitwirkenden von Speichertabellendaten zu, um den Wissensspeicher zu erstellen und zu laden. Sie können entweder eine vom System zugewiesene verwaltete Identität oder eine vom Benutzer zugewiesene verwaltete Identität für Ihre Rollenzuweisung des Suchdiensts verwenden.

    2. Für Verbindungen, die mit einer vom System zugewiesenen verwalteten Identität hergestellt werden, rufen Sie eine Verbindungszeichenfolge ab, die eine ResourceId ohne Kontoschlüssel oder Kennwort enthält. Die ResourceId muss die Abonnement-ID des Speicherkontos, die Ressourcengruppe des Speicherkontos und den Namen des Speicherkontos enthalten. Die Verbindungszeichenfolge ist eine URL, die in etwa wie folgt aussieht:

      "credentials" : { 
          "connectionString" : "ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.Storage/storageAccounts/MY-DEMO-STORAGE-ACCOUNT/;" 
      }
      
    3. Für Verbindungen, die mit einer vom Benutzer zugewiesenen verwalteten Identität hergestellt werden, rufen Sie eine Verbindungszeichenfolge ab, die eine ResourceId ohne Kontoschlüssel oder Kennwort enthält. Die ResourceId muss die Abonnement-ID des Speicherkontos, die Ressourcengruppe des Speicherkontos und den Namen des Speicherkontos enthalten. Stellen Sie eine Identität mithilfe der im folgenden Beispiel gezeigten Syntax bereit. Legen Sie userAssignedIdentity auf die benutzerseitig zugewiesene verwaltete Identität fest. Die Verbindungszeichenfolge ist eine URL, die in etwa wie folgt aussieht:

      "credentials" : { 
          "connectionString" : "ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.Storage/storageAccounts/MY-DEMO-STORAGE-ACCOUNT/;" 
      },
      "identity" : { 
          "@odata.type": "#Microsoft.Azure.Search.DataUserAssignedIdentity",
          "userAssignedIdentity" : "/subscriptions/00000000-0000-0000-0000-00000000/resourcegroups/MY-DEMO-RESOURCE-GROUP/providers/Microsoft.ManagedIdentity/userAssignedIdentities/MY-DEMO-USER-MANAGED-IDENTITY" 
      }
      

Vorbereiten von Modellen

In diesem Tutorial wird davon ausgegangen, dass Sie über eine vorhandene Foundry-Ressource verfügen, über die das multimodale Azure Vision 4.0-Einbettungsmodell aufgerufen wird. Der Suchdienst stellt eine Verbindung mit dem Modell während der Verarbeitung von Fähigkeiten mithilfe seiner verwalteten Identität her. In diesem Abschnitt finden Sie Anleitungen und Links zum Zuweisen von Rollen für autorisierten Zugriff.

  1. Melden Sie sich beim Azure-Portal (nicht beim Foundry-Portal) an, und suchen Sie die Foundry-Ressource. Stellen Sie sicher, dass es sich in einer Region befindet, die die multimodale 4.0-API bereitstellt.

  2. Wählen Sie Zugriffssteuerung (IAM) aus.

  3. Wählen Sie "Hinzufügen" und dann " Rollenzuweisung hinzufügen" aus.

  4. Suchen Sie nach Cognitive Services User , und wählen Sie ihn aus.

  5. Wählen Sie verwaltete Identität aus, und weisen Sie dann Ihre verwaltete Identität des Suchdiensts zu.

Einrichten der REST-Datei

Für dieses Lernprogramm erfordert Ihre lokale REST-Clientverbindung mit Azure AI Search einen Endpunkt und einen API-Schlüssel. Diese Werte erhalten Sie im Azure-Portal. Alternative Verbindungsmethoden finden Sie unter Herstellen einer Verbindung mit einem Suchdienst.

Bei authentifizierten Verbindungen, die während der Indexer- und Skillset-Verarbeitung auftreten, verwendet der Suchdienst die zuvor definierten Rollenzuweisungen.

  1. Starten Sie Visual Studio Code und erstellen Sie eine neue Datei.

  2. Geben Sie Werte für Variablen an, die in der Anforderung verwendet werden. Stellen Sie sicher @storageConnection, dass die Verbindungszeichenfolge nicht über ein nachfolgendes Semikolon oder Anführungszeichen verfügt. Geben Sie für @imageProjectionContainereinen Containernamen an, der im BLOB-Speicher eindeutig ist. Azure AI Search erstellt diesen Container für Sie während der Verarbeitung von Fähigkeiten.

     @searchUrl = PUT-YOUR-SEARCH-SERVICE-ENDPOINT-HERE
     @searchApiKey = PUT-YOUR-ADMIN-API-KEY-HERE
     @storageConnection = PUT-YOUR-STORAGE-CONNECTION-STRING-HERE
     @cognitiveServicesUrl = PUT-YOUR-AZURE-AI-FOUNDRY-ENDPOINT-HERE
     @modelVersion = 2023-04-15
     @imageProjectionContainer=sustainable-ai-pdf-images
    
  3. Speichern Sie die Datei mit der Dateierweiterung .rest oder .http. Hilfe zum REST-Client finden Sie in der Schnellstartanleitung: Volltextsuche mit REST.

Um den Azure AI Search-Endpunkt und API-Schlüssel abzurufen:

  1. Melden Sie sich beim Azure-Portalan, navigieren Sie zur Seite Übersicht des Suchdiensts, und kopieren Sie die URL. Ein Beispiel für einen Endpunkt ist https://mydemo.search.windows.net.

  2. Kopieren Sie unter Einstellungensschlüssel> einen Administratorschlüssel. Administratorschlüssel werden verwendet, um Objekte hinzuzufügen, zu ändern und zu löschen. Es gibt zwei austauschbare Administratorschlüssel. Kopieren Sie einen der beiden Schlüssel.

    Screenshot der URL und API-Schlüssel im Azure-Portal

Erstellen einer Datenquelle

Create Data Source (REST) erstellt eine Datenquellenverbindung, die angibt, welche Daten indiziert werden sollen.

POST {{searchUrl}}/datasources?api-version=2025-11-01-preview   HTTP/1.1
  Content-Type: application/json
  api-key: {{searchApiKey}}

{
   "name":"doc-extraction-multimodal-embedding-ds",
   "description":null,
   "type":"azureblob",
   "subtype":null,
   "credentials":{
      "connectionString":"{{storageConnection}}"
   },
   "container":{
      "name":"sustainable-ai-pdf",
      "query":null
   },
   "dataChangeDetectionPolicy":null,
   "dataDeletionDetectionPolicy":null,
   "encryptionKey":null,
   "identity":null
}

Senden Sie die Anforderung. Die Antwort sollte in etwa wie folgt aussehen:

HTTP/1.1 201 Created
Transfer-Encoding: chunked
Content-Type: application/json; odata.metadata=minimal; odata.streaming=true; charset=utf-8
Location: https://<YOUR-SEARCH-SERVICE-NAME>.search.windows-int.net:443/datasources('doc-extraction-multimodal-embedding-ds')?api-version=2025-11-01-preview -Preview
Server: Microsoft-IIS/10.0
Strict-Transport-Security: max-age=2592000, max-age=15724800; includeSubDomains
Preference-Applied: odata.include-annotations="*"
OData-Version: 4.0
request-id: 4eb8bcc3-27b5-44af-834e-295ed078e8ed
elapsed-time: 346
Date: Sat, 26 Apr 2025 21:25:24 GMT
Connection: close

{
  "name": "doc-extraction-multimodal-embedding-ds",
  "description": null,
  "type": "azureblob",
  "subtype": null,
  "indexerPermissionOptions": [],
  "credentials": {
    "connectionString": null
  },
  "container": {
    "name": "sustainable-ai-pdf",
    "query": null
  },
  "dataChangeDetectionPolicy": null,
  "dataDeletionDetectionPolicy": null,
  "encryptionKey": null,
  "identity": null
}

Erstellen eines Index

Index erstellen (REST) erstellt einen Suchindex für Ihren Suchdienst. Ein Index gibt alle Parameter und die dazugehörigen Attribute an.

Für geschachtelte JSON müssen die Indexfelder mit den Quellfeldern identisch sein. Derzeit unterstützt Azure AI Search keine Feldzuordnungen zu geschachtelten JSON-Daten, sodass Feldnamen und Datentypen vollständig übereinstimmen müssen. Der folgende Index richtet sich an die JSON-Elemente im rohen Inhalt.

### Create an index
POST {{searchUrl}}/indexes?api-version=2025-11-01-preview   HTTP/1.1
  Content-Type: application/json
  api-key: {{searchApiKey}}

{
    "name": "doc-extraction-multimodal-embedding-index",
    "fields": [
        {
            "name": "content_id",
            "type": "Edm.String",
            "retrievable": true,
            "key": true,
            "analyzer": "keyword"
        },
        {
            "name": "text_document_id",
            "type": "Edm.String",
            "searchable": false,
            "filterable": true,
            "retrievable": true,
            "stored": true,
            "sortable": false,
            "facetable": false
        },          
        {
            "name": "document_title",
            "type": "Edm.String",
            "searchable": true
        },
        {
            "name": "image_document_id",
            "type": "Edm.String",
            "filterable": true,
            "retrievable": true
        },
        {
            "name": "content_text",
            "type": "Edm.String",
            "searchable": true,
            "retrievable": true
        },
        {
            "name": "content_embedding",
            "type": "Collection(Edm.Single)",
            "dimensions": 1024,
            "searchable": true,
            "retrievable": true,
            "vectorSearchProfile": "hnsw"
        },
        {
            "name": "content_path",
            "type": "Edm.String",
            "searchable": false,
            "retrievable": true
        },
        {
            "name": "offset",
            "type": "Edm.String",
            "searchable": false,
            "retrievable": true
        },
        {
            "name": "location_metadata",
            "type": "Edm.ComplexType",
            "fields": [
                {
                "name": "page_number",
                "type": "Edm.Int32",
                "searchable": false,
                "retrievable": true
                },
                {
                "name": "bounding_polygons",
                "type": "Edm.String",
                "searchable": false,
                "retrievable": true,
                "filterable": false,
                "sortable": false,
                "facetable": false
                }
            ]
        }         
    ],
    "vectorSearch": {
        "profiles": [
            {
                "name": "hnsw",
                "algorithm": "defaulthnsw",
                "vectorizer": "demo-vectorizer"
            }
        ],
        "algorithms": [
            {
                "name": "defaulthnsw",
                "kind": "hnsw",
                "hnswParameters": {
                    "m": 4,
                    "efConstruction": 400,
                    "metric": "cosine"
                }
            }
        ],
        "vectorizers": [
            {
                "name": "demo-vectorizer",
                "kind": "aiServicesVision",
                "aiServicesVisionParameters": {
                    "resourceUri": "{{cognitiveServicesUrl}}",
                    "authIdentity": null,
                    "modelVersion": "{{modelVersion}}"
                }
            }
        ]     
    },
    "semantic": {
        "defaultConfiguration": "semanticconfig",
        "configurations": [
            {
                "name": "semanticconfig",
                "prioritizedFields": {
                    "titleField": {
                        "fieldName": "document_title"
                    },
                    "prioritizedContentFields": [
                    ],
                    "prioritizedKeywordsFields": []
                }
            }
        ]
    }
}

Wichtige Punkte:

  • Text- und Bildeinbettungen werden im content_embedding Feld gespeichert und müssen mit entsprechenden Dimensionen wie 1024 und einem Vektorsuchprofil konfiguriert werden.

  • location_metadata erfasst umgebende Polygon- und Seitenzahlenmetadaten für jedes normalisierte Bild, wodurch präzise räumliche Such- oder UI-Überlagerungen ermöglicht werden. location_metadata ist nur für Bilder in diesem Szenario vorhanden. Wenn Sie auch Standortmetadaten für Text erfassen möchten, sollten Sie die Dokumentlayout-Funktion in Betracht ziehen. Ein ausführliches Tutorial ist unten auf der Seite verlinkt.

  • Weitere Informationen zur Vektorsuche finden Sie unter Vektoren in Azure AI Search.

  • Weitere Informationen zur semantischen Rangfolge finden Sie unter Semantikbewertung in Azure AI Search

Erstellen eines Skillsets

Create Skillset (REST) erstellt ein Skillset für Ihren Suchdienst. Ein Skillset definiert die Operationen, die Inhalte vor der Indizierung segmentieren und einbetten. Dieses Skillset verwendet die integrierte Dokumentextraktionsfähigkeit, um Text und Bilder zu extrahieren. Es verwendet die Text-Split-Funktion, um große Textmengen zu unterteilen. Es verwendet die Azure Vision multimodale Einbettungsfähigkeiten, um Bild- und Textinhalte zu vektorisieren.

### Create a skillset
POST {{searchUrl}}/skillsets?api-version=2025-11-01-preview   HTTP/1.1
  Content-Type: application/json
  api-key: {{searchApiKey}}

{
  "name": "doc-extraction-multimodal-embedding-skillset",
	"description": "A test skillset",
  "skills": [
    {
      "@odata.type": "#Microsoft.Skills.Util.DocumentExtractionSkill",
      "name": "document-extraction-skill",
      "description": "Document extraction skill to extract text and images from documents",
      "parsingMode": "default",
      "dataToExtract": "contentAndMetadata",
      "configuration": {
          "imageAction": "generateNormalizedImages",
          "normalizedImageMaxWidth": 2000,
          "normalizedImageMaxHeight": 2000
      },
      "context": "/document",
      "inputs": [
        {
          "name": "file_data",
          "source": "/document/file_data"
        }
      ],
      "outputs": [
        {
          "name": "content",
          "targetName": "extracted_content"
        },
        {
          "name": "normalized_images",
          "targetName": "normalized_images"
        }
      ]
    },
    {
      "@odata.type": "#Microsoft.Skills.Text.SplitSkill",
      "name": "split-skill",
      "description": "Split skill to chunk documents",
      "context": "/document",
      "defaultLanguageCode": "en",
      "textSplitMode": "pages",
      "maximumPageLength": 2000,
      "pageOverlapLength": 200,
      "unit": "characters",
      "inputs": [
        {
          "name": "text",
          "source": "/document/extracted_content",
          "inputs": []
        }
      ],
      "outputs": [
        {
          "name": "textItems",
          "targetName": "pages"
        }
      ]
    },  
  { 
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill", 
    "name": "text-embedding-skill",
    "description": "Vision Vectorization skill for text",
    "context": "/document/pages/*", 
    "modelVersion": "{{modelVersion}}", 
    "inputs": [ 
      { 
        "name": "text", 
        "source": "/document/pages/*" 
      } 
    ], 
    "outputs": [ 
      { 
        "name": "vector",
        "targetName": "text_vector"
      } 
    ] 
  },
  { 
    "@odata.type": "#Microsoft.Skills.Vision.VectorizeSkill", 
    "name": "image-embedding-skill",
    "description": "Vision Vectorization skill for images",
    "context": "/document/normalized_images/*", 
    "modelVersion": "{{modelVersion}}", 
    "inputs": [ 
      { 
        "name": "image", 
        "source": "/document/normalized_images/*" 
      } 
    ], 
    "outputs": [ 
      { 
        "name": "vector",
  "targetName": "image_vector"
      } 
    ] 
  },  
    {
      "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
      "name": "shaper-skill",
      "description": "Shaper skill to reshape the data to fit the index schema",
      "context": "/document/normalized_images/*",
      "inputs": [
        {
          "name": "normalized_images",
          "source": "/document/normalized_images/*",
          "inputs": []
        },
        {
          "name": "imagePath",
          "source": "='{{imageProjectionContainer}}/'+$(/document/normalized_images/*/imagePath)",
          "inputs": []
        },
        {
          "name": "dataUri",
          "source": "='data:image/jpeg;base64,'+$(/document/normalized_images/*/data)",
          "inputs": []
        },
        {
          "name": "location_metadata",
          "sourceContext": "/document/normalized_images/*",
          "inputs": [
            {
              "name": "page_number",
              "source": "/document/normalized_images/*/pageNumber"
            },
            {
              "name": "bounding_polygons",
              "source": "/document/normalized_images/*/boundingPolygon"
            }              
          ]
        }          
      ],
      "outputs": [
        {
          "name": "output",
          "targetName": "new_normalized_images"
        }
      ]
    }  
  ],
  "cognitiveServices": {
    "@odata.type": "#Microsoft.Azure.Search.AIServicesByIdentity",
    "subdomainUrl": "{{cognitiveServicesUrl}}",
    "identity": null
  },
  "indexProjections": {
      "selectors": [
        {
          "targetIndexName": "doc-extraction-multimodal-embedding-index",
          "parentKeyFieldName": "text_document_id",
          "sourceContext": "/document/pages/*",
          "mappings": [              
            {
              "name": "content_embedding",
              "source": "/document/pages/*/text_vector"
            },
            {
              "name": "content_text",
              "source": "/document/pages/*"
            },             
            {
              "name": "document_title",
              "source": "/document/document_title"
            }      
          ]
        },
        {
          "targetIndexName": "doc-extraction-multimodal-embedding-index",
          "parentKeyFieldName": "image_document_id",
          "sourceContext": "/document/normalized_images/*",
          "mappings": [                                   
            {
              "name": "content_embedding",
              "source": "/document/normalized_images/*/image_vector"
            },
            {
              "name": "content_path",
              "source": "/document/normalized_images/*/new_normalized_images/imagePath"
            },
            {
              "name": "location_metadata",
              "source": "/document/normalized_images/*/new_normalized_images/location_metadata"
            },                      
            {
              "name": "document_title",
              "source": "/document/document_title"
            }                
          ]
        }
      ],
      "parameters": {
        "projectionMode": "skipIndexingParentDocuments"
      }
  },
  "knowledgeStore": {
    "storageConnectionString": "{{storageConnection}}",
    "identity": null,
    "projections": [
      {
        "files": [
          {
            "storageContainer": "{{imageProjectionContainer}}",
            "source": "/document/normalized_images/*"
          }
        ]
      }
    ]
  }
}

Dieses Skillset extrahiert Text und Bilder, vektorisiert beide und gestaltet die Bildmetadaten für die Projektion in den Index.

Wichtige Punkte:

  • Das content_text-Feld wird mit Text gefüllt, der mit der Dokumentextraktions-Fähigkeit extrahiert und mit der Aufteilen-Fähigkeit segmentiert wird.

  • content_path enthält den relativen Pfad zur Bilddatei innerhalb des vorgesehenen Bildprojektionscontainers. Dieses Feld wird nur für Bilder generiert, die aus PDFs extrahiert werden, wenn imageAction auf generateNormalizedImages festgelegt ist und aus dem erweiterten Dokument dem Quellfeld /document/normalized_images/*/imagePath zugeordnet werden kann.

  • Die multimodale Einbettungskompetenz von Azure Vision ermöglicht das Einbetten von textbezogenen und visuellen Daten mit demselben Qualifikationstyp, der durch Eingaben (Text vs Bild) unterschieden wird. Weitere Informationen finden Sie unter Azure Vision multimodale Einbettungskompetenzen.

Erstellen und Ausführen eines Indexers

"Indexer erstellen" erstellt einen Indexer für Ihren Suchdienst. Ein Indexer stellt eine Verbindung mit der Datenquelle, lädt Daten, führt ein Skillset aus und indiziert die erweiterten Daten.

### Create and run an indexer
POST {{searchUrl}}/indexers?api-version=2025-11-01-preview   HTTP/1.1
  Content-Type: application/json
  api-key: {{searchApiKey}}

{
  "name": "doc-extraction-multimodal-embedding-indexer",
  "dataSourceName": "doc-extraction-multimodal-embedding-ds",
  "targetIndexName": "doc-extraction-multimodal-embedding-index",
  "skillsetName": "doc-extraction-multimodal-embedding-skillset",
  "parameters": {
    "maxFailedItems": -1,
    "maxFailedItemsPerBatch": 0,
    "batchSize": 1,
    "configuration": {
      "allowSkillsetToReadFileData": true
    }
  },
  "fieldMappings": [
    {
      "sourceFieldName": "metadata_storage_name",
      "targetFieldName": "document_title"
    }
  ],
  "outputFieldMappings": []
}

Abfragen ausführen

Sie können mit der Suche beginnen, sobald das erste Dokument geladen wurde.

### Query the index
POST {{searchUrl}}/indexes/doc-extraction-multimodal-embedding-index/docs/search?api-version=2025-11-01-preview   HTTP/1.1
  Content-Type: application/json
  api-key: {{searchApiKey}}
  
  {
    "search": "*",
    "count": true
  }

Senden Sie die Anforderung. Dies ist eine nicht angegebene Volltext-Suchabfrage, die alle felder zurückgibt, die im Index als abrufbar gekennzeichnet sind, zusammen mit einer Dokumentanzahl. Die Antwort sollte in etwa wie folgt aussehen:

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-Type: application/json; odata.metadata=minimal; odata.streaming=true; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/10.0
Strict-Transport-Security: max-age=2592000, max-age=15724800; includeSubDomains
Preference-Applied: odata.include-annotations="*"
OData-Version: 4.0
request-id: 712ca003-9493-40f8-a15e-cf719734a805
elapsed-time: 198
Date: Wed, 30 Apr 2025 23:20:53 GMT
Connection: close

{
  "@odata.count": 100,
  "@search.nextPageParameters": {
    "search": "*",
    "count": true,
    "skip": 50
  },
  "value": [
  ],
  "@odata.nextLink": "https://<YOUR-SEARCH-SERVICE-NAME>.search.windows.net/indexes/doc-extraction-multimodal-embedding-index/docs/search?api-version=2025-11-01-preview "
}

In der Antwort werden 100 Dokumente zurückgegeben.

Sie können für Filter auch logische Operatoren (and, or, not) und Vergleichsoperatoren (eq, ne, gt, lt, ge, le) nutzen. Bei Zeichenfolgenvergleichen wird die Groß-/Kleinschreibung beachtet. Weitere Informationen und Beispiele finden Sie unter Beispiele für einfache Suchabfragen.

Note

Der $filter Parameter funktioniert nur für Felder, die während der Indexerstellung gefiltert wurden.

### Query for only images
POST {{searchUrl}}/indexes/doc-extraction-multimodal-embedding-index/docs/search?api-version=2025-11-01-preview   HTTP/1.1
  Content-Type: application/json
  api-key: {{searchApiKey}}
  
  {
    "search": "*",
    "count": true,
    "filter": "image_document_id ne null"
  }
### Query for text or images with content related to energy, returning the id, parent document, and text (only populated for text chunks), and the content path where the image is saved in the knowledge store (only populated for images)
POST {{searchUrl}}/indexes/doc-extraction-multimodal-embedding-index/docs/search?api-version=2025-11-01-preview   HTTP/1.1
  Content-Type: application/json
  api-key: {{searchApiKey}}
  

  {
    "search": "energy",
    "count": true,
    "select": "content_id, document_title, content_text, content_path"
  }

Zurücksetzen und erneut ausführen

Indexer können zurückgesetzt werden, um die Wassermarke zu löschen, die eine vollständige Erneutes Ausführen ermöglicht. Die folgenden POST-Anforderungen werden zurückgesetzt, gefolgt von einer erneuten Ausführung.

### Reset the indexer
POST {{searchUrl}}/indexers/doc-extraction-multimodal-embedding-indexer/reset?api-version=2025-11-01-preview   HTTP/1.1
  api-key: {{searchApiKey}}
### Run the indexer
POST {{searchUrl}}/indexers/doc-extraction-multimodal-embedding-indexer/run?api-version=2025-11-01-preview   HTTP/1.1
  api-key: {{searchApiKey}}
### Check indexer status 
GET {{searchUrl}}/indexers/doc-extraction-multimodal-embedding-indexer/status?api-version=2025-11-01-preview   HTTP/1.1
  api-key: {{searchApiKey}}

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 Ressourcen einzeln löschen oder die Ressourcengruppe löschen, um den gesamten Satz von Ressourcen zu löschen.

Sie können das Azure-Portal verwenden, um Indizes, Indexer und Datenquellen zu löschen.

Siehe auch

Nachdem Sie nun mit einer Beispielimplementierung eines multimodalen Indizierungsszenarios vertraut sind, sehen Sie sich Folgendes an: