Oktatóanyag: Többmodális tartalom kinyerése, darabolása és beágyazása a Dokumentumelrendezési szakértelemmel

Note

Azure AI Keresés a Azure portálon, REST API-kon és Azure SDK-k keresztül érhető el. Emellett a Foundry IQ-t is támogatja, amely a vállalati tartalmakat újrafelhasználható, engedélytudatos tudásbázisokká alakítja át az Microsoft Foundry portálon található ügynökök számára.

Ebben az oktatóanyagban egy multimodális indexelő folyamatot fog létrehozni, amely az alábbi feladatokat hajtja végre:

  • Szöveg és képek kinyerése és felbontása
  • Szöveg és képek vektorizálása hasonlósági kereséshez
  • Körülvágott képek küldése egy tudástárba az alkalmazás általi lekéréshez

Ez az oktatóanyag több készségkészletet mutat be egymás mellett, hogy bemutassa a multimodális tartalmak kinyerésének, darabolásának és vektorizálásának különböző módjait. A dokumentum kinyerési ésdokumentumelrendezési készségét használja a tartalom kinyerésére.

Jótanács

Új képességkészletek esetén a Azure Tartalomértés képesség ajánlott. Ez a képesség szemantikai adattömböket, mesterséges intelligenciával létrehozott képleírásokat és továbbfejlesztett dokumentumbe ágyazott táblázatkiemelést biztosít egyetlen képességben. A kezdéshez tekintse meg a(z) tartalom darabolása és vektorizálása az Azure Content Understanding-készséggel.

Előfeltételek

A multimodális indexelés olyan készségekkel valósul meg, amelyek AI-modelleket és API-kat hívnak meg egy indexelő folyamatban. A modell előfeltételei az egyes feladatokhoz választott készségektől függően változnak.

Jótanács

Ha az ingyenes szinten szeretné elvégezni ezt az oktatóanyagot, használjon kisebb dokumentumot kevesebb képpel. Ez az oktatóanyag csak Öntödei modelleket használ, de egyéni képességeket is létrehozhat más modellek használatához.

Hozzáférés konfigurálása

Mielőtt hozzákezdene, győződjön meg arról, hogy rendelkezik hozzáféréssel a tartalomhoz és a műveletekhez az Azure AI Keresésben. Ez a rövid útmutató a Microsoft Entra-azonosítót használja hitelesítéshez és szerepköralapú hozzáféréshez az engedélyezéshez. Szerepkörök hozzárendeléséhez tulajdonosnak vagy felhasználói hozzáférés-rendszergazdának kell lennie. Ha a szerepkörök nem megvalósíthatók, használja inkább a kulcsalapú hitelesítést .

Az ajánlott szerepköralapú hozzáférés konfigurálása:

  1. Engedélyezze a szerepköralapú hozzáférést a keresési szolgáltatáshoz.

  2. Rendelje hozzá a következő szerepköröket a felhasználói fiókjához.

    • Keresési szolgáltatás közreműködője

    • Keresési index adatszolgáltatója

    • Keresési index adatolvasó

Végpont lekérése

Minden Azure AI Keresés-szolgáltatás rendelkezik egy végponttal, amely egy egyedi URL-cím, amely azonosítja és hálózati hozzáférést biztosít a szolgáltatáshoz. Egy későbbi szakaszban ezt a végpontot adja meg, hogy programozott módon csatlakozzon a keresési szolgáltatáshoz.

A végpont lekérése:

  1. Nyissa meg a keresési szolgáltatást az Azure Portalon.

  2. A bal oldali panelen válassza az Áttekintés lehetőséget.

  3. Jegyezze fel a végpontot, amelynek így kell kinéznie https://my-service.search.windows.net.

Adatok előkészítése

A mintaadatok egy 36 oldalas PDF-dokumentum, amely gazdag vizuális tartalmakat, például diagramokat, infografikákat és beolvasott oldalakat egyesít az eredeti szöveggel. Az Azure Storage biztosítja a mintaadatokat, és üzemelteti a tudástárat. A keresési szolgáltatás által felügyelt identitásnak a következőre van szüksége:

  • Olvassa el az Azure Storage-hoz való hozzáférést a mintaadatok lekéréséhez.

  • Írási jogosultság a tudásbázis létrehozásához. A keresési szolgáltatás létrehoz egy tárolót a körülvágott képekhez a képességkészlet feldolgozása során, egy környezeti változóban megadott név használatával.

