Öğretici: Çok modlu içeriği ayıkla, bölümle ve göm

Bu öğreticide, şu görevleri gerçekleştiren çok modüllü bir dizin oluşturucu işlem hattı oluşturacaksınız:

  • Metin ve resimleri çıkart ve parçala
  • Benzerlik araması için metin ve resimleri vektörleştirme
  • Kırpılan görüntüleri uygulamanız tarafından alınması için bilgi deposuna gönderme

Bu öğreticide, çok modüllü içeriği ayıklamanın, öbeklemenin ve vektörleştirmenin farklı yollarını göstermek için birden çok beceri kümesi yan yana gösterilir.

Önkoşullar

Çok modüllü dizin oluşturma, dizin oluşturucu işlem hattında yapay zeka modellerini ve API'leri çağıran beceriler aracılığıyla uygulanır. Model önkoşulları , her görev için seçilen becerilere bağlı olarak değişir.

Tavsiye

Bu öğreticiyi ücretsiz katmanda tamamlamak için daha az görüntü içeren daha küçük bir belge kullanın. Bu öğreticide yalnızca Foundry modelleri kullanılır, ancak diğer modelleri kullanmak için özel beceriler oluşturabilirsiniz .

Erişimi yapılandırma

Başlamadan önce Azure Yapay Zeka Arama'teki içeriğe ve işlemlere erişim izinlerinizin olduğundan emin olun. Bu hızlı başlangıçta kimlik doğrulaması için Microsoft Entra Id ve yetkilendirme için rol tabanlı erişim kullanılır. Rolleri atamak için Sahip veya Kullanıcı Erişimi Yöneticisi olmanız gerekir. Roller uygun değilse bunun yerine anahtar tabanlı kimlik doğrulamayı kullanın.

Önerilen rol tabanlı erişimi yapılandırmak için:

  1. Arama hizmetiniz için rol tabanlı erişimi etkinleştirin.

  2. Kullanıcı hesabınıza aşağıdaki rolleri atayın .

    • Arama Hizmeti Katkıda Bulunanı

    • Arama Dizini Veri Katkısı Sağlayan

    • Arama Dizini Veri Okuyucusu

Uç noktayı alma

Her Azure Yapay Zeka Arama hizmetinin, hizmeti tanımlayan ve hizmete ağ erişimi sağlayan benzersiz bir URL olan bir uç noktası vardır. Sonraki bir bölümde, arama hizmetinize program aracılığıyla bağlanmak için bu uç noktayı belirtirsiniz.

Uç noktayı almak için:

  1. Azure portalında arama hizmetinize gidin.

  2. Sol bölmeden Genel Bakış'ı seçin.

  3. Uç noktayı not alın, bu şöyle görünmelidir: https://my-service.search.windows.net.

Verileri hazırlama

Örnek veriler, grafikler, bilgi grafikleri ve taranmış sayfalar gibi zengin görsel içerikleri özgün metinle birleştiren 36 sayfalık bir PDF belgesidir. Azure Depolama örnek verileri sağlar ve bilgi depolarını barındırıyor. Yönetilen arama hizmeti kimliğinin ihtiyaçları:

  • Örnek verileri almak için Azure Depolama'ya erişimi okuyun.

  • Bilgi deposu oluşturmak için yazma erişimi. Arama hizmeti, beceri kümesi işleme sırasında bir ortam değişkeninde sağladığınız adı kullanarak kırpılan görüntüler için kapsayıcı oluşturur.

Örnek verileri ayarlamak için bu adımları izleyin.

  1. Aşağıdaki örnek PDF'yi indirin: sürdürülebilir-ai-pdf

  2. Azure portalınaoturum açın.

  3. Azure Depolama'da sustainable-ai-pdf adlı yeni bir kapsayıcı oluşturun.

  4. Örnek veri dosyasını karşıya yükleyin.

  5. Arama hizmetinin yönetilen kimliğine roller atayın:

    • Veri geri almak için Depolama Blobu Veri Okuyucusu

    • Bilgi deposu oluşturmak için Depolama Blob Verileri Katkıda Bulunanı ve Depolama Tablosu Veri Katkıda Bulunanı.

