Azure AI Search'te beceri kümesi oluşturma

indexer stages

Beceri kümesi, resim veya yapılandırılmamış metin içeren belgelerden metin içeriği ve yapısı oluşturan işlemleri tanımlar. Resimler için OCR, fark edilmeyen metinler için varlık tanıma ve metin çevirisi örnek olarak verilebilir. Beceri kümesi, dış veri kaynağından metin ve görüntüler ayıklandıktan ve alan eşlemeleri işlendikten sonra yürütülür.

Bu makalede REST API'lerini kullanarak beceri kümesinin nasıl oluşturulacağı açıklanır, ancak aynı kavramlar ve adımlar diğer programlama dilleri için de geçerlidir.

Beceri kümesi tanımı kuralları şunlardır:

  • Beceri kümesi koleksiyonu içinde benzersiz bir ad. Beceri kümesi, herhangi bir dizin oluşturucu tarafından kullanılabilecek üst düzey bir kaynaktır.
  • En az bir beceri. 3-5 beceri tipik bir durum. Maksimum değer 30'dur.
  • Beceri kümesi aynı türdeki becerileri (örneğin, birden çok Şekillendirici becerileri) tekrarlayabilir.
  • Beceri kümesi zincirleme işlemleri, döngüleri ve dallanmaları destekler.

Dizin oluşturucular beceri kümesi yürütmeyi yönlendirir. Beceri kümesinizi test etmeden önce bir dizin oluşturucuya, veri kaynağına ve dizine ihtiyacınız vardır.

İpucu

İşlediğiniz içeriği yeniden kullanmak ve geliştirme maliyetini düşürmek için zenginleştirme önbelleğini etkinleştirin.

Beceri kümesi tanımı ekleme

Temel yapı ile başlayın. Beceri Kümesi Oluştur REST API'sinde, isteğin gövdesi JSON'da yazılmıştır ve aşağıdaki bölümlere sahiptir:

{
   "name":"skillset-template",
   "description":"A description makes the skillset self-documenting (comments aren't allowed in JSON itself)",
   "skills":[
       
   ],
   "cognitiveServices":{
      "@odata.type":"#Microsoft.Azure.Search.CognitiveServicesByKey",
      "description":"An Azure AI services resource in the same region as Azure AI Search",
      "key":"<Your-Cognitive-Services-Multiservice-Key>"
   },
   "knowledgeStore":{
      "storageConnectionString":"<Your-Azure-Storage-Connection-String>",
      "projections":[
         {
            "tables":[ ],
            "objects":[ ],
            "files":[ ]
         }
      ]
    },
    "encryptionKey":{ }
}

Ad ve açıklamadan sonra beceri kümesinin dört ana özelliği vardır:

  • skills dizi, sıralanmamış bir beceri koleksiyonu. Beceriler yardımcı (metni bölme gibi), dönüşümsel (Azure AI hizmetlerinden yapay zekaya dayalı) veya sağladığınız özel beceriler olabilir. Sonraki bölümde beceri dizisi örneği sağlanmıştır.

  • cognitiveServicesAzure AI hizmetleri API'lerini çağıran faturalanabilir beceriler için kullanılır. Faturalanabilir beceriler veya Özel Varlık Arama kullanmıyorsanız bu bölümü kaldırın. Kullanıyorsanız bir kaynak ekleyin.

  • knowledgeStore(isteğe bağlı) bir Azure Depolama hesabı ve beceri kümesi çıktısını Azure Depolama'daki tablolara, bloblara ve dosyalara yansıtmaya yönelik ayarları belirtir. İhtiyacınız yoksa bu bölümü kaldırın, aksi takdirde bir bilgi deposu belirtin.

  • encryptionKey(isteğe bağlı) bir beceri kümesi tanımındaki hassas içeriği (açıklamalar, bağlantı dizesi, anahtarlar) şifrelemek için kullanılan bir Azure Key Vault ve müşteri tarafından yönetilen anahtarları belirtir. Müşteri tarafından yönetilen şifreleme kullanmıyorsanız bu özelliği kaldırın.

Beceri ekleme

