Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Note
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.
Note
Bilgi depoları , Azure Depolama'da bulunan ve Azure Yapay Zeka Arama beceri kümelerinin çıkışlarını içeren ikincil depolamalardır. Bunlar, aracısal alma iş akışlarında kullanılan bilgi kaynaklarından ve bilgi bankalarından ayrıdır.
Bu makalede, Azure Depolama'daki bir bilgi deposundaki zengin beceri kümesinin çıkışını tam olarak ifade etmek için gereken şekillendirme ve projeksiyon adımlarında size yol göstererek üst düzey kavramları ve söz dizimi tabanlı makaleleri destekleyen ayrıntılı bir örnek sağlanır.
Uygulama gereksinimleriniz birden çok beceri ve projeksiyona çağrıda bulunursa, bu örnek şekillerin ve projeksiyonların nasıl etkileşime geçtiğini daha iyi bir fikir verebilir.
Örnek verileri ayarlama
Örnek belgeler Projeksiyonlar koleksiyonuna dahil değildir, ancak yapay zeka zenginleştirme tanıtım veri dosyaları , bu örnekte açıklanan projeksiyonlarla çalışan metinler ve görüntüler içerir. Bu örnek verileri kullanırsanız, ücretsiz zenginleştirmeler için günlük dizin oluşturucu sınırı altında kaldığınız için Bir Microsoft Foundry kaynağı ekleyen adımı atlayabilirsiniz.
Azure Depolama'da bir blob kapsayıcısı oluşturun ve 14 öğenin tümünü karşıya yükleyin.
Azure Depolama'dayken bir bağlantı dizesi kopyalayın.
Bu makaledeki projections.rest örnekleri çalıştırmak için dosyasını kullanabilirsiniz.
Örnek beceri kümesi
Şekiller ve projeksiyonlar arasındaki bağımlılığı anlamak için zenginleştirilmiş içerik oluşturan aşağıdaki beceri kümesini gözden geçirin. Bu yetenek kümesi hem ham görüntüleri hem de metni işler ve şekiller ve projeksiyonlar için başvurulacak çıktılar üretir.
Beceri sonuçlarına (targetNames) çok dikkat edin. Zenginleştirilmiş belge ağacına yazılan çıkışlara projeksiyonlarda ve şekillerde (Shaper becerileri aracılığıyla) başvurulur.
{
"name": "projections-demo-ss",
"description": "Skillset that enriches blob data found in the merged_content field. The enrichment granularity is a document.",
"skills": [
{
"@odata.type": "#Microsoft.Skills.Text.V3.EntityRecognitionSkill",
"name": "#1",
"description": null,
"context": "/document/merged_content",
"categories": [
"Person",
"Quantity",
"Organization",
"URL",
"Email",
"Location",
"DateTime"
],
"defaultLanguageCode": "en",
"minimumPrecision": null,
"inputs": [
{
"name": "text",
"source": "/document/merged_content"
},
{
"name": "languageCode",
"source": "/document/language"
}
],
"outputs": [
{
"name": "persons",
"targetName": "people"
},
{
"name": "organizations",
"targetName": "organizations"
},
{
"name": "locations",
"targetName": "locations"
}
]
},
{
"@odata.type": "#Microsoft.Skills.Text.KeyPhraseExtractionSkill",
"name": "#2",
"description": null,
"context": "/document/merged_content",
"defaultLanguageCode": "en",
"maxKeyPhraseCount": null,
"inputs": [
{
"name": "text",
"source": "/document/merged_content"
},
{
"name": "languageCode",
"source": "/document/language"
}
],
"outputs": [
{
"name": "keyPhrases",
"targetName": "keyphrases"
}
]
},
{
"@odata.type": "#Microsoft.Skills.Text.LanguageDetectionSkill",
"name": "#3",
"description": null,
"context": "/document",
"inputs": [
{
"name": "text",
"source": "/document/merged_content"
}
],
"outputs": [
{
"name": "languageCode",
"targetName": "language"
}
]
},
{
"@odata.type": "#Microsoft.Skills.Text.MergeSkill",
"name": "#4",
"description": null,
"context": "/document",
"insertPreTag": " ",
"insertPostTag": " ",
"inputs": [
{
"name": "text",
"source": "/document/content"
},
{
"name": "itemsToInsert",
"source": "/document/normalized_images/*/text"
},
{
"name": "offsets",
"source": "/document/normalized_images/*/contentOffset"
}
],
"outputs": [
{
"name": "mergedText",
"targetName": "merged_content"
}
]
},
{
"@odata.type": "#Microsoft.Skills.Vision.OcrSkill",
"name": "#5",
"description": null,
"context": "/document/normalized_images/*",
"textExtractionAlgorithm": "printed",
"lineEnding": "Space",
"defaultLanguageCode": "en",
"detectOrientation": true,
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*"
}
],
"outputs": [
{
"name": "text",
"targetName": "text"
},
{
"name": "layoutText",
"targetName": "layoutText"
}
]
}
],
"cognitiveServices": {
"@odata.type": "#Microsoft.Azure.Search.CognitiveServicesByKey",
"description": "A Foundry resource in the same region as Search.",
"key": "{{cognitive-services-key}}"
},
"knowledgeStore": null
}
Note
Dizin oluşturucu günde 20 adede kadar işlemi ücretsiz olarak işleyebilir. Bu örneğin örnek verileri 20 işlem sınırı altında kalır, bu nedenle örnek verileri kullanıyorsanız bölümü atlayabilirsiniz cognitiveServices .
Örnek Şekillendirici becerisi
Shaper becerisi, yeni zenginleştirilmiş içerik oluşturmak yerine mevcut zenginleştirilmiş içerikle çalışmaya yönelik bir yardımcı programdır. Beceri kümesine Bir Şekillendirici eklemek, tabloya veya blob depolamaya yansıtabileceğiniz özel bir şekil oluşturmanıza olanak tanır. Özel bir şekil olmadan projeksiyonlar, tablolar için uygun olmayan tek bir düğüme (çıkış başına bir projeksiyon) başvurmakla sınırlıdır. Özel bir şekil oluşturmak, çeşitli öğeleri tek bir tablo olarak görüntülenebilen veya tablo koleksiyonları içinde kesilip dağıtılabilen yeni bir mantıksal bir bütün halinde toplar.
Bu örnekte, özel şekil blob meta verilerini ve tanımlanan varlıkları ve anahtar tümcecikleri birleştirir. Özel şekil projectionShape olarak adlandırılır ve /document altında ebeveyn olarak konumlandırılır.
Şekillendirmenin bir amacı, tüm zenginleştirme düğümlerinin bilgi deposuna yansıtmak için gereken iyi biçimlendirilmiş JSON ile ifade edilmesini sağlamaktır. Bu, özellikle zenginleştirme ağacı iyi biçimlendirilmiş JSON olmayan düğümler içerdiğinde (örneğin, bir zenginleştirme ilkel bir veri türü ile (örneğin bir dize) ilişkili olduğunda) geçerlidir.
Son iki düğüme KeyPhrases ve Entitiesöğesine dikkat edin. Bunlar, sourceContext ile geçerli bir JSON nesnesi olarak sarılır. Bu, keyphrases ve entities ilkel türler üzerindeki zenginleştirmeler olduğundan ve yansıtılabilmeleri için geçerli bir JSON'a dönüştürülmeleri gerektiğinden gereklidir.
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"name": "ShaperForTables",
"description": null,
"context": "/document",
"inputs": [
{
"name": "metadata_storage_content_type",
"source": "/document/metadata_storage_content_type",
"sourceContext": null,
"inputs": []
},
{
"name": "metadata_storage_name",
"source": "/document/metadata_storage_name",
"sourceContext": null,
"inputs": []
},
{
"name": "metadata_storage_path",
"source": "/document/metadata_storage_path",
"sourceContext": null,
"inputs": []
},
{
"name": "metadata_content_type",
"source": "/document/metadata_content_type",
"sourceContext": null,
"inputs": []
},
{
"name": "keyPhrases",
"source": null,
"sourceContext": "/document/merged_content/keyphrases/*",
"inputs": [
{
"name": "KeyPhrases",
"source": "/document/merged_content/keyphrases/*"
}
]
},
{
"name": "Entities",
"source": null,
"sourceContext": "/document/merged_content/entities/*",
"inputs": [
{
"name": "Entities",
"source": "/document/merged_content/entities/*/name"
}
]
}
],
"outputs": [
{
"name": "output",
"targetName": "projectionShape"
}
]
}
Beceri kümesine Şekillendirici ekleyin
Bu makalenin başında sunulan örnek beceri kümesiNde Shaper becerisi yoktu, ancak Shaper becerileri bir beceri kümesine aittir ve genellikle sona doğru yerleştirilir.
Bir beceri kümesinde Bir Şekillendirici becerisi aşağıdaki gibi görünebilir:
{
"name": "projections-demo-ss",
"skills": [
{
<Shaper skill goes here>
}
],
"cognitiveServices": "A key goes here",
"knowledgeStore": []
}
Tablolara projeksiyon yapma
Yukarıdaki örneklerden yararlanarak, tablo projeksiyonlarında referans alınabilecek belirli miktarda zenginleştirme ve veri yapısı vardır. Aşağıdaki tablo projeksiyonunda, tableName ve source özellikleri ayarlanarak generatedKeyNameüç tablo tanımlanır.
Bu tabloların üçü de oluşturulan anahtarlar ve paylaşılan üst /document/projectionShapeile ilişkilendirilir.
"knowledgeStore" : {
"storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
"projections": [
{
"tables": [
{
"tableName": "tblDocument",
"generatedKeyName": "Documentid",
"source": "/document/projectionShape"
},
{
"tableName": "tblKeyPhrases",
"generatedKeyName": "KeyPhraseid",
"source": "/document/projectionShape/keyPhrases/*"
},
{
"tableName": "tblEntities",
"generatedKeyName": "Entityid",
"source": "/document/projectionShape/Entities/*"
}
],
"objects": [],
"files": []
}
]
}
Çalışmanızı test edin
Aşağıdaki adımları izleyerek projeksiyon tanımlarını de kontrol edebilirsiniz:
Bilgi deposunun
storageConnectionStringözelliğini geçerli bir V2 genel amaçlı depolama hesabı bağlantı dizesi olarak ayarlayın.PUT isteğini vererek beceri kümesini güncelleştirin.
Beceri kümesini güncelleştirdikten sonra dizin oluşturucuyu çalıştırın.
Artık üç tabloyla çalışan bir projeksiyona sahipsiniz. Bu tabloları Power BI'a aktarmak, Power BI'ın ilişkileri bulmasına neden olmalıdır.
Sonraki örniğe geçmeden önce, dilimleme ve verilerle ilgili mekanikleri anlamak için tablo projeksiyonunun yönlerini yeniden gözden geçirelim.
Tabloyu birden çok alt tabloya dilimleme
Dilimleme, birleştirilmiş bir şeklin tamamını bileşenlere bölen bir tekniktir. Sonuç, tek tek çalışabileceğiniz ayrı ama ilişkili tablolardan oluşur.
Örnekte, projectionShape birleştirilmiş şekil (veya zenginleştirme düğümü) şeklindedir. Projeksiyon tanımında, projectionShape şeklin keyPhrases ve Entitiesbölümlerini çekmenizi sağlayan ek tablolar halinde dilimlenmiş olur. Power BI'da bu, her belgeyle birden çok varlık ve keyPhras'ın ilişkilendirildiği için yararlıdır ve varlıkları ve keyPhrases'i kategorilere ayrılmış veri olarak görüyorsanız daha fazla içgörü elde edersiniz.
Dilimleme, üst ve alt tablolar arasında örtük olarak bir ilişki oluşturur; üst tablodaki generatedKeyName kullanılarak alt tabloda aynı ada sahip bir sütun oluşturulur.
İlişkileri adlandırma
generatedKeyName ve referenceKeyName özellikleri, verileri tablolar arasında ve hatta projeksiyon türleri arasında ilişkilendirmek için kullanılır. Çocuk tablodaki her satırın ebeveyne işaret eden bir özelliği vardır. Alt öğedeki sütunun veya özelliğin adı, üst öğeden gelen referenceKeyName'dir.
referenceKeyName sağlanmadığında, hizmet varsayılan olarak üst öğeden generatedKeyName kullanır.
Power BI, tablolardaki ilişkileri bulmak için bu oluşturulan anahtarlara dayanır. Alt tabloda farklı bir sütun adına ihtiyacınız varsa, üst tabloda referenceKeyName özelliğini ayarlayın. Bunun bir örneği, tblDocument tablosunda generatedKeyName kimlik olarak ve referenceKeyName DocumentID olarak ayarlamaktır. Bu, tblEntities ve tblKeyPhrases tablolarında belge kimliğini içeren sütunun DocumentID olarak adlandırılmasıyla sonuçlanır.
Blob dokümanlarını görüntüleme
Nesne projeksiyonları, herhangi bir düğümden kaynaklanabilen zenginleştirme ağacının JSON gösterimleridir. Tablo projeksiyonlarına kıyasla nesne projeksiyonlarının tanımlanması daha kolaydır ve tüm belgeler yansıtılırken kullanılır. Nesne projeksiyonları kapsayıcıdaki tek bir projeksiyonla sınırlıdır ve dilimlenemez.
Bir nesne projeksiyonu tanımlamak için projeksiyonlar özelliğindeki diziyi kullanın objects .
Kaynak, projeksiyonun kökü olan zenginleştirme ağacındaki düğüme giden yoldur. Gerekli olmasa da, düğüm yolu genellikle bir Shaper becerisinin çıktısıdır. Bunun nedeni, çoğu becerinin kendi başına geçerli JSON nesnelerinin çıkışını almamasıdır ve bu da bir tür şekillendirmenin gerekli olduğu anlamına gelir. Çoğu durumda, bir tablo projeksiyonu oluşturan aynı Şekillendirici becerisi, nesne projeksiyonu oluşturmak için kullanılabilir. Alternatif olarak, kaynak, yapıyı sağlamak için satır içi şekillendirmeye sahip bir düğüme de ayarlanabilir.
Hedef her zaman bir blob kapsayıcısıdır.
Aşağıdaki örnek, her bir blob için bir otel belgesi olmak üzere, tek tek otel belgelerini hotels adlı bir kapsayıcıya projeler.
"knowledgeStore": {
"storageConnectionString": "an Azure storage connection string",
"projections" : [
{
"tables": [ ]
},
{
"objects": [
{
"storageContainer": "hotels",
"source": "/document/objectprojection",
}
]
},
{
"files": [ ]
}
]
}
Kaynak, "objectprojection" adlı bir Shaper becerisinin çıktısıdır. Her blob, her alan girişinin bir JSON gösterimine sahip olur.
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"name": "#3",
"description": null,
"context": "/document",
"inputs": [
{
"name": "HotelId",
"source": "/document/HotelId"
},
{
"name": "HotelName",
"source": "/document/HotelName"
},
{
"name": "Category",
"source": "/document/Category"
},
{
"name": "keyPhrases",
"source": "/document/HotelId/keyphrases/*"
},
],
"outputs": [
{
"name": "output",
"targetName": "objectprojection"
}
]
}
Görüntü dosyasını yansıtma
Dosya projeksiyonları her zaman ikili, normalleştirilmiş görüntülerdir; burada normalleştirme beceri kümesi yürütmesinde kullanılmak üzere olası yeniden boyutlandırma ve döndürme anlamına gelir. Nesne projeksiyonlarına benzer dosya projeksiyonları, Azure Depolama'da blob olarak oluşturulur ve görüntüyü içerir.
Bir dosya projeksiyonu tanımlamak için projeksiyonlar özelliğindeki diziyi kullanın files .
Kaynak her zaman /document/normalized_images/*şeklindedir. Dosya projeksiyonları yalnızca koleksiyon üzerinde etki eder. Dizin oluşturucular veya beceri kümesi özgün normalleştirilmemiş görüntüden geçmez.
Hedef her zaman belge kimliğinin base64 kodlanmış değerinin klasör ön ekine sahip bir blob kapsayıcıdır. Dosya projeksiyonları, nesne projeksiyonlarıyla aynı kapsayıcıyı paylaşamaz ve farklı bir kapsayıcıya yansıtılması gerekir.
Aşağıdaki örnek, zenginleştirilmiş bir belgenin belge düğümünden ayıklanan tüm normalleştirilmiş görüntüleri myImages adlı bir kapsayıcıya projelendirir.
"knowledgeStore" : {
"storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
"projections": [
{
"tables": [ ],
"objects": [ ],
"files": [
{
"storageContainer": "myImages",
"source": "/document/normalized_images/*"
}
]
}
]
}
Çeşitli türlere yansıtma
Daha karmaşık bir senaryo, projeksiyon türleri arasında içerik yansıtmanızı gerektirebilir. Örneğin, anahtar ifadeleri ve varlıkları tablolara yansıtma, metin ve düzen metninin OCR sonuçlarını nesne olarak kaydetme ve ardından görüntüleri dosya olarak yansıtma.
Birden çok projeksiyon türü için adımlar:
- Her belge için bir satır içeren bir tablo oluşturun.
- Belge tablosuyla ilişkili ve her anahtar tümceciğinin satır olarak belirlendiği bir tablo oluşturun.
- Bu tabloda satır olarak tanımlanan her varlıkla belge tablosuyla ilgili bir tablo oluşturun.
- Her resim için düzen metniyle bir nesne projeksiyonu oluşturun.
- Ayıklanan her görüntüyü yansıtan bir dosya projeksiyonu oluşturun.
- Belge tablosuna yönelik başvurular, düzen metniyle birlikte nesne projeksiyonu ve dosya projeksiyonunu içeren bir çapraz başvuru tablosu oluşturun.
Çapraz yansıtma için verileri şekillendirme
Bu projeksiyonlar için gereken şekilleri almak için, adlı crossProjectionşekillendirilmiş bir nesne oluşturan yeni bir Shaper becerisi ekleyerek işe başlayın.
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"name": "ShaperForCrossProjection",
"description": null,
"context": "/document",
"inputs": [
{
"name": "metadata_storage_name",
"source": "/document/metadata_storage_name",
"sourceContext": null,
"inputs": []
},
{
"name": "keyPhrases",
"source": null,
"sourceContext": "/document/merged_content/keyphrases/*",
"inputs": [
{
"name": "KeyPhrases",
"source": "/document/merged_content/keyphrases/*"
}
]
},
{
"name": "entities",
"source": null,
"sourceContext": "/document/merged_content/entities/*",
"inputs": [
{
"name": "Entities",
"source": "/document/merged_content/entities/*/name"
}
]
},
{
"name": "images",
"source": null,
"sourceContext": "/document/normalized_images/*",
"inputs": [
{
"name": "image",
"source": "/document/normalized_images/*"
},
{
"name": "layoutText",
"source": "/document/normalized_images/*/layoutText"
},
{
"name": "ocrText",
"source": "/document/normalized_images/*/text"
}
]
}
],
"outputs": [
{
"name": "output",
"targetName": "crossProjection"
}
]
}
Tablo, nesne ve dosya projeksiyonları tanımlama
Birleştirilmiş crossProjection nesnesinden, nesneyi birden çok tabloya dilimleyin, OCR çıkışını blob olarak yakalayın ve görüntüyü dosya olarak kaydedin (Blob depolamada da).
"knowledgeStore" : {
"storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
"projections": [
{
"tables": [
{
"tableName": "crossDocument",
"generatedKeyName": "Id",
"source": "/document/crossProjection"
},
{
"tableName": "crossEntities",
"generatedKeyName": "EntityId",
"source": "/document/crossProjection/entities/*"
},
{
"tableName": "crossKeyPhrases",
"generatedKeyName": "KeyPhraseId",
"source": "/document/crossProjection/keyPhrases/*"
},
{
"tableName": "crossReference",
"generatedKeyName": "CrossId",
"source": "/document/crossProjection/images/*"
}
],
"objects": [
{
"storageContainer": "crossobject",
"generatedKeyName": "crosslayout",
"source": null,
"sourceContext": "/document/crossProjection/images/*/layoutText",
"inputs": [
{
"name": "OcrLayoutText",
"source": "/document/crossProjection/images/*/layoutText"
}
]
}
],
"files": [
{
"storageContainer": "crossimages",
"generatedKeyName": "crossimages",
"source": "/document/crossProjection/images/*/image"
}
]
}
]
}
Nesne projeksiyonları her projeksiyon için bir kapsayıcı adı gerektirir. Nesne projeksiyonları ve dosya projeksiyonları bir kapsayıcıyı paylaşamaz.
Tablo, nesne ve dosya projeksiyonları arasındaki ilişkiler
Bu örnekte projeksiyonların başka bir özelliği de vurgulanır. Aynı projeksiyon nesnesi içinde birden çok projeksiyon türü tanımlanarak, farklı türler (tablolar, nesneler, dosyalar) arasında ve içerisinde ilişkiler ifade edilir. Bu, bir belgenin tablo satırıyla başlamanıza ve nesne projeksiyonunda söz konusu belgedeki görüntülere ilişkin tüm OCR metnini bulmanıza olanak tanır.
Verilerin ilişkili olmasını istemiyorsanız projeksiyonları farklı projeksiyon gruplarında tanımlayın. Örneğin, aşağıdaki kod parçacığı tabloların ilişkili olmasına, ancak tablolar ile nesne (OCR metni) projeksiyonları arasındaki ilişkilere neden olmaz.
Projeksiyon grupları, aynı verileri farklı ihtiyaçlar için farklı şekillerde yansıtmak istediğinizde kullanışlıdır. Örneğin, Power BI panosu için bir projeksiyon grubu ve özel bir beceriyle entegre edilen makine öğrenmesi modelini eğitmek amacıyla kullanılan verileri toplamak için başka bir projeksiyon grubu.
Farklı türlerdeki projeksiyonlar oluşturulurken, önce dosya ve nesne projeksiyonları oluşturulur ve yollar tablolara eklenir.
"knowledgeStore" : {
"storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
"projections": [
{
"tables": [
{
"tableName": "unrelatedDocument",
"generatedKeyName": "Documentid",
"source": "/document/projectionShape"
},
{
"tableName": "unrelatedKeyPhrases",
"generatedKeyName": "KeyPhraseid",
"source": "/document/projectionShape/keyPhrases"
}
],
"objects": [
],
"files": []
},
{
"tables": [],
"objects": [
{
"storageContainer": "unrelatedocrtext",
"source": null,
"sourceContext": "/document/normalized_images/*/text",
"inputs": [
{
"name": "ocrText",
"source": "/document/normalized_images/*/text"
}
]
},
{
"storageContainer": "unrelatedocrlayout",
"source": null,
"sourceContext": "/document/normalized_images/*/layoutText",
"inputs": [
{
"name": "ocrLayoutText",
"source": "/document/normalized_images/*/layoutText"
}
]
}
],
"files": []
}
]
}
Sonraki Adımlar
Bu makaledeki örnekte projeksiyon oluşturmayla ilgili yaygın desenler gösterilmektedir. Artık kavramları iyi anladığınıza göre, kendi senaryonuza yönelik projeksiyonlar oluşturmak için daha iyi bir donanıma sahipsiniz.