Kövesse az alábbi lépéseket a mintaadatok beállításához.

  1. Töltse le a következő PDF-mintafájlt: sustainable-ai-pdf

  2. Jelentkezzen be a Azure portalra.

  3. Az Azure Storage-ban hozzon létre egy sustainable-ai-pdf nevű új tárolót.

  4. Töltse fel a mintaadatfájlt.

  5. Szerepkörök hozzárendelése a keresési szolgáltatás által felügyelt identitáshoz:

    • Storage Blob Data Reader az adatok lekéréséhez

    • Storage Blob Data Contributor és Storage Table Data Contributor a tudásbázis létrehozásához.

Amíg az Azure Storage oldalai meg vannak nyitva az Azure portálon, szerezze be a környezeti változó kapcsolati láncát.

  1. A Beállítások>végpontjai területen válassza ki az erőforrás-azonosító végpontját. A következő példához hasonlóan kell kinéznie: /subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/rg-mydemo/providers/Microsoft.Storage/storageAccounts/mydemostorage/blobServices/default.

  2. A kapcsolati sztring előtagja ResourceId= . Használja ezt a verziót a környezeti változóhoz.

    ResourceId=/subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/rg-mydemo/providers/Microsoft.Storage/storageAccounts/mydemostorage/blobServices/default

  3. Felhasználó által hozzárendelt felügyelt identitással létesített kapcsolatok esetén használja ugyanazt a kapcsolati sztringet, és adjon meg egy identity előre definiált, felhasználó által hozzárendelt felügyelt identitásra beállított tulajdonságot.

    "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" 
    }
    

Többmodális indexeléshez szükséges készségek kiválasztása

Az indexelési, adatforrás- és indexelődefiníciók többnyire minden forgatókönyv esetében azonosak, de a képességkészlet más képességkombinációt is tartalmazhat attól függően, hogy miként szeretné kinyerni, darabolni és vektorizálni a szöveget és a képeket.

  1. Válassza ki a kinyerési és adattömb-készítési képességeket:

    • Dokumentum kinyerése, szöveg felosztása
    • Dokumentumelrendezés
  2. Vektorizálási képességek kiválasztása:

    • GenAI Prompt, Azure OpenAI-beágyazás
    • Azure AI Képfelismerés multimodális beágyazás

A legtöbb ilyen képesség egy üzembe helyezett modelltől vagy egy Microsoft Foundry-erőforrástól függ. Az alábbi táblázat az egyes képességeket alátámasztó modellt, valamint a modellhozzáférést biztosító erőforrást és engedélyeket azonosítja.

Készség Usage Modell Resource Permissions
Dokumentum-kinyerési képesség, szövegfelosztási képesség Kivonás és felosztás rögzített méret alapján.
A szöveg kinyerése ingyenes.
A kép kinyerése számlázható.
Nincs (beépített) Azure AI Keresés Lásd: Hozzáférés konfigurálása
Dokumentum Elrendezés képesség Kinyerés és felosztás a dokumentum elrendezése alapján. Dokumentumintelligencia 4.0 Microsoft Foundry Kognitív szolgáltatások felhasználója
Azure AI Képfelismerés-készség (előzetes verzió) Szöveg- és képtartalom vektorizálása. Azure AI Képfelismerés 4.0 multimodális Microsoft Foundry Kognitív szolgáltatások felhasználója
GenAI prompt skill Hívjon meg egy LLM-et a képtartalom szöveges leírásának létrehozásához. GPT-5 vagy GPT-4 Microsoft Foundry Kognitív szolgáltatások felhasználója
Azure OpenAI beágyazási készség Szöveg vektorizálása és generált képleírások szöveges formában. Text-embedding-3 vagy text-embedding-ada-002 Microsoft Foundry Kognitív szolgáltatások felhasználója

A modellhasználat számlázható, kivéve a szöveg kinyerését és a szövegfelosztást.

A modelltelepítések bármely támogatott régióban lehetnek, ha a keresési szolgáltatás a nyilvános végponton, egy privát kapcsolaton keresztül csatlakozik, vagy ha a számlázási kapcsolat kulcs nélküli. Ellenkező esetben, ha a kapcsolat kulcsalapú, csatoljon egy Microsoft Foundry-erőforrást az Azure AI Keresésvel azonos régióból.

Saját környezet beállítása