Beceri kümesi tanımının içinde beceri dizisi yürütülecek becerileri belirtir. Üç-beş beceri ortaktır, ancak hizmet sınırlarına bağlı olarak gerektiği kadar beceri ekleyebilirsiniz.

Zenginleştirme işlem hattının sonucu, arama dizinindeki veya bilgi deposundaki metin içeriğidir. Bu nedenle çoğu beceri görüntülerden metin oluşturur (OCR metni, başlık, etiketler) veya yeni bilgiler (varlıklar, anahtar ifadeler, yaklaşım) oluşturmak için var olan metni analiz eder. Bağımsız olarak çalışan beceriler paralel olarak işlenir. Birbirine bağlı beceriler, ikinci becerinin girişi (metin çevirisi gibi) olarak bir becerinin (anahtar ifadeler gibi) çıkışını belirtir. Arama hizmeti, beceri yürütme sırasını ve yürütme ortamını belirler.

Tüm becerilerin türü, bağlamı, girişleri ve çıkışları vardır. Bir becerinin isteğe bağlı olarak bir adı ve açıklaması olabilir. Aşağıdaki örnekte, temel yapıyı karşılaştırabilmeniz için iki ilgisiz yerleşik beceri gösterilmektedir.

"skills": [
    {
        "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
        "name": "#1",
        "description": "This skill detects organizations in the source content",
        "context": "/document",
        "categories": [
            "Organization"
        ],
        "inputs": [
            {
                "name": "text",
                "source": "/document/content"
            }
        ],
        "outputs": [
            {
                "name": "organizations",
                "targetName": "orgs"
            }
        ]
    },
    {
        "name": "#2",
        "description": "This skill detects corporate logos in the source files",
        "@odata.type": "#Microsoft.Skills.Vision.ImageAnalysisSkill",
        "context": "/document/normalized_images/*",
        "visualFeatures": [
            "brands"
        ],
        "inputs": [
            {
                "name": "image",
                "source": "/document/normalized_images/*"
            }
        ],
        "outputs": [
            {
                "name": "brands"
            }
        ]
    }
]

Her beceri, giriş değerleri ve aldığı parametreler açısından benzersizdir. Beceri başvuru belgeleri , belirli bir becerinin tüm parametrelerini ve özelliklerini açıklar. Farklılıklar olsa da çoğu beceri ortak bir kümeyi paylaşır ve benzer şekilde desenlenir.

Not

İfadeleri oluşturmak için Koşullu beceriyi kullanarak döngü ve dallanma ile karmaşık beceri kümeleri oluşturabilirsiniz. Söz dizimi, zenginleştirme ağacındaki düğümleri tanımlamak için birkaç değişiklikle birlikte JSON İşaretçisi yol gösterimini temel alır. A "/" , ağaçta daha düşük bir düzeyden geçer ve "*" bağlamda her bir işleç için işlevi görür. Bu makaledeki çok sayıda örnek söz dizimini göstermektedir.

Beceri bağlamı ayarlama

Her beceri, işlemlerin hangi düzeyde gerçekleştirileceğini belirleyen bir bağlam özelliğine sahiptir. "bağlam" özelliği açıkça ayarlı değilse, varsayılan değerdir "/document"; burada bağlam belgenin tamamıdır (beceri belge başına bir kez çağrılır).

"skills":[
  {
    "@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
    "context": "/document",
    "inputs": [],
    "outputs": []
  },
  {
      "@odata.type": "#Microsoft.Skills.Vision.ImageAnalysisSkill",
      "context": "/document/normalized_images/*",
      "visualFeatures": [],
      "inputs": [],
      "outputs": []
  }
]

Bağlam genellikle aşağıdaki örneklerden birine ayarlanır:

Bağlam örneği Açıklama
"context": "/document" (Varsayılan) Girişler ve çıkışlar belge düzeyindedir.
"context": "/document/pages/*" Yaklaşım analizi gibi bazı beceriler daha küçük metin öbekleri üzerinde daha iyi performans gösterir. Büyük bir içerik alanını sayfalara veya cümlelere ayırıyorsanız bağlamın her bileşen bölümü üzerinde olması gerekir.
"context": "/document/normalized_images/*" Görüntü içeriği için girişler ve çıkışlar, üst belgedeki görüntü başına bir tanedir.

