Bir Azure Yapay Zeka Arama beceri kümesinde bağlam ve kaynak özelliklerini kullanarak zenginleştirilmiş düğümlere giden bir yola başvurmak

Not

Azure Yapay Zeka Arama Azure portalı, REST API'leri ve Azure SDK’ları aracılığıyla kullanılabilir. Ayrıca kuruluş içeriğini Microsoft Foundry portalındaki aracılar için yeniden kullanılabilir, izin kullanan bilgi bankalarına dönüştüren yönetilen bilgi katmanı Foundry IQ'yu temel alır.

Beceri kümesi yürütmesi sırasında motor, tanınan varlıklar veya çevrilmiş metinler gibi her zenginleştirmeyi yakalayan bellek içinde bir veri zenginleştirme ağacı oluşturur. Bu makalede, çıkışları aşağı akış becerilerine geçirebilmeniz veya arama dizini alanı için bir çıkış alanı eşlemesi belirtebilmeniz için zenginleştirme ağacındaki bir zenginleştirme düğümüne nasıl başvuracağınızı öğrenin.

Bu makalede, çeşitli senaryoları göstermek için örnekler kullanılır. Tam sözdizimi için Beceri bağlamı ve giriş açıklama dili bölümüne bakın.

Arka plan kavramları

Söz dizimini gözden geçirmeden önce, bu makalenin devamında sağlanan örnekleri daha iyi anlamak için birkaç önemli kavramı yeniden inceleyelim.

Süre Açıklama
"zenginleştirilmiş belge" Zenginleştirilmiş belge, oluşturulduğu anda beceri çıktısı toplayan ve bir belgeyle ilgili tüm zenginleştirmeleri tutan bellek içi bir yapıdır. Zenginleştirilmiş bir belgeyi ağaç olarak düşünün. Genellikle, ağaç kök belge düzeyinde başlar ve her yeni zenginleştirme önceki bir düğümden alt öğesi olarak oluşturulur.
düğüm Zenginleştirilmiş bir belge içinde bir düğüm (bazen "ek açıklama" olarak da adlandırılır), OCR becerisinin "metin" veya "yerleşim metni" gibi belirli bir çıktısı, ürün kimliği alanının içeriği gibi özgün bir kaynak alan değeri veya Azure Depolama'daki bloblardan kaynaklanan metadata_storage_path gibi meta veri olabilir.
"bağlam" Zenginleştirmenin kapsamı, tüm belgeyi, belgenin bir bölümünü (sayfalar veya cümleler) veya resimlerle çalışıyorsanız belgeden ayıklanan görüntüleri içerebilir. Varsayılan olarak, zenginleştirme bağlamı "/document" düzeyindedir ve veri kaynağındaki belgelerle sınırlıdır. Beceri çalıştırıldığında, bu becerinin çıkışları tanımlı bağlamın özellikleri haline gelir.

Farklı senaryolar için yollar

Yollar, beceri kümesinin "bağlam" ve "kaynak" özelliklerinde ve dizin oluşturucudaki çıkış alanı eşlemelerinde belirtilir.

Bağlam ve kaynak öğelerinin vurgulandığı beceri kümesi tanımının ekran görüntüsü.

Ekran görüntüsündeki örnekte Azure Cosmos DB koleksiyonundaki bir öğenin yolu gösterilmektedir.

  • context yolu, koleksiyonun /document/HotelId alanına göre belgelere bölümlendirilmiş olmasından dolayı /HotelId.

  • source izlenen yol, /document/Description becerinin bir çeviri becerisi olmasından ve çevirmek istediğiniz alanın her belgedeki Description alan olmasından kaynaklanmaktadır.

Tüm yollar /document ile başlar. Dizin oluşturucu bir belgeyi açtığında veya veri kaynağından bir satır okuduğunda, dizin oluşturucunun çalışmasının "belge işleme" aşamasında zenginleştirilmiş bir belge oluşturulur. Başlangıçta zenginleştirilmiş bir belgedeki tek düğüm kök düğümdür (/document)ve diğer tüm zenginleştirmelerin gerçekleştiği düğümdür.