Azure portalında Azure Depolama sayfaları açıkken ortam değişkeni için bir bağlantı dizesi alın.

  1. Ayarlar>Uç Noktaları'nın altında Kaynak Kimliği için uç noktayı seçin. Aşağıdaki örneğe benzer görünmelidir: /subscriptions/00000000-0000-0000-0000-00000000/resourceGroups/rg-mydemo/providers/Microsoft.Storage/storageAccounts/mydemostorage/blobServices/default.

  2. Bu bağlantı dizesine ön ek ResourceId= ekleyin. Ortam değişkeniniz için bu sürümü kullanın.

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

  3. Kullanıcı tarafından atanan yönetilen kimlik kullanılarak yapılan bağlantılar için aynı bağlantı dizesini kullanın ve önceden tanımlanmış kullanıcı tarafından atanan yönetilen kimliğe ayarlanmış bir özellik sağlayın identity .

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

Çok modüllü dizin oluşturma becerileri seçme

Dizin, veri kaynağı ve dizin oluşturucu tanımları çoğunlukla tüm senaryolar için aynıdır, ancak beceri kümesi, metin ve görüntüleri ayıklama, öbekleme ve vektörleştirme yönteminize bağlı olarak farklı bir beceri bileşimi içerebilir.

  1. Ayıklama ve öbekleme için becerileri seçin:

    • Belge Ayıklama, Metin Bölme
    • Belge Düzeni
  2. Vektörleştirme için becerileri seçin:

    • GenAI İstemi, Azure OpenAI Ekleme
    • Azure AI Görme Çok Modlu Yerleştirme

Bu becerilerin çoğu dağıtılan modele veya Microsoft Foundry kaynağına bağlıdır. Aşağıdaki tabloda, her beceriyi destekleyen modelin yanı sıra model erişimi sağlayan kaynak ve izinler tanımlanmıştır.

Beceri Usage Model Kaynak Permissions
Belge Ayıklama becerisi, Metin Bölme becerisi Belirli bir boyuta göre ayıkla ve parçalara ayır.
Metin ayıklama ücretsizdir.
Görüntü ayıklama faturalanabilir.
Hiçbiri (yerleşik) Azure Yapay Zeka Arama Bkz . Erişimi yapılandırma
Belge Düzeni becerisi Belge düzenine göre ayıkla ve bölümlere ayır. Belge Yönetim Bilgileri 4.0 Microsoft Foundry Bilişsel Hizmetler Kullanıcısı
Azure Yapay Zeka Görüntü becerisi Metin ve görüntü içeriğini vektörleştirin. Azure Yapay Zeka Görüntü multimodal 4.0 Microsoft Foundry Bilişsel Hizmetler Kullanıcısı
GenAI Prompt yeteneği Resim içeriğinin metin açıklamalarını oluşturmak için bir LLM çağırın. GPT-5 veya GPT-4 Microsoft Foundry Bilişsel Hizmetler Kullanıcısı
Azure OpenAI ekleme becerisi Metni ve oluşturulan metin görüntüsü açıklamalarını vektörleştirin. Metin gömme-3 veya metin gömme-ada-002 Microsoft Foundry Bilişsel Hizmetler Kullanıcısı

Metin ayıklama ve metin bölme dışında model kullanımı faturalanabilir.

Arama hizmeti genel uç nokta, özel bağlantı üzerinden bağlanırsa veya faturalama bağlantısı anahtarsızsa model dağıtımları desteklenen herhangi bir bölgede olabilir. Aksi takdirde, bağlantı anahtar tabanlıysa Azure Yapay Zeka Arama ile aynı bölgeden bir Microsoft Foundry kaynağı ekleyin .

Ortamınızı ayarlama