Ebben az oktatóanyagban az Azure AI Keresés helyi REST-ügyfélkapcsolatához végpontra és API-kulcsra van szükség. Ezeket az értékeket az Azure Portalon szerezheti be. További kapcsolati módszerekért lásd: Csatlakozás keresési szolgáltatáshoz.

Az indexelő és a készségkészlet feldolgozása során előforduló hitelesített kapcsolatok esetében a keresési szolgáltatás a korábban definiált szerepkör-hozzárendeléseket használja.

  1. Indítsa el a Visual Studio Code-ot, és hozzon létre egy új fájlt.

  2. Adja meg a kérelemben használt változók értékeit:

     @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 HERE
    

    A @storageConnection esetén győződjön meg arról, hogy a kapcsolati sztring nem tartalmaz pontosvesszőt vagy idézőjelet. Lásd Az adatok előkészítése a kapcsolati sztring szintaxisához.

    Adjon meg egy egyedi tárolónevet a blob-tárolóban a @imageProjectionContainer számára. Az Azure AI Keresés ezt a tárolót a készségek feldolgozása során hozza létre.

    A hozzáférési jogkivonat beszerzéséhez lásd: Csatlakozás az Azure AI Keresés szolgáltatáshoz. Ha nem tudja használni a szerepköröket, olvassa el a Csatlakozás kulcsokkal című témakört.

  3. Adja hozzá ezt a változót, ha a Dokumentumelrendezési vagy az Azure AI Képfelismerés-készséget használja (a modell 2023-04-15-ös verzióját használja):

    @foundryUrl = PUT-YOUR-MULTISERVICE-AZURE-AI-FOUNDRY-ENDPOINT-HERE
    @azureAiVisionModelVersion = 2023-04-15
    
  4. Adja hozzá ezeket a változókat, ha a GenAI Prompt és az Azure OpenAI beágyazási képességet használja:

     @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-HERE
    
  5. Mentse a fájlt a .rest vagy a .http fájlkiterjesztés használatával. A REST-ügyféllel kapcsolatos segítségért tekintse meg a következő rövid útmutatót: Teljes szöveges keresés REST használatával.

Ugyanez az Foundry-erőforrás az Azure AI Képfelismeréset, a Dokumentumintelligencia-t, a csevegés befejezésének modelljét és egy szövegbeágyazási modellt is biztosít. Csak győződjön meg arról, hogy a régió támogatja a szükséges modelleket. Ha egy régió kapacitással rendelkezik, előfordulhat, hogy létre kell hoznia egy új erőforrást a szükséges modellek üzembe helyezéséhez.

Csővezeték beállítása

Az indexelő folyamat négy összetevőből áll: adatforrásból, indexből, képességkészletből és indexelőből.

REST-fájlok letöltése

Az azure-search-rest-samples GitHub-adattár tartalmaz .REST fájlokat, amelyek csővezetéket hoznak létre, és lekérdezik az indexet.

Jótanács

Egy Python-példához tekintse meg az azure-ai-search-multimodal-sample GitHub-adattárat .

Adatforrás létrehozása

Az Adatforrás létrehozása (REST) létrehoz egy adatforrás-kapcsolatot, amely meghatározza az indexelendő adatokat.

POST {{searchUrl}}/datasources?api-version=2026-08-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
}

Küldje el a kérést. A válasznak így kell kinéznie:

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=2026-08-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
}

Index létrehozása

Az Index létrehozása (REST) létrehoz egy indexet a keresési szolgáltatásban. Az index az összes készségcsoportban hasonló, az alábbi kivételekkel:

  • A vectorizers szakasz azt határozza meg, hogy a lekérdezés szövegének vektorizálása hogyan történik a keresési időpontban. Ugyanazt a beágyazási szolgáltatót és modellcsaládot kell használnia, amelyet a képességkészlet (Azure AI Képfelismerés multimodális vagy Azure OpenAI szövegbeágyazása) használ, hogy a lekérdezésvektorok és az indexelt vektorok kompatibilisek legyenek.

  • A content_embedding mezőértéknek dimensions pontosan meg kell egyeznie a beágyazási modell által előállított vektormérettel (például 1024 az Azure AI Képfelismerés multimodális vagy 3072 a text-embedding-3-large). Az eltérés indexelési vagy lekérdezési hibákat okozhat.

  • Összetett típusok esetén az index beágyazott mezőneveinek pontosan meg kell egyeznie a bővítési kimenet neveivel (beleértve a burkolatot is). Az Azure AI Keresés nem tudja leképezni a beágyazott almezőket különböző nevekre. A szövegfelosztási kimeneteket location_metadatabounding_polygonspage_numberelfogadó mezők, valamint a Dokumentumelrendezés kimeneteket elfogadó mezők használata.locationMetadataboundingPolygonspageNumber

