Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze zelfstudie bouwt u een multimodale indexeerpijplijn waarmee deze taken worden uitgevoerd:
- Tekst en afbeeldingen extraheren en segmenten
- Tekst en afbeeldingen vectoriseren voor overeenkomsten zoeken
- Bijgesneden afbeeldingen verzenden naar een kennisarchief voor het ophalen door uw app
In deze zelfstudie worden meerdere vaardigheidsets naast elkaar getoond om verschillende manieren te illustreren om multimodale inhoud te extraheren, te segmenteren en te vectoriseren.
Vereiste voorwaarden
Azure AI Search, in de basisprijscategorie of hoger als u de voorbeeldgegevens wilt gebruiken. Configureer een beheerde identiteit voor op rollen gebaseerde toegang tot modellen en gegevens.
Azure Storage, gebruikt voor het opslaan van voorbeeldgegevens en voor het maken van een kennisarchief.
Microsoft Foundry-resource die Foundry-modellen en API's biedt. Als u Azure AI Vision multimodaal gebruikt, kiest u een van de ondersteunde regio's voor uw Microsoft Foundry-resource.
Visual Studio Code met de REST-client of de Python-extensie. Als u geen geschikte versie van Python hebt geïnstalleerd, volgt u de instructies in de zelfstudie voor VS Code Python.
Multimodale indexering wordt geïmplementeerd via vaardigheden die AI-modellen en API's aanroepen in een indexeerpijplijn. Modelvereisten variëren, afhankelijk van de vaardigheden die voor elke taak zijn gekozen.
Aanbeveling
Als u deze zelfstudie over de gratis laag wilt voltooien, gebruikt u een kleiner document met minder afbeeldingen. In deze zelfstudie worden alleen Foundry-modellen gebruikt, maar u kunt aangepaste vaardigheden maken om andere modellen te gebruiken.
Toegang configureren
Voordat u begint, moet u beschikken over machtigingen voor toegang tot inhoud en bewerkingen in Azure AI Search. In deze quickstart wordt Microsoft Entra ID gebruikt voor verificatie en op rollen gebaseerde toegang voor autorisatie. U moet eigenaar of beheerder van gebruikerstoegang zijn om rollen toe te wijzen. Als rollen niet haalbaar zijn, gebruik dan sleutelgebaseerde authenticatie in plaats daarvan.
De aanbevolen op rollen gebaseerde toegang configureren:
Schakel op rollen gebaseerde toegang in voor uw zoekservice.
Wijs de volgende rollen toe aan uw gebruikersaccount.
Inzender voor zoekservice
Inzender voor zoekindexgegevens
Zoekindexgegevenslezer
Eindpunt ophalen
Elke Azure AI Search-service heeft een eindpunt, een unieke URL die netwerktoegang tot de service identificeert en biedt. In een latere sectie geeft u dit eindpunt op om programmatisch verbinding te maken met uw zoekservice.
Volg deze stappen om het eindpunt te verkrijgen:
Meld u aan bij Azure Portal en selecteer uw zoekservice.
Selecteer Overzicht in het linkerdeelvenster.
Noteer het eindpunt, dat eruit zou moeten zien als
https://my-service.search.windows.net.
Gegevens voorbereiden
Voorbeeldgegevens zijn een PDF-document met 36 pagina's dat uitgebreide visuele inhoud combineert, zoals grafieken, infographics en gescande pagina's, met oorspronkelijke tekst. Azure Storage biedt de voorbeeldgegevens en fungeert als host voor het kennisarchief. Een beheerde identiteit voor een zoekservice heeft het volgende nodig:
Leestoegang tot Azure Storage om de voorbeeldgegevens op te halen.
Schrijf toegang om het kennisarchief te maken. De zoekservice maakt tijdens het verwerken van de vaardighedenset de container voor de bijgesneden afbeeldingen, met behulp van de naam die u opgeeft in een omgevingsvariabele.
Volg deze stappen om de voorbeeldgegevens in te stellen.
Download het volgende pdf-voorbeeld: sustainable-ai-pdf
Meld u aan bij het Azure-portaal.
Maak in Azure Storage een nieuwe container met de naam sustainable-ai-pdf.
Rollen toewijzen aan de beheerde identiteit van de zoekservice:
Opslagblobgegevenslezer voor het ophalen van gegevens
Storage Blob Data Contributor en Storage Table Data Contributor voor het maken van de kennisopslag.
Terwijl u de Azure Storage-pagina's hebt geopend in Azure Portal, haalt u een verbindingsreeks op voor de omgevingsvariabele.
Selecteer onderInstellingeneindpunten> het eindpunt voor resource-id. Het moet er ongeveer uitzien als in het volgende voorbeeld:
/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/rg-mydemo/providers/Microsoft.Storage/storageAccounts/mydemostorage/blobServices/default.Voeg
ResourceId=toe aan deze verbindingsreeks. Gebruik deze versie voor uw omgevingsvariabele.ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/rg-mydemo/providers/Microsoft.Storage/storageAccounts/mydemostorage/blobServices/defaultVoor verbindingen die zijn gemaakt met een door de gebruiker toegewezen beheerde identiteit, gebruikt u dezelfde verbindingsreeks en geeft u een
identityeigenschap op die is ingesteld op een vooraf gedefinieerde door de gebruiker toegewezen beheerde identiteit."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" }
Vaardigheden kiezen voor multimodale indexering
De definities van de index, gegevensbron en indexeerfunctie zijn meestal hetzelfde voor alle scenario's, maar de vaardighedenset kan een andere combinatie van vaardigheden bevatten, afhankelijk van hoe u tekst en afbeeldingen wilt extraheren, segmenteren en vectoriseren.
Kies vaardigheden voor extractie en segmentering:
- Documentextractie, tekst splitsen
- Documentindeling
Kies vaardigheden voor vectorisatie:
- GenAI-prompt, Azure OpenAI Insluiten
- Multimodale insluiting van Azure AI Vision
De meeste van deze vaardigheden zijn afhankelijk van een geïmplementeerd model of een Microsoft Foundry-resource. In de volgende tabel worden het ondersteunende model van elke vaardigheid, evenals de resource en machtigingen die toegang tot het model geven, geïdentificeerd.
| Vaardigheid | Usage | Model | Hulpbron | Permissions |
|---|---|---|---|---|
| Vaardigheid documentextractie, vaardigheid tekst splitsen | Extraheren en segmenteren op basis van een vaste grootte. Tekstextractie is gratis. Het extraheren van afbeeldingen kan worden gefactureerd. |
Geen (ingebouwd) | Azure AI Search | Zie Toegang configureren |
| Documentindeling vaardigheid | Extraheren en segmenten op basis van de documentindeling. | Document Intelligence 4.0 | Microsoft Foundry | Cognitive Services-gebruiker |
| Azure AI Vision-vaardigheid | Tekst- en afbeeldingsinhoud vectoriseren. | Azure AI Vision multimodal 4.0 | Microsoft Foundry | Cognitive Services-gebruiker |
| GenAI Prompt vaardigheid | Roep een LLM aan om tekstbeschrijvingen van afbeeldingsinhoud te genereren. | GPT-5 of GPT-4 | Microsoft Foundry | Cognitive Services-gebruiker |
| Vaardigheid voor insluiten van Azure OpenAI | Vectoriseer tekst en genereer tekstuele afbeeldingsbeschrijvingen. | Tekst-insluiten-3 of tekst-insluiten-ada-002 | Microsoft Foundry | Cognitive Services-gebruiker |
Modelgebruik is factureerbaar, met uitzondering van tekstextractie en tekstsplitsing.
Modelimplementaties kunnen zich in elke ondersteunde regio bevinden als de zoekservice verbinding maakt via het openbare eindpunt, een privéverbinding of als de factureringsverbinding sleutelloos is. Als de verbinding op basis van sleutels is, voegt u een Microsoft Foundry-resource toe vanuit dezelfde regio als Azure AI Search.
Uw omgeving instellen
Voor deze zelfstudie is voor uw lokale REST-clientverbinding met Azure AI Search een eindpunt en een API-sleutel vereist. U kunt deze waarden ophalen in Azure Portal. Zie Verbinding maken met een zoekservice voor andere verbindingsmethoden.
Voor geverifieerde verbindingen die optreden tijdens de verwerking van indexeerfuncties en vaardighedensets, gebruikt de zoekservice de roltoewijzingen die u eerder hebt gedefinieerd.
Start Visual Studio Code en maak een nieuw bestand.
Geef waarden op voor variabelen die in de aanvraag worden gebruikt:
@searchUrl = PUT-YOUR-SEARCH-SERVICE-ENDPOINT-HERE @storageConnection = PUT-YOUR-STORAGE-CONNECTION-STRING-HERE @imageProjectionContainer=sustainable-ai-pdf-images @token = PUT-YOUR-PERSONAL-IDENTITY-TOKEN HEREZorg ervoor dat de connectiestring
@storageConnectiongeen afsluitende puntkomma of aanhalingstekens bevat. Zie Uw gegevens voorbereiden voor de syntaxis van de verbindingsreeks.Geef
@imageProjectionContainereen containernaam op die uniek is in blobopslag. Azure AI Search maakt deze container tijdens het verwerken van vaardigheden.Zie Verbinding maken met Azure AI Search voor hulp bij het verkrijgen van een toegangstoken. Zie Verbinding maken met sleutels als u geen rollen kunt gebruiken.
Voeg deze variabele toe als u de vaardigheid Documentindeling of de Azure AI Vision-vaardigheid gebruikt (gebruikt modelversie 2023-04-15):
@foundryUrl = PUT-YOUR-MULTISERVICE-AZURE-AI-FOUNDRY-ENDPOINT-HERE @azureAiVisionModelVersion = 2023-04-15Voeg deze variabelen toe als u de vaardigheid GenAI-prompt en de vaardigheid Azure OpenAI Embedding gebruikt:
@chatCompletionModelUri = PUT-YOUR-DEPLOYED-MODEL-URI-HERE @chatCompletionModelKey = PUT-YOUR-MODEL-KEY-HERE @textEmbeddingModelUri = PUT-YOUR-DEPLOYED-MODEL-URI-HERE @textEmbeddingModelKey = PUT-YOUR-MODEL-KEY-HERESla het bestand op met behulp van een
.restof.httpbestandsextensie. Zie quickstart: Zoeken in volledige tekst met REST voor hulp bij de REST-client.
Dezelfde Foundry-resource kan Azure AI Vision, Document Intelligence, een voltooiingsmodel voor chats en een insluitmodel voor tekst bieden. Zorg ervoor dat de regio de modellen ondersteunt die u nodig hebt. Als een regio capaciteit heeft, moet u mogelijk een nieuwe resource maken om de benodigde modellen te implementeren.
Een pijplijn instellen
Een indexeerpijplijn bestaat uit vier onderdelen: gegevensbron, index, vaardighedenset en indexeerfunctie.
- Een gegevensbron maken
- Een index maken
- Een vaardighedenset maken voor extractie, segmentering en vectorisatie
- Een indexeerfunctie maken (en uitvoeren)
REST-bestanden downloaden
De GitHub-opslagplaats azure-search-rest-samples heeft REST-bestanden die de pijplijn maken en een query uitvoeren op de index.
Aanbeveling
Zie de GitHub-opslagplaats azure-ai-search-multimodal-sample voor een Python-voorbeeld .
Een gegevensbron maken
Een gegevensbronverbinding maken (REST) maakt een gegevensbronverbinding waarmee wordt aangegeven welke gegevens moeten worden geïndexeert.
POST {{searchUrl}}/datasources?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
{
"name":"demo-multimodal-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
}
Verzend de aanvraag. Het antwoord moet er als volgt uitzien:
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('demo-multimodal-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 2026 21:25:24 GMT
Connection: close
{
"name": "demo-multimodal-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
}
Een index maken
Index maken (REST) maakt een index voor uw zoekservice. De index is vergelijkbaar met alle vaardighedensets, met de volgende uitzonderingen:
In
vectorizersde sectie wordt gedefinieerd hoe querytekst tijdens het zoeken wordt gevectoriseerd. Deze moet dezelfde insluitingsprovider en modelfamilie gebruiken die wordt gebruikt door de vaardighedenset (Azure AI Vision multimodal of Azure OpenAI text embedding), zodat queryvectoren en geïndexeerde vectoren compatibel zijn.De
content_embeddingveldwaardedimensionsmoet exact overeenkomen met de vectorgrootte die wordt geproduceerd door het insluitmodel (bijvoorbeeld1024voor Azure AI Vision multimodal of3072voortext-embedding-3-large). nl-NL: Een niet-overeenstemming kan leiden tot indexerings- of queryfouten.Voor complexe typen moeten geneste veldnamen in de index exact overeenkomen met de namen van de verrijkingsuitvoer (inclusief hoofdletters). Azure AI Search kan geneste subvelden niet toewijzen aan verschillende namen. Gebruik
location_metadata,bounding_polygons, enpage_numbervoor velden die uitvoer van tekstsplitsing accepteren, enlocationMetadata,boundingPolygons, enpageNumbervoor velden die uitvoer van documentindeling accepteren.
Hier volgen de indexdefinities voor elke combinatie van vaardigheden.
- Documentextractie en multimodale insluiting
- Documentextractie en tekst insluiten
- Documentindeling en multimodale insluiting
- Documentindeling en tekst insluiten
In dit patroon wordt het volgende gebruikt:
Vaardigheid documentextractie en vaardigheid Tekst splitsen voor extractie en segmentering.
Azure AI Vision multimodale functie voor tekst- en afbeeldings-embeddings.
{
"name":"demo-multimodal-1-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":"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":"{{foundryUrl}}",
"authIdentity":null,
"modelVersion":"{{azureAiVisionModelVersion}}"
}
}
]
},
"semantic":{
"defaultConfiguration":"semanticconfig",
"configurations":[
{
"name":"semanticconfig",
"prioritizedFields":{
"titleField":{
"fieldName":"document_title"
},
"prioritizedContentFields":[
],
"prioritizedKeywordsFields":[
]
}
}
]
}
}
Belangrijke punten:
content_embeddingis het enige vectorveld en slaat vectoren op voor zowel tekst- als afbeeldingsinhoud. Deze moet worden geconfigureerd met de juiste dimensies voor het insluitmodel, zoals3072voor tekst-insluiten-3-groot en een vectorzoekprofiel.content_pathis het pad van elke afbeelding in het kennisarchief.location_metadataoflocationMetadatalegt begrenzingsmetagegevens van veelhoeken en paginanummers vast voor elke genormaliseerde afbeelding, waardoor nauwkeurige ruimtelijke zoek- of UI-overlays mogelijk zijn. De veldnamen variëren op basis van hoe de gegevens worden geëxtraheerd.Voor inhoudextractie op basis van de vaardigheid Tekst splitsen: locatiemetagegevens worden alleen ondersteund voor PDF-bestanden. Bovendien moet u voor de Text Split skill een Shaper-skill opnemen voor het vastleggen van in-memory locatie metadata en deze weergeven in de documentstructuur. De Shaper-functie is ook verantwoordelijk voor het toevoegen van de containernaam van de kennisopslag aan de
content_path.
Een vaardighedenset maken voor extractie, segmentering en vectorisatie
Create Skillset (REST) maakt een vaardighedenset in uw zoekservice. Een vaardighedenset definieert de bewerkingen waarmee inhoud wordt geëxtraheerd, gesegmenteerd en gevectoreerd voordat u indexeert.
Er zijn vier vaardighedensetpatronen. Elke methode demonstreert een extractie- en segmenteringsstrategie, gekoppeld aan een vectorisatiestrategie. Er zijn twee belangrijke verschillen in elk patroon: samenstelling van vaardighedenset en indexProjections. Prognoses variëren op basis van de outputs van elke embedding skill.
Alle vier de patronen bevatten de Shaper-vaardigheid. Uitvoer van de Shaper-skill creëert het genormaliseerde pad van afbeeldingen in het kennisarchief en de locatie metadata (paginanummer en begrenzingspolygonen).
- Documentextractie en multimodale insluiting
- Documentextractie en tekst insluiten
- Documentindeling en multimodale insluiting
- Documentindeling en tekst insluiten
In dit patroon wordt het volgende gebruikt:
Vaardigheid documentextractie en vaardigheid Tekst splitsen voor extractie en segmentering.
Azure AI Vision multimodale functie voor tekst- en afbeeldinginbeddingen.
Shaper-vaardigheid legt locatiemetagegevens en de containernaam vast voor het pad van het afbeeldingsbestand in de kennisopslag. Deze mogelijkheid is uniek voor PDF-inhoud en documentextractie.
{
"name":"demo-multimodal-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":"{{azureAiVisionModelVersion}}",
"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":"{{azureAiVisionModelVersion}}",
"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/*/page_number"
},
{
"name":"bounding_polygons",
"source":"/document/normalized_images/*/bounding_polygon"
}
]
}
],
"outputs":[
{
"name":"output",
"targetName":"new_normalized_images"
}
]
}
],
"cognitiveServices":{
"@odata.type":"#Microsoft.Azure.Search.AIServicesByIdentity",
"subdomainUrl":"{{foundryUrl}}",
"identity":null
},
"indexProjections":{
"selectors":[
{
"targetIndexName":"demo-multimodal-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":"demo-multimodal-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/*"
}
]
}
]
}
}
De indexeerfunctie uitvoeren
Indexeerfunctie maken maakt een indexeerfunctie voor uw zoekservice. Een indexeerfunctie maakt verbinding met de gegevensbron, laadt gegevens, voert een vaardighedenset uit en indexeert de verrijkte inhoud.
### Create and run an indexer
POST {{searchUrl}}/indexers?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
{
"name": "demo-multimodal-indexer",
"dataSourceName": "demo-multimodal-ds",
"targetIndexName": "demo-multimodal-index",
"skillsetName": "demo-multimodal-skillset",
"parameters": {
"maxFailedItems": -1,
"maxFailedItemsPerBatch": 0,
"batchSize": 1,
"configuration": {
"allowSkillsetToReadFileData": true
}
},
"fieldMappings": [
{
"sourceFieldName": "metadata_storage_name",
"targetFieldName": "document_title"
}
],
"outputFieldMappings": []
}
Queries uitvoeren
Zodra het eerste document is geladen, kunt u meteen beginnen met zoeken. Dit is een niet-opgegeven zoekquery voor volledige tekst die alle velden retourneert die zijn gemarkeerd als ophaalbaar in de index, samen met een aantal documenten.
Aanbeveling
Het content_embedding veld bevat meer dan duizend dimensies. Gebruik een select instructie om dat veld uit te sluiten van het antwoord door expliciet alle andere velden te kiezen. Pas de select-instructie aan zodat deze overeenkomt met de velden (location_metadata vs locationMetadata) in uw index. Hier volgt een voorbeeld: "select": "content_id, text_document_id, document_title, image_document_id, content_text,
### Query the index
POST {{searchUrl}}/indexes/demo-multimodal-index/docs/search?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
{
"search": "*",
"count": true
}
Verzend de aanvraag. Het antwoord moet er als volgt uitzien:
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/demo-multimodal-index/docs/search?api-version=2025-11-01-preview "
}
Er worden 100 documenten geretourneerd in het antwoord.
Query's uitvoeren op inhoud met alleen afbeeldingen
Gebruik een filter om alle niet-afbeeldingsinhoud uit te sluiten. De $filter parameter werkt alleen op velden die tijdens het maken van de index zijn gemarkeerd als filterbaar.
Voor filters kunt u ook logische operators (en, of niet) en vergelijkingsoperators (eq, ne, gt, lt, ge, le) gebruiken. Tekenreeksvergelijkingen zijn hoofdlettergevoelig. Zie Voorbeelden van eenvoudige zoekquery's voor meer informatie en voorbeelden.
POST {{searchUrl}}/indexes/demo-multimodal-index/docs/search?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
{
"search": "*",
"count": true,
"filter": "image_document_id ne null"
}
Zoekresultaten met inhoud die alleen-afbeeldingen bevatten, bevatten geen tekstinhoud, zodat u tekstvelden kunt uitsluiten.
Het content_embedding veld bevat hoogdimensionale vectoren (meestal 1.000 tot 3.000 dimensies) voor zowel paginatekst als verbaalde afbeeldingsbeschrijvingen. Sluit dit veld uit van de query.
Het content_path veld bevat het relatieve pad naar het afbeeldingsbestand in de aangewezen container voor afbeeldingsprojectie. Dit veld wordt alleen gegenereerd voor afbeeldingen die uit PDF-bestanden zijn geëxtraheerd wanneer imageAction is ingesteld op generateNormalizedImages, en kan worden toegewezen vanuit het verrijkte document van het bronveld /document/normalized_images/*/imagePath.
Voor PDF-context die is geëxtraheerd met behulp van de vaardigheid Tekst splitsen, voegt de Shaper-vaardigheid de containernaam toe aan het pad en de metagegevens van de locatie.
Query's uitvoeren op inhoud met betrekking tot "energie"
Query's uitvoeren op tekst of afbeeldingen met inhoud met betrekking tot energie, het retourneren van de inhouds-id, het bovenliggende document en de tekst (alleen ingevuld voor tekstsegmenten) en het inhoudspad waarin de afbeelding wordt opgeslagen in het kennisarchief (alleen ingevuld voor afbeeldingen).
Deze query is alleen zoeken in volledige tekst, maar u kunt het vectorveld doorzoeken op overeenkomsten.
POST {{searchUrl}}/indexes/demo-multimodal-index/docs/search?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
{
"search": "energy",
"count": true
}
Opnieuw instellen en uitvoeren
Indexen kunnen opnieuw worden ingesteld om het hoogwatermerk te wissen, waardoor een volledige heropbouw mogelijk maakt. De volgende POST-aanvragen zijn voor opnieuw instellen, gevolgd door opnieuw uitvoeren.
### Reset the indexer
POST {{searchUrl}}/indexers/demo-multimodal-indexer/reset?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
### Run the indexer
POST {{searchUrl}}/indexers/demo-multimodal-indexer/run?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
### Check indexer status
GET {{searchUrl}}/indexers/demo-multimodal-indexer/status?api-version=2025-11-01-preview HTTP/1.1
Content-Type: application/json
Authorization: Bearer {{token}}
Afbeeldingen weergeven in het kennisarchief
Houd er rekening mee dat de vaardigheden in deze handleiding een kennisarchief creëren voor afbeeldingsinhoud die is geëxtraheerd uit de PDF. Nadat de indexer is uitgevoerd, moet de container sustainable-ai-pdf-images ongeveer 23 afbeeldingen bevatten.
U kunt deze afbeeldingen niet retourneren in een zoekquery. U kunt echter toepassingscode schrijven die de Azure Storage-API's aanroept om de afbeeldingen op te halen als u ze nodig hebt voor de gebruikerservaring. Het content_path veld heeft het pad naar elke afbeelding.
De afbeeldingen weergeven in de opslagbrowser:
Meld u aan bij Azure Portal en navigeer naar uw Opslagaccount.
In Storage Browser, vouw de container 'sustainable-ai-pdf-images' uit.
Selecteer een afbeelding.
Selecteer In het menu uiterst rechts (...) de optie Weergave/Bewerken.
De hulpbronnen opschonen
Wanneer u in uw eigen abonnement werkt, is het een goed idee om een project te voltooien door de resources te verwijderen die u niet meer nodig hebt. Resources die nog operationeel zijn, kunnen u geld kosten.
Selecteer in Azure Portal alle resources of resourcegroepen in het linkerdeelvenster om resources te zoeken en te beheren. U kunt resources afzonderlijk verwijderen of de resourcegroep verwijderen om alle resources tegelijk te verwijderen.