Bağlam ayrıca zenginleştirme ağacında çıkışların nerede üretildiğini de belirler. Örneğin, Varlık Tanıma becerisi olarak orgsyakalanan adlı "organizations"bir özellik döndürür. Bağlam ise "/document", alt öğesi olarak "/document"bir "kuruluşlar" düğümü eklenir. Daha sonra bu düğüme aşağı akış becerilerinde başvurmak isterseniz, yol olacaktır "/document/orgs".

Girişleri tanımlama

Zenginleştirilmiş bir belgeden okuma ve yazma becerileri. Beceri girişleri, gelen verilerin kaynağını belirtir. Genellikle zenginleştirilmiş belgenin kök düğümü olur. Bloblar için tipik bir beceri girişi, belgenin içerik özelliğidir.

Her beceri için beceri başvuru belgeleri , kullanabileceği girişleri açıklar. Her girişin belirli bir girişi tanımlayan bir "adı" ve zenginleştirilmiş belgedeki verilerin konumunu belirten bir "kaynak" vardır. Aşağıdaki örnek, Varlık Tanıma becerisindendir:

"inputs": [
    {
        "name": "text", 
        "source": "/document/content"
    },
    {
        "name": "languageCode", 
        "source": "/document/language"
    }
]
  • Becerilerin birden çok girişi olabilir. "ad" belirli bir giriştir. Varlık Tanıma için, belirli girişler "text" ve "languageCode" şeklindedir.

  • "source" özelliği, hangi alanın veya satırın işlenecek içeriği sağladığını belirtir. Metin tabanlı beceriler için kaynak, belgede veya satırda metin sağlayan bir alandır. Görüntü tabanlı beceriler için girişi sağlayan düğüm normalleştirilmiş görüntülerdir.

    Kaynak örneği Açıklama
    "source": "/document" Tablosal veri kümesi için belge bir satıra karşılık gelir.
    "source": "/document/content" Bloblar için kaynak genellikle blob'un içerik özelliğidir.
    "source": "/document/some-named-field" Varlık tanıma veya anahtar tümcecik ayıklama gibi metin tabanlı beceriler için kaynak, "açıklama" veya "özet" gibi analiz edilecek yeterli metni içeren bir alan olmalıdır.
    "source": "/document/normalized_images/*" Görüntü içeriği için kaynak, belgenin kırılması sırasında normalleştirilmiş bir görüntüdür.

Beceri bir dizi üzerinde yinelenirse, hem bağlam hem de giriş kaynağı doğru konumlara dahil /* edilmelidir.

Çıktıları tanımlama

Her beceri, beceri kümesindeki ada göre başvurulan belirli çıkış türlerini yaymak için tasarlanmıştır. Beceri çıkışında "ad" ve isteğe bağlı "targetName" bulunur.

Her beceri için beceri başvuru belgeleri , üretebileceği çıkışları açıklar. Aşağıdaki örnek, Varlık Tanıma becerisindendir:

"outputs": [
    {
        "name": "persons", 
        "targetName": "people"
    },
    {
        "name": "organizations", 
        "targetName": "orgs"
    },
    {
        "name": "locations", 
        "targetName": "places"
    }
]
  • Becerilerin birden çok çıkışı olabilir. "ad" belirli bir çıkışı tanımlar. Örneğin, Varlık Tanıma için çıkış diğerleri arasında "kişiler", "konumlar", "kuruluşlar" olabilir.

  • "targetName", bu düğümün zenginleştirilmiş belgede olmasını istediğiniz adı belirtir. Beceri çıkışları aynı ada sahipse bu yararlı olur. Aynı çıkışı döndüren birden çok beceriniz varsa zenginleştirme "targetName" düğümü yollarında ad belirsizliği için kullanın. Hedef ad belirtilmemişse, name özelliği her ikisi için de kullanılır.

Bazı durumlar, bir dizinin her öğesine ayrı ayrı başvurmayı çağırır. Örneğin, her öğesini"/document/orgs" ayrı ayrı başka bir beceriye geçirmek istediğinizi varsayalım. Bunu yapmak için yola bir yıldız işareti ekleyin: "/document/orgs/*".

Beceri çıkışı zenginleştirilmiş belgeye zenginleştirme ağacında yeni bir düğüm olarak yazılır. Yaklaşım puanı veya dil kodu gibi basit bir değer olabilir. Kuruluş, kişi veya konum listesi gibi bir koleksiyon da olabilir. Beceri çıkışı, Shaper becerisinde olduğu gibi karmaşık bir yapı da olabilir. Becerinin girişleri şeklin bileşimini belirler, ancak çıkış, arama dizininde, bilgi deposu projeksiyonunda veya adına göre başka bir beceride başvurulabilen adlandırılmış nesnedir.

Özel beceri ekleme

Bu bölüm özel beceri örneği içerir. URI, sağladığınız modeli veya dönüşümü çağıran bir Azure İşlevi'ni işaret eder. Daha fazla bilgi için bkz . Özel arabirim tanımlama.

Özel beceri işlem hattının dışında olan kodu yürütmekle birlikte, beceri dizisinde bu yalnızca başka bir beceridir. Yerleşik beceriler gibi bir türü, bağlamı, girişleri ve çıkışları vardır. Ayrıca yerleşik becerilerde olduğu gibi zenginleştirme ağacını okur ve yazar. "Bağlam" alanının yıldız işaretiyle olarak ayarlandığına "/document/orgs/*" dikkat edin; bu da altındaki "/document/orgs"her kuruluş için zenginleştirme adımının çağrıldığı anlamına gelir.

Bu örnekteki şirket açıklaması gibi çıkış, tanımlanan her kuruluş için oluşturulur. Aşağı akış adımındaki düğüme başvururken (örneğin, anahtar ifade ayıklamada), bunu yapmak için yolu "/document/orgs/*/companyDescription" kullanırsınız.