Az egyes képességkombinációk indexdefiníciói az alábbiak.

Ez a minta a következőket használja:

{
   "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":[
                  
               ]
            }
         }
      ]
   }
}

Összefoglalás:

  • content_embedding az egyetlen vektormező, amely a szöveg- és képtartalmak vektorait tárolja. A beágyazási modellt megfelelő dimenziókkal kell konfigurálni, például 3072 a text-embedding-3-large modellhez és egy vektorkeresési profillal.

  • content_path a tudástárban lévő összes kép elérési útja.

  • location_metadata vagy locationMetadata határoló sokszöget és oldalszám metaadatokat rögzít minden normalizált képhez, lehetővé téve a pontos térbeli keresést vagy felhasználói felületi átfedéseket. A mezőnevek az információk kinyerésétől függően változnak.

  • A Szöveg felosztása képességen alapuló tartalomkinyeréshez: a hely metaadatai csak PDF-fájlok esetén támogatottak. A Szöveg felosztása képességhez továbbá tartalmaznia kell egy Shaper-készséget a memóriabeli hely metaadatainak rögzítéséhez és a dokumentumfában való ábrázolásához. A Shaper-képesség a tudástár tárolójának nevének hozzáadásáért is felelős a content_path.

Képességkészlet létrehozása kinyeréshez, adattömbhöz és vektorizáláshoz

A Skillset (REST) létrehozása egy készségkészletet hoz létre a keresési szolgáltatásban. A képességkészlet határozza meg azokat a műveleteket, amelyek az indexelés előtt kinyerik, darabolják és vektorizálják a tartalmat.

Négy készségkészlet-minta létezik. Mindegyik egy vektorizációs stratégiával párosított extrakciós és adattömb-stratégiát mutat be. Két fő különbség van az egyes mintákban: a készségkészlet összetétele és indexProjections. Az előrejelzések az egyes beágyazási képességek kimenetétől függően változnak.

Mind a négy minta tartalmazza a Shaper készséget. A Shaper-képesség kimenete létrehozza a képek normalizált elérési útját a tudástárban és a hely metaadataiban (oldalszám és határoló sokszögek).

Ez a minta a következőket használja:

{
   "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/*"
               }
            ]
         }
      ]
   }
}

Az indexelő futtatása

Az Indexelő létrehozása létrehoz egy indexelőt a keresési szolgáltatásban. Az indexelő csatlakozik az adatforráshoz, betölti az adatokat, futtat egy készségkészletet, és indexeli a bővített tartalmat.

### Create and run an indexer
POST {{searchUrl}}/indexers?api-version=2026-08-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": []
}

Lekérdezések futtatása

Az első dokumentum betöltése után azonnal megkezdheti a keresést. Ez egy meghatározatlan teljes szöveges keresési lekérdezés, amely az indexben lekérdezhetőként megjelölt mezőket és a dokumentumok számát adja vissza.

Jótanács

A content_embedding mező több mint ezer dimenziót tartalmaz. select Az utasítással kizárhatja ezt a mezőt a válaszból az összes többi mező explicit kiválasztásával. Módosítsa a kijelölési utasítást úgy, hogy az megfeleljen az index mezőinek (location_metadata és locationMetadata)-nak. Íme egy példa: "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=2026-08-01-preview   HTTP/1.1
  Content-Type: application/json
  Authorization: Bearer {{token}}
  
  {
    "search": "*",
    "count": true
  }

Küldje el a kérést. A válasznak így kell kinéznie:

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=2026-08-01-preview "
}

A válasz 100 dokumentumot ad vissza.

Csak képtartalmak lekérdezése

Használjon szűrőt az összes nem képtartalom kizárásához. A $filter paraméter csak az index létrehozásakor szűrhetőként megjelölt mezőkön működik.

Szűrők esetén logikai operátorokat (és vagy nem) és összehasonlító operátorokat (eq, ne, gt, lt, ge, le) is használhat. A sztring-összehasonlítások megkülönböztetik a kis- és nagybetűket. További információkért és példákért lásd az egyszerű keresési lekérdezések példáit.

