Bir bilgi deposuna yansıtma için verileri şekillendirme
Azure AI Search'te "verileri şekillendirme", bilgi deposu iş akışında, Azure Depolama'daki tablolara, nesnelere ve dosyalara yansıtmak istediğiniz içeriğin veri gösterimini oluşturan bir adımı açıklar.
Beceriler yürütüldükçe, çıkışlar düğüm hiyerarşisindeki bir zenginleştirme ağacına yazılır ve zenginleştirme ağacını tamamen görüntülemek ve kullanmak isteyebilirsiniz, ancak çevrilmiş metinle veya ayıklanan varlıklarla ilgili düğümleri belirli tablolara yerleştirme gibi farklı senaryolar için düğüm alt kümeleri oluşturarak daha ince bir tane isteyeceksiniz.
Zenginleştirme ağacı kendi başına, içeriğinin bir bilgi deposunda nasıl temsil edildiklerine dair bilgi veren mantık içermez. Veri şekilleri her tabloya, nesneye ve dosya projeksiyonuna gidenlerin şemasını sağlayarak bu boşluğu doldurur. Veri şeklini, zenginleştirilmiş verilerin özel tanımı veya görünümü olarak düşünebilirsiniz. İstediğiniz kadar şekil oluşturabilir ve bunları bilgi deposu tanımındaki projeksiyonlara atayabilirsiniz.
Şekil oluşturmaya yönelik yaklaşımlar
Zenginleştirilmiş içeriği bir bilgi deposuna yansıtılacak şekilde şekillendirmenin iki yolu vardır:
Projeksiyon için açıkça kullanılan bir zenginleştirme ağacında düğümler oluşturmak için Şekillendirici becerisini kullanın. Becerilerin çoğu yeni içerik oluşturur. Buna karşılık, bir Shaper becerisi genellikle birden çok düğümü tek bir karmaşık nesnede birleştirmek için mevcut düğümlerle çalışır. Bu, birden çok düğümün çıkışının fiziksel olarak tabloda sütun olarak ifade edilmesi istediğiniz tablolar için kullanışlıdır.
Projeksiyon tanımının içinde satır içi bir şekil kullanın.
Shaper becerisinin kullanılması şekli dışlaştırır, böylece birden çok projeksiyon ve hatta diğer beceriler tarafından kullanılabilir. Ayrıca zenginleştirme ağacının tüm mutasyonlarının becerinin içinde olmasını ve çıkışın yeniden kullanılabilecek bir nesne olmasını sağlar. Buna karşılık, satır içi şekillendirme ihtiyacınız olan şekli oluşturmanıza olanak tanır, ancak anonim bir nesnedir ve yalnızca tanımlandığı projeksiyonda kullanılabilir.
Yaklaşımlar birlikte veya ayrı ayrı kullanılabilir. Bu makalede her ikisi de gösterilmektedir: tablo projeksiyonları için bir Şekillendirici becerisi ve anahtar ifadeler tablo projeksiyonu ile satır içi şekillendirme.
Şekillendirici becerisi kullanma
Şekillendirici becerileri genellikle bir beceri kümesinin sonuna yerleştirilir ve projeksiyona geçirmek istediğiniz verilerin bir görünümünü oluşturur. Bu örnek, şu düğümleri içeren "tableprojection" adlı bir şekil oluşturur: "reviews_text", "reviews_title", "AzureSearch_DocumentKey" ve sayfalanmış incelemelerden yaklaşım puanları ve anahtar ifadeler.
{
"@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
"name": "#5",
"description": null,
"context": "/document",
"inputs": [
{
"name": "reviews_text",
"source": "/document/reviews_text",
"sourceContext": null,
"inputs": []
},
{
"name": "reviews_title",
"source": "/document/reviews_title",
"sourceContext": null,
"inputs": []
},
{
"name": "AzureSearch_DocumentKey",
"source": "/document/AzureSearch_DocumentKey",
"sourceContext": null,
"inputs": []
},
{
"name": "pages",
"source": null,
"sourceContext": "/document/reviews_text/pages/*",
"inputs": [
{
"name": "Sentiment",
"source": "/document/reviews_text/pages/*/Sentiment",
"sourceContext": null,
"inputs": []
},
{
"name": "LanguageCode",
"source": "/document/Language",
"sourceContext": null,
"inputs": []
},
{
"name": "Page",
"source": "/document/reviews_text/pages/*",
"sourceContext": null,
"inputs": []
},
{
"name": "keyphrase",
"sourceContext": "/document/reviews_text/pages/*/Keyphrases/*",
"inputs": [
{
"source": "/document/reviews_text/pages/*/Keyphrases/*",
"name": "Keyphrases"
}
]
}
]
}
],
"outputs": [
{
"name": "output",
"targetName": "tableprojection"
}
]
}
SourceContext özelliği
Bir Shaper becerisi içinde bir girişin bir sourceContext
öğesi olabilir. Aynı özellik, yansıtmalardaki satır içi şekillerde de kullanılabilir.
sourceContext
zenginleştirme işlem hattında çok düzeyli, iç içe nesneler oluşturmak için kullanılır. Giriş beceri bağlamından farklı bir bağlamdaysa sourceContext kullanın. sourceContext, kaynak olarak ele alınan belirli bir öğeyle iç içe giriş tanımlamanızı gerektirir.
Yukarıdaki örnekte yaklaşım analizi ve anahtar ifade ayıklama işlemi, daha verimli analiz için sayfalara bölünmüş metinler üzerinde gerçekleştirildi. Puanların ve tümceciklerin bir tabloya yansıtılmasını istediğinizi varsayarsak, şimdi bağlamı puanı ve tümceciği sağlayan iç içe giriş olarak ayarlamanız gerekir.
Şekli birden çok tabloya yansıtma
tableprojection
Yukarıdaki bölümde tanımlanan düğümle, düğümün outputs
tableprojection
bölümlerini tek tek ilgili tablolar halinde dilimleyebilirsiniz:
"projections": [
{
"tables": [
{
"tableName": "hotelReviewsDocument",
"generatedKeyName": "Documentid",
"source": "/document/tableprojection"
},
{
"tableName": "hotelReviewsPages",
"generatedKeyName": "Pagesid",
"source": "/document/tableprojection/pages/*"
},
{
"tableName": "hotelReviewsKeyPhrases",
"generatedKeyName": "KeyPhrasesid",
"source": "/document/tableprojection/pages/*/keyphrase/*"
}
]
}
]
Tablo projeksiyonları için satır içi şekil
Satır içi şekillendirme, projeksiyon tanımının içinde yeni şekiller oluşturabilme özelliğidir. Satır içi şekillendirme şu özelliklere sahiptir:
- Şekil yalnızca onu içeren projeksiyon tarafından kullanılabilir.
- Şekil, bir Shaper becerisinin üreteceği yetenekle aynı olabilir.
ve inputs
kullanılarak sourceContext
satır içi bir şekil oluşturulur.
Özellik | Açıklama |
---|---|
sourceContext | Projeksiyonun kökünü ayarlar. |
Giriş | Her giriş tablodaki bir sütundur. Ad, sütun adıdır. Kaynak, değeri sağlayan zenginleştirme düğümüdür. |
Önceki örnekle aynı verileri yansıtmak için satır içi projeksiyon seçeneği şöyle görünür:
"projections": [
{
"tables": [
{
"tableName": "hotelReviewsInlineDocument",
"generatedKeyName": "Documentid",
"sourceContext": "/document",
"inputs": [
{
"name": "reviews_text",
"source": "/document/reviews_text"
},
{
"name": "reviews_title",
"source": "/document/reviews_title"
},
{
"name": "AzureSearch_DocumentKey",
"source": "/document/AzureSearch_DocumentKey"
}
]
},
{
"tableName": "hotelReviewsInlinePages",
"generatedKeyName": "Pagesid",
"sourceContext": "/document/reviews_text/pages/*",
"inputs": [
{
"name": "Sentiment",
"source": "/document/reviews_text/pages/*/Sentiment"
},
{
"name": "LanguageCode",
"source": "/document/Language"
},
{
"name": "Page",
"source": "/document/reviews_text/pages/*"
}
]
},
{
"tableName": "hotelReviewsInlineKeyPhrases",
"generatedKeyName": "KeyPhraseId",
"sourceContext": "/document/reviews_text/pages/*/Keyphrases/*",
"inputs": [
{
"name": "Keyphrases",
"source": "/document/reviews_text/pages/*/Keyphrases/*"
}
]
}
]
}
]
Her iki yaklaşımdan da bir gözlem, "Keyphrases" değerlerinin "sourceContext" kullanılarak nasıl yansıtıldığından kaynaktır. Dizelerden oluşan bir koleksiyon içeren "Keyphrases" düğümü, sayfa metninin bir alt öğesidir. Ancak, projeksiyonlar bir JSON nesnesi gerektirdiğinden ve sayfa bir ilkel (dize) olduğundan, anahtar tümceciği adlandırılmış bir özelliğe sahip bir nesneye sarmak için "sourceContext" kullanılır. Bu teknik, ilkellerin bile bağımsız olarak yansıtılabilmesini sağlar.
Nesne projeksiyonları için satır içi şekil
Shaper becerisini kullanarak yeni bir şekil oluşturabilir veya nesne projeksiyonunun satır içi şekillendirmesini kullanabilirsiniz. Tablo örneği şekil oluşturma ve dilimleme yaklaşımını gösterirken, bu örnek satır içi şekillendirme kullanımını gösterir.
Satır içi şekillendirme, projeksiyon girişlerinin tanımında yeni bir şekil oluşturma özelliğidir. Satır içi şekillendirme, bir Shaper becerisinin üreteceği değerle aynı olan anonim bir nesne oluşturur (bu örnekte). projectionShape
Satır içi şekillendirme, yeniden oluşturmayı planlamadığınız bir şekil tanımlıyorsanız kullanışlıdır.
projeksiyonlar özelliği bir dizidir. Bu örnek, knowledgeStore tanımının satır içi projeksiyonlar içerdiği diziye yeni bir projeksiyon örneği ekler. Satır içi projeksiyonları kullanırken, Shaper becerisini atlayabilirsiniz.
"knowledgeStore" : {
"storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
"projections": [
{
"tables": [ ],
"objects": [
{
"storageContainer": "sampleobject",
"source": null,
"generatedKeyName": "myobject",
"sourceContext": "/document",
"inputs": [
{
"name": "metadata_storage_name",
"source": "/document/metadata_storage_name"
},
{
"name": "metadata_storage_path",
"source": "/document/metadata_storage_path"
},
{
"name": "content",
"source": "/document/content"
},
{
"name": "keyPhrases",
"source": "/document/merged_content/keyphrases/*"
},
{
"name": "entities",
"source": "/document/merged_content/entities/*/name"
},
{
"name": "ocrText",
"source": "/document/normalized_images/*/text"
},
{
"name": "ocrLayoutText",
"source": "/document/normalized_images/*/layoutText"
}
]
}
],
"files": []
}
]
}
Sonraki adımlar
Bu makalede projeksiyon şekillerinin kavramları ve ilkeleri açıklanmaktadır. Sonraki adım olarak, bunların tablo, nesne ve dosya projeksiyonları için desenlere nasıl uygulandığına bakın.