Bu eğitimde, Azure Yapay Zeka Arama'e yönelik yerel REST istemci bağlantınız için bir uç nokta ve bir API anahtarı gerekmektedir. Bu değerleri Azure portalından alabilirsiniz. Diğer bağlantı yöntemleri için bkz. Arama hizmetine bağlanma.

Dizin oluşturucu ve beceri kümesi işleme sırasında gerçekleşen kimliği doğrulanmış bağlantılar için, arama hizmeti daha önce tanımladığınız rol atamalarını kullanır.

  1. Visual Studio Code'u başlatın ve yeni bir dosya oluşturun.

  2. İstekte kullanılan değişkenler için değerler sağlayın:

     @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
    

    için @storageConnection, bağlantı dizenizin sonunda noktalı virgül veya tırnak işareti olmadığından emin olun. Verilerinizi Hazırlama bölümüne, bağlantı dizesi söz dizimi için bakın.

    @imageProjectionContainer için, blob depolamada benzersiz bir kapsayıcı adı sağlayın. Azure Yapay Zeka Arama, beceri işleme sırasında bu kapsayıcıyı oluşturur.

    Erişim belirteci alma hakkında yardım için bkz. Azure Yapay Zeka Arama'e bağlanma. Rolleri kullanamıyorsanız bkz. Anahtarlarla bağlanma.

  3. Belge Düzeni becerisini veya Azure Yapay Zeka Görüntü becerisini kullanıyorsanız (2023-04-15 model sürümünü kullanır) bu değişkeni ekleyin:

    @foundryUrl = PUT-YOUR-MULTISERVICE-AZURE-AI-FOUNDRY-ENDPOINT-HERE
    @azureAiVisionModelVersion = 2023-04-15
    
  4. GenAI İstemi becerisini ve Azure OpenAI Ekleme becerisini kullanıyorsanız şu değişkenleri ekleyin:

     @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. Veya .rest dosya uzantısını kullanarak .http dosyayı kaydedin. REST istemcisiyle ilgili yardım için bkz . Hızlı Başlangıç: REST kullanarak tam metin arama.

Aynı Foundry kaynağı Azure Yapay Zeka Görüntü, Belge Zekası, sohbet tamamlama modeli ve metin ekleme modeli sunabilir. Bölgenin ihtiyacınız olan modelleri desteklediğinden emin olmanız yeterlidir. Bir bölge kapasitedeyse, gerekli modelleri dağıtmak için yeni bir kaynak oluşturmanız gerekebilir.

İşlem hattı ayarlama

Dizin oluşturucu işlem hattı dört bileşenden oluşur: veri kaynağı, dizin, beceri kümesi ve dizin oluşturucu.

REST dosyalarını indirme

azure-search-rest-samples GitHub deposunda, işlem hattını oluşturan ve dizini sorgulayan REST dosyaları bulunur.

Tavsiye

Python örneği için bkz. azure-ai-search-multimodal-sample GitHub deposu.

Veri kaynağı oluşturun

Veri Kaynağı Oluştur (REST), hangi verilerin dizine alınacağını belirten bir veri kaynağı bağlantısı oluşturur.

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
}

İsteği gönderin. Yanıt şöyle görünmelidir:

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
}

Dizin oluşturma

Dizin Oluştur (REST), arama hizmetinizde bir dizin oluşturur. Dizin, aşağıdaki özel durumlar dışında tüm beceri kümelerinde benzerdir:

  • bölümünde vectorizers , arama zamanında sorgu metninin nasıl vektörleştirildiği tanımlanmıştır. Sorgu vektörlerinin ve dizinlenmiş vektörlerin uyumlu olması için beceri kümesi tarafından kullanılan aynı ekleme sağlayıcısını ve model ailesini (Azure Yapay Zeka Görüntü çok modüllü veya Azure OpenAI metin ekleme) kullanması gerekir.

  • Alan content_embeddingdimensions değeri, gömme modeli tarafından üretilen vektör boyutuyla tam olarak eşleşmelidir (örneğin, Azure Yapay Zeka Görüntü multimodal için 1024 veya 3072 için text-embedding-3-large). Uyuşmazlık dizin oluşturma veya sorgu hatalarına neden olabilir.

  • Karmaşık türler için, dizindeki iç içe alan adları zenginleştirme çıktısının adlarıyla (büyük/küçük harf dahil) tam olarak eşleşmelidir. Azure Yapay Zeka Arama iç içe alt alanları farklı adlarla eşleyemez. location_metadata, bounding_polygons ve page_number'yi Metin Bölme çıktılarını kabul eden alanlar için, locationMetadata, boundingPolygons ve pageNumber'yi Belge Düzeni çıktılarını kabul eden alanlar için kullanın.

Her beceri bileşimi için dizin tanımları aşağıdadır.

Bu desen şunu kullanır:

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

Önemli noktalar:

  • content_embedding tek vektör alanıdır ve hem metin hem de görüntü içeriği için vektörleri depolar. Ekleme modeli için metin ekleme-3-büyük gibi 3072 uygun boyutlarla ve bir vektör arama profiliyle yapılandırılmalıdır.

  • content_path , bilgi deposundaki her görüntünün yoludur.

  • location_metadata veya locationMetadata, normalleştirilmiş her görüntü için sınırlayıcı çokgen ve sayfa numarası meta verilerini yakalar ve hassas uzamsal arama veya kullanıcı arayüzü katmanlarını etkinleştirir. Alan adları, bilgilerin nasıl ayıklandığına bağlı olarak değişir.

  • Metin Bölme becerisini temel alan içerik ayıklama için: konum meta verileri yalnızca PDF dosyaları için desteklenir. Ayrıca, Metin Bölme becerisi için bellek içi konum meta verilerini yakalamak ve belge ağacında göstermek için bir Şekillendirici becerisi eklemeniz gerekir. Shaper becerisi, content_path öğesine bilgi deposu kapsayıcı adını eklemekle de sorumludur.

Ayıklama, öbekleme ve vektörleştirme için beceri kümesi oluşturma

Beceri Kümesi Oluştur (REST), arama hizmetinizde bir beceri kümesi oluşturur. Beceri kümesi, dizin oluşturmadan önce içeriği ayıklayan, öbekleyen ve vektörleştiren işlemleri tanımlar.

Dört beceri kümesi deseni vardır. Her biri bir vektörleştirme stratejisiyle eşleştirilmiş bir ayıklama ve öbekleme stratejisi gösterir. Her desende iki önemli fark vardır: beceri seti bileşimi ve indexProjections. Projeksiyonlar, her ekleme becerisinin çıkışlarına göre değişiklik gösterir.

Dört desen de Shaper becerisini içerir. Shaper becerisinden elde edilen çıkış, bilgi deposunda ve konum meta verilerinde (sayfa numarası ve sınırlayıcı çokgenler) görüntülerin normalleştirilmiş yolunu oluşturur.

Bu desen şunu kullanır:

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

Dizin oluşturucuyu çalıştırma

Dizin Oluşturucu Oluştur, arama hizmetinizde bir dizin oluşturucu oluşturur. Dizin oluşturucu veri kaynağına bağlanır, verileri yükler, beceri kümesi çalıştırır ve zenginleştirilmiş içeriği dizinler.

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

Sorgu çalıştırma

İlk belge yüklenir yüklenmez aramaya başlayabilirsiniz. Bu, dizinde alınabilir olarak işaretlenmiş tüm alanları ve belge sayısını döndüren, belirtilmemiş bir tam metin arama sorgusudur.

Tavsiye

Bu content_embedding alan binden fazla boyut içerir. Diğer tüm alanları açıkça seçerek bu alanı yanıttan dışlamak için bir select deyimi kullanın. Select deyimini dizininizdeki alanlarla (location_metadata vs locationMetadata) eşleşecek şekilde ayarlayın. Örnek: "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
  }

İsteği gönderin. Yanıt şöyle görünmelidir:

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

Yanıt olarak 100 belge iade edilir.