POST {{searchUrl}}/indexes/demo-multimodal-index/docs/search?api-version=2026-08-01-preview   HTTP/1.1
  Content-Type: application/json
  Authorization: Bearer {{token}}
  
  {
    "search": "*",
    "count": true,
    "filter": "image_document_id ne null"
  }

A csak képi tartalommal rendelkező keresési eredmények nem tartalmaznak szöveges tartalmat, így kizárhatja a szövegmezőket.

A content_embedding mező nagy méretű vektorokat (általában 1000–3000 dimenziót) tartalmaz az oldalszöveghez és a verbális képleírásokhoz. Zárja ki ezt a mezőt a lekérdezésből.

A content_path mező a képfájl relatív elérési útját tartalmazza a kijelölt képvetítési tárolóban. Ez a mező csak PDF-fájlokból kinyert képekhez kerül létrehozásra, ha imageAction be van állítva generateNormalizedImages, és amely a forrásmező /document/normalized_images/*/imagePath-ből származó bővített dokumentumból leképezhető.

A Szöveg felosztása képesség használatával kinyert PDF-környezet esetében az Shaper-képesség hozzáadja a tároló nevét az elérési úthoz és a hely metaadataihoz.

Lekérdezhet szöveget vagy képeket, amelyek energia témájú tartalmakkal rendelkeznek, és visszaadja a tartalomazonosítót, a szülődokumentumot és a szöveget (csak szövegrészek esetén töltjük ki), valamint azt a tartalom útvonalát, amelyre a képet a tudásbázisban mentjük (csak képeknél van kitöltve).

Ez a lekérdezés csak teljes szöveges keresés, de a vektormezőt is lekérdezheti a hasonlóság kereséséhez.

POST {{searchUrl}}/indexes/demo-multimodal-index/docs/search?api-version=2026-08-01-preview   HTTP/1.1
  Content-Type: application/json
  Authorization: Bearer {{token}}
  

  {
    "search": "energy",
    "count": true
  }

Alaphelyzetbe állítás és ismételt futtatás

Az indexek alaphelyzetbe állíthatók a fennálló állapot törléséhez, ami lehetővé teszi a teljes újraépítést. A következő POST-kérések visszaállításra, majd újrafuttatásra szolgálnak.

### Reset the indexer
POST {{searchUrl}}/indexers/demo-multimodal-indexer/reset?api-version=2026-08-01-preview   HTTP/1.1
  Content-Type: application/json
  Authorization: Bearer {{token}}
### Run the indexer
POST {{searchUrl}}/indexers/demo-multimodal-indexer/run?api-version=2026-08-01-preview   HTTP/1.1
  Content-Type: application/json
  Authorization: Bearer {{token}}
### Check indexer status 
GET {{searchUrl}}/indexers/demo-multimodal-indexer/status?api-version=2026-08-01-preview   HTTP/1.1
  Content-Type: application/json
  Authorization: Bearer {{token}}

Képek megtekintése a tudástárban

Ne feledje, hogy az oktatóanyagban szereplő képességkészlet egy tudástárat hoz létre a PDF-ből kinyert képtartalmakhoz. Az indexelő futtatása után a sustainable-ai-pdf-images tárolónak körülbelül 23 képből kell lennie.

Ezeket a képeket nem lehet visszaadni keresési lekérdezésben. Írhat azonban olyan alkalmazáskódot, amely meghívja az Azure Storage API-kat a rendszerképek lekéréséhez, ha szüksége van rájuk a felhasználói élményhez. A content_path mező az egyes képek elérési útját mutatja.

A rendszerképek megtekintése a Storage Browserben:

  1. Jelentkezzen be az Azure Portalra, és lépjen a Storage-fiókjához.

  2. A Storage Browserben bontsa ki a sustainable-ai-pdf-images tárolót.

  3. Válasszon ki egy képet.

  4. A jobb szélső menüben (...) válassza a Nézet/Szerkesztés lehetőséget.

Képernyőkép a PDF-dokumentumból kinyert képről.

Erőforrások tisztítása

Ha a saját előfizetésében dolgozik, érdemes befejezni egy projektet a már nem szükséges erőforrások eltávolításával. A meghagyott működő erőforrások pénzbe kerülhetnek.

Az Azure Portalon válassza az Összes erőforrás vagy erőforráscsoport lehetőséget a bal oldali panelen az erőforrások megkereséséhez és kezeléséhez. Az erőforrásokat egyenként törölheti, vagy törölheti az erőforráscsoportot az összes erőforrás egyidejű eltávolításához.