{
  "@odata.type": "#Microsoft.Skills.Custom.WebApiSkill",
  "description": "This skill calls an Azure function, which in turn calls custom code",
  "uri": "https://indexer-e2e-webskill.azurewebsites.net/api/InvokeCode?code=foo",
  "httpHeaders": {
      "Ocp-Apim-Subscription-Key": "foobar"
  },
  "context": "/document/orgs/*",
  "inputs": [
    {
      "name": "query",
      "source": "/document/orgs/*"
    }
  ],
  "outputs": [
    {
      "name": "description",
      "targetName": "companyDescription"
    }
  ]
}

Çıkışı hedefe gönderme

Beceri çıkışı isteğe bağlı olarak yeniden kullanım amacıyla önbelleğe alınabilir, ancak genellikle geçicidir ve yalnızca beceri yürütme işlemi devam ederken mevcuttur.

İlk beceri kümesi için İpuçları

  • Verileri içeri aktarma sihirbazını deneyin.

    Sihirbaz, ilk seferde zor olabilecek birkaç adımı otomatikleştirir. Alan eşlemeleri ve çıkış alanı eşlemeleri dahil olmak üzere beceri kümesini, dizini ve dizin oluşturucuyu tanımlar. Ayrıca, kullanıyorsanız bir bilgi deposundaki projeksiyonları da tanımlar. OCR veya görüntü analizi gibi bazı beceriler için sihirbaz, belgenin kırılması sırasında ayrılmış olan görüntü ve metin içeriğini birleştirilen yardımcı program becerileri ekler.

    Sihirbaz çalıştırıldıktan sonra, JSON tanımını görüntülemek için her nesneyi Azure portalında açabilirsiniz.

  • Hedef belge üzerinde beceri kümesi yürütmesini çağırmak ve beceri kümesinin oluşturduğu zenginleştirilmiş belgeyi incelemek için Oturumlarda Hata Ayıklamayı deneyin. Giriş ve çıkış ayarlarını ve değerlerini görüntüleyebilir ve değiştirebilirsiniz. Bu öğretici, başlamak için iyi bir yerdir: Öğretici: Hata Ayıklama Oturumlarını kullanarak beceri kümesinde hata ayıklama.

Sonraki adımlar

Bağlam ve giriş kaynağı alanları, zenginleştirme ağacındaki düğümlerin yollarıdır. Sonraki adım olarak, zenginleştirme ağacındaki düğümler için yol söz dizimi hakkında daha fazla bilgi edinin.