Aşağıdaki listede birkaç yaygın örnek bulunur:

  • /document kök düğümdür ve Azure Depolama'daki blob'un tamamını veya SQL tablosundaki bir satırı gösterir.
  • /document/{key} , Azure Cosmos DB koleksiyonundaki bir belgenin veya öğenin söz dizimidir. Burada {key} , önceki örnekte olduğu gibi /document/HotelId gerçek anahtardır.
  • /document/content JSON blobunun "content" özelliğini belirtir.
  • /document/{field}, önceki örnekte görüldüğü gibi, /document/Description alanının çevrilmesi gibi belirli bir alan üzerinde gerçekleştirilen bir işlemin söz dizimidir.
  • /document/pages/* veya /document/sentences/*, büyük bir belgeyi işlemek için daha küçük parçalara ayırdığınızda bağlam haline gelir. "Bağlam" ise /document/pages/*, beceri belgedeki her sayfa üzerinde bir kez yürütülür. Birden fazla sayfa veya tümce olabileceğinden, tümünü yakalamak için /* ekleyebilirsiniz.
  • /document/normalized_images/*, belge görüntüler içeriyorsa, belge parçalama sırasında oluşturulur. Görüntülerin tüm yolları normalized_images ile başlar. Belgelerde çoğunlukla birden fazla resim yer aldığı için /* ekleyin.

Bu makalenin geri kalanındaki örnekler, belgenin kırılma aşamasının bir parçası olarak Azure blob dizin oluşturucuları tarafından otomatik olarak oluşturulan "içerik" alanını temel alır. Blob kapsayıcısından belgelere başvururken, "içerik" alanının "belgenin" parçası olduğu gibi "/document/content"bir biçim kullanın.

Örnek 1: Basit ek açıklama örneği

Azure Blob Depolama'da, varlık tanımayı kullanarak ayıklamak istediğiniz kişilerin adlarına başvurular içeren çeşitli dosyalarınız olduğunu varsayalım. Aşağıdaki beceri tanımında, "/document/content" belgenin tamamının metinsel gösterimidir ve "kişiler", kişi olarak tanımlanan varlıklar için tam adların çıkarılmasıdır.

Varsayılan bağlam "/document" olduğu için, kişi listesine artık "/document/people" olarak başvurulabilir. Bu özel durumda "/document/people" , artık dizindeki bir alanla eşleştirilebilen veya aynı beceri kümesinde başka bir beceri için kullanılabilen bir ek açıklamadır.

  {
    "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
    "categories": [ "Person"],
    "defaultLanguageCode": "en",
    "inputs": [
      {
        "name": "text",
        "source": "/document/content"
      }
    ],
    "outputs": [
      {
        "name": "persons",
        "targetName": "people"
      }
    ]
  }

Örnek 2: Belge içindeki bir diziye başvurma

Bu örnek, bir zenginleştirme adımını aynı belge üzerinde birden çok kez çağırmayı gösteren önceki örnek üzerinde oluşturulur. Önceki örneğin, tek bir belgeden 10 kişi adıyla bir dize dizisi ürettiğini varsayalım. Mantıklı bir sonraki adım, soyadını bir tam addan ayıklayan ikinci bir zenginleştirme olabilir. 10 adet isim olduğundan, bu adımın bu belgede her bir kişi için bir kez olmak üzere 10 kez çağrılması gerektiğini istiyorsunuz.

Doğru sayıda yinelemeyi çağırmak için bağlamı olarak "/document/people/*"ayarlayın; burada yıldız işareti ("*"), zenginleştirilmiş belgedeki tüm düğümleri alt "/document/people"öğeleri olarak temsil eder. Beceri dizisinde yalnızca bir kez tanımlanmasına rağmen, belgedeki her üye için çağrılır ve bu işlem tüm üyeler işlenene kadar devam eder.

  {
    "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
    "description": "Fictitious skill that gets the last name from a full name",
    "uri": "http://names.azurewebsites.net/api/GetLastName",
    "context" : "/document/people/*",
    "defaultLanguageCode": "en",
    "inputs": [
      {
        "name": "fullname",
        "source": "/document/people/*"
      }
    ],
    "outputs": [
      {
        "name": "lastname",
        "targetName": "lastname"
      }
    ]
  }

Ek açıklamalar diziler veya dize koleksiyonları olduğunda, bir bütün olarak dizi yerine belirli üyeleri hedeflemek isteyebilirsiniz. Önceki örnek, bağlam tarafından temsil edilen her düğümün altına "lastname" adlı bir ek açıklama oluşturur. Bu ek açıklama ailesine başvurmak istiyorsanız söz dizimini "/document/people/*/lastname"kullanın. Belirli bir ek açıklamaya başvurmak istiyorsanız, belgede tanımlanan ilk kişinin soyadına başvurmak için açık bir dizin ("/document/people/1/lastname") kullanın. Bu söz diziminde dizilerin sıfır dizinli olduğuna dikkat edin.

Örnek 3: Bir dizi içindeki başvuru üyeleri

Bazen belirli bir türün tüm anotasyonlarını belirli bir işlev için gruplandırmanız gerekir. Örnek 2'de ayıklanan soyadlar arasından en yaygın olanı belirleyen özel bir yeteneği varsayımsal olarak düşünün. Özel beceriye yalnızca soyadlarını sağlamak için, bağlamı "/document" ve girişi "/document/people/*/lastname" olarak belirtin.

kardinalitesinin "/document/people/*/lastname" belgeninkinden daha büyük olduğuna dikkat edin. Bu belge için yalnızca bir belge düğümü varken 10 soyadı düğümü olabilir. Bu durumda, sistem otomatik olarak belgedeki tüm öğeleri içeren bir dizi "/document/people/*/lastname" oluşturur.

  {
    "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
    "description": "Fictitious skill that gets the most common string from an array of strings",
    "uri": "http://names.azurewebsites.net/api/MostCommonString",
    "context" : "/document",
    "inputs": [
      {
        "name": "strings",
        "source": "/document/people/*/lastname"
      }
    ],
    "outputs": [
      {
        "name": "mostcommon",
        "targetName": "common-lastname"
      }
    ]
  }

Açıklama yolu sorunlarını giderme ipuçları

Beceri girişlerini belirtirken sorun yaşıyorsanız, bu ipuçları ilerlemenize yardımcı olabilir:

  • Beceri kümesi tanımlarını ve sihirbazın oluşturduğu alan eşlemelerini gözden geçirmek için Veri İçe Aktarma sihirbazını verileriniz üzerinde çalıştırın.

  • Bir beceri kümesinde hata ayıklama oturumu başlatın ve zenginleştirilmiş bir belgenin yapısını görüntüleyin. Beceri tanımının yollarını ve diğer bölümlerini düzenleyebilir ve sonra değişikliklerinizi doğrulamak için beceriyi çalıştırabilirsiniz.

Ayrıca bkz.