Yalnızca görüntü içeriği için sorgu

Görüntü olmayan tüm içeriği dışlamak için filtre kullanın. $filter parametresi yalnızca dizin oluşturma sırasında filtrelenebilir olarak işaretlenmiş alanlarda çalışır.

Filtreler için mantıksal işleçleri (ve veya değil) ve karşılaştırma işleçlerini (eq, ne, gt, lt, ge, le) de kullanabilirsiniz. Dize karşılaştırmaları büyük/küçük harfe duyarlıdır. Daha fazla bilgi ve örnek için bkz. Basit arama sorguları örnekleri.

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

Yalnızca görüntü içeriği içeren arama sonuçlarında metin içeriği olmadığından, metin alanlarını dışlayabilirsiniz.

Bu alan, content_embedding hem sayfa metni hem de sözlü resim açıklamaları için yüksek boyutlu vektörler (genellikle 1.000 ile 3.000 boyut) içerir. Bu alanı sorgunun dışında tutun.

alanı, content_path belirlenen görüntü projeksiyon kapsayıcısı içindeki görüntü dosyasının göreli yolunu içerir. Bu alan yalnızca OLARAK ayarlandığında imageActionPDF'lerden generateNormalizedImages ayıklanan görüntüler için oluşturulur ve kaynak alanındaki /document/normalized_images/*/imagePathzenginleştirilmiş belgeden eşlenebilir.

Metin Bölme becerisi kullanılarak ayıklanan PDF bağlamı için, Shaper becerisi kapsayıcı adını yola ve konum meta verilerine ekler.

Enerjiyle ilgili içeriğe sahip metin veya görüntüleri sorgulayın; içerik kimliğini, üst belgeyi ve metni (yalnızca metin öbekleri için doldurulur) ve görüntünün bilgi deposuna kaydedildiği içerik yolunu (yalnızca görüntüler için doldurulur) döndürür.

Bu sorgu yalnızca tam metin aramasıdır, ancak benzerlik araması için vektör alanını sorgulayabilirsiniz .

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
  }

Sıfırla ve yeniden çalıştır

Dizinleyiciler, tam yeniden derlemeye olanak tanıyan yüksek su seviyesi işaretini temizlemek için sıfırlanabilir. Aşağıdaki POST istekleri sıfırlamaya yöneliktir ve ardından yeniden çalıştırılır.

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

Bilgi deposundaki görüntüleri görüntüleme

Bu öğreticideki beceri kümesinin PDF'den ayıklanan görüntü içeriği için bir bilgi deposu oluşturduğunu hatırlayın. Dizin oluşturma işlemi tamamlandıktan sonra, sürdürülebilir-ai-pdf-images konteynerinde yaklaşık 23 görüntü bulunmalıdır.

Bu görüntüleri bir arama sorgusunda döndüremezsiniz. Ancak, kullanıcı deneyimi için görüntüleri almak için Azure Depolama API'lerini çağıran uygulama kodu yazabilirsiniz. content_path alanında, her görüntünün yolu bulunur.

Görüntüleri Depolama Tarayıcısı'nda görüntülemek için:

  1. Azure portalında oturum açın ve Depolama hesabınıza gidin.

  2. Storage Browser'da sustainable-ai-pdf-images kapsayıcısını genişletin.

  3. Bir resim seçin.

  4. En sağ menüde (...) Görünüm/Düzenle'yi seçin.

PDF belgesinden ayıklanan görüntünün ekran görüntüsü.

Kaynakları temizle

Kendi aboneliğinizde çalışırken, artık ihtiyacınız olmayan kaynakları kaldırarak bir projeyi tamamlamak iyi bir fikirdir. Çalışır durumda kalan kaynaklar size pahalıya mal olabilir.

Kaynakları bulmak ve yönetmek için Azure portalında sol bölmeden Tüm kaynaklar veya Kaynak grupları'nı seçin. Kaynakları tek tek silebilir veya tüm kaynakları aynı anda kaldırmak için kaynak grubunu silebilirsiniz.