Azure AI Search'teki bilgi deposu "projeksiyonları"

Projeksiyonlar, bir azure yapay zeka arama zenginleştirme işlem hattından içerik kabul eden bir bilgi deposundaki fiziksel tabloları, nesneleri ve dosyaları tanımlar. Bilgi deposu oluşturuyorsanız, işin büyük bölümü projeksiyonları tanımlamak ve şekillendirmektir.

Bu makalede, kodlamaya başlamadan önce biraz arka planınız olması için projeksiyon kavramları ve iş akışı tanıtmaktadır.

Projeksiyonlar Azure Yapay Zeka Arama beceri kümelerinde tanımlanır, ancak son sonuçlar Azure Depolama tablo, nesne ve görüntü dosyası projeksiyonlarıdır.

Projections expressed in Azure Storage

Projeksiyon ve kullanım türleri

Bilgi deposu, Azure Depolama'da tabloların, JSON nesnelerinin veya ikili görüntü dosyalarının gevşek bir koleksiyonu olarak fiziksel olarak ifade edilen mantıksal bir yapıdır.

Yansıtma Depolama Kullanım
Tablolar Azure Tablo Depolaması Satır ve sütun olarak en iyi şekilde temsil edilen veriler için veya verilerinizin ayrıntılı temsillerine ihtiyacınız olduğunda (örneğin, veri çerçeveleri) kullanılır. Tablo projeksiyonları, şekil oluşturucu becerisi kullanarak şema haline getirilmiş bir şekil tanımlamanıza veya satır içi şekillendirme kullanarak sütunları ve satırları belirtmenize olanak sağlar. İçeriği, tanıdık normalleştirme ilkelerine göre birden çok tablo halinde düzenleyebilirsiniz. Aynı gruptaki tablolar otomatik olarak ilişkilidir.
Nesneler Azure Blob Storage Tek bir JSON belgesinde verilerinizin ve zenginleştirmelerinizin tam JSON gösterimine ihtiyacınız olduğunda kullanılır. Tablo projeksiyonlarında olduğu gibi, yalnızca geçerli JSON nesneleri nesne olarak yansıtılabilir ve şekillendirme bunu yapmanıza yardımcı olabilir.
Dosyalar Azure Blob Storage Normalleştirilmiş, ikili görüntü dosyalarını kaydetmeniz gerektiğinde kullanılır.

Projeksiyon tanımı

Projeksiyonlar, beceri kümesinin "knowledgeStore" özelliği altında belirtilir. Projeksiyon tanımları, azure Depolama zenginleştirilmiş içerikle nesne oluşturmak ve yüklemek için dizin oluşturucu çağrısı sırasında kullanılır. Bu kavramları bilmiyorsanız, giriş için yapay zeka zenginleştirmesi ile başlayın.

Aşağıdaki örnek, knowledgeStore altında projeksiyonların yerleştirilmesini ve temel yapıyı göstermektedir. Ad, tür ve içerik kaynağı bir projeksiyon tanımını oluşturur.

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
      {
        "tables": [
          { "tableName": "ks-museums-main", "generatedKeyName": "ID", "source": "/document/tableprojection" },
          { "tableName": "ks-museumEntities", "generatedKeyName": "ID","source": "/document/tableprojection/Entities/*" }
        ],
        "objects": [
          { "storageContainer": "ks-museums", "generatedKeyName": "ID", "source": "/document/objectprojection" }
        ],
        "files": [ ]
      }
    ]

Projeksiyon grupları

Projeksiyonlar karmaşık koleksiyonlardan oluşan bir dizidir. Bu, her türden birden çok küme belirtebileceğiniz anlamına gelir. Tek bir projeksiyon grubu yaygın olarak kullanılır, ancak depolama gereksinimleri farklı araçları ve senaryoları destekliyorsa birden çok tane kullanabilirsiniz. Örneğin, beceri kümesinin tasarımı ve hatalarını ayıklamak için bir grup kullanabilirsiniz; ikinci bir küme ise çevrimiçi uygulama için kullanılan çıkışı toplar ve üçüncüsü veri bilimi iş yükleri için kullanılır.

Projeksiyonlar altındaki tüm grupları doldurmak için aynı beceri kümesi çıkışı kullanılır. Aşağıdaki örnekte iki tane gösterilmektedir.

"knowledgeStore" : {
    "storageConnectionString": "DefaultEndpointsProtocol=https;AccountName=<Acct Name>;AccountKey=<Acct Key>;",
    "projections": [
        {
            "tables": [],
            "objects": [],
            "files": []
        }, 
        {
            "tables": [],
            "objects": [],
            "files": []
        }
    ]
}

Projeksiyon grupları, karşılıklı dışlama ve ilgililiğin aşağıdaki temel özelliklerine sahiptir.

İlke Açıklama
Karşılıklı münhasırlık Her grup, farklı veri şekillendirme senaryolarını desteklemek için diğer gruplardan tamamen yalıtılır. Örneğin, farklı tablo yapılarını ve birleşimlerini test ediyorsanız, her kümeyi AB testi için farklı bir projeksiyon grubuna koyabilirsiniz. Her grup aynı kaynaktan (zenginleştirme ağacı) veri alır, ancak tüm eş projeksiyon gruplarının tablo-nesne-dosya birleşiminden tamamen yalıtılır.
İlişkililik Projeksiyon grubu içinde tablolar, nesneler ve dosyalardaki içerik ilişkilidir. Bilgi deposu, ortak bir üst düğüme başvuru noktası olarak oluşturulan anahtarları kullanır. Örneğin, resim ve metin içeren bir belgeniz olduğu bir senaryo düşünün. Metni tablolara, görüntüleri ikili dosyalara yansıtabilirsiniz ve hem tablolar hem de nesneler dosya URL'sini içeren bir sütuna/özelliğe sahiptir.

Projeksiyon "kaynak"

Kaynak parametresi, projeksiyon tanımının üçüncü bileşenidir. Projeksiyonlar yapay zeka zenginleştirme işlem hattındaki verileri depoladığı için projeksiyonun kaynağı her zaman bir becerinin çıktısı olur. Bu nedenle, çıktı tek bir alan (örneğin, çevrilmiş metin alanı) olabilir, ancak genellikle bir veri şekline başvuru olur.

Veri şekilleri beceri takımınızdan gelir. Azure AI Search'te sağlanan tüm yerleşik beceriler arasında, veri şekilleri oluşturmak için kullanılan Şekillendirici becerisi adlı bir yardımcı program becerisi vardır. Bilgi deposundaki projeksiyonları desteklemek için Shaper becerileri (ihtiyacınız olduğu kadar çok) ekleyebilirsiniz.

Şekiller genellikle tablo projeksiyonlarında kullanılır; burada şekil yalnızca tabloya hangi satırların gideceğini değil, aynı zamanda hangi sütunların oluşturulduğunu da belirtir (bir şekli nesne projeksiyonuna da geçirebilirsiniz).

Şekiller karmaşık olabilir ve bunları burada ayrıntılı olarak tartışmak kapsam dışındadır, ancak aşağıdaki örnekte temel bir şekil kısaca gösterilmiştir. Shaper becerisinin çıkışı, tablo projeksiyonunun kaynağı olarak belirtilir. Tablo projeksiyonunun içinde, şekilde belirtildiği gibi "metadata-storage_path", "reviews_text", "reviews_title" gibi sütunlar yer alır.

{
    "@odata.type": "#Microsoft.Skills.Util.ShaperSkill",
    "name": "ShaperForTables",
    "description": null,
    "context": "/document",
    "inputs": [
        {
            "name": "metadata_storage_path",
            "source": "/document/metadata_storage_path",
            "sourceContext": null,
            "inputs": []
        },
        {
          "name": "reviews_text",
          "source": "/document/reviews_text"
        }, 
        {
          "name": "reviews_title",
          "source": "/document/reviews_title"
        },
        {
          "name": "reviews_username",
          "source": "/document/reviews_username"
        },
    ],
    "outputs": [
      {
        "name": "output",
        "targetName": "mytableprojection"
      }
    ]
}

Projeksiyon yaşam döngüsü

Projeksiyonlar, veri kaynağınızdaki kaynak verilere bağlı bir yaşam döngüsüne sahiptir. Kaynak veriler güncelleştirildikçe ve yeniden dizinlendikçe projeksiyonlar zenginleştirmelerin sonuçlarıyla güncelleştirilir ve projeksiyonlarınızın sonunda veri kaynağınızdaki verilerle tutarlı olmasını sağlar. Ancak projeksiyonlar azure Depolama bağımsız olarak depolanır. Dizin oluşturucu veya arama hizmetinin kendisi silindiğinde silinmez.

Uygulamalarda kullanma

Dizin oluşturucu çalıştırıldıktan sonra projeksiyonlara bağlanın ve diğer uygulama ve iş yüklerindeki verileri kullanın.

  • Azure portalını kullanarak Azure Depolama'da nesne oluşturmayı ve içeriği doğrulayın.

  • Veri keşfi için Power BI'i kullanın. Bu araç, veriler Azure Tablo Depolama olduğunda en iyi şekilde çalışır. Power BI'da verileri sorgulayıp analiz etmek daha kolay olan yeni tablolar halinde işleyebilirsiniz.

  • Veri bilimi işlem hattında blob kapsayıcısında zenginleştirilmiş verileri kullanma. Örneğin, bloblardan pandas DataFrame'e veri yükleyebilirsiniz.

  • Son olarak, verilerinizi bilgi deposundan dışarı aktarmanız gerekiyorsa, Azure Data Factory'nin verileri dışarı aktarmak ve istediğiniz veritabanına getirmek için bağlayıcıları vardır.

Kullanmaya başlamak için denetim listesi

Projeksiyonların bilgi depolarına özel olduğunu ve arama dizinini yapılandırmak için kullanılmadığını hatırlayın.

  1. Azure Depolama'da Erişim Anahtarları'ndan bir bağlantı dizesi alın ve hesabın Depolama V2 (genel amaçlı V2) olduğunu doğrulayın.

  2. Azure Depolama'dayken kapsayıcılardaki ve tablolardaki mevcut içerik hakkında bilgi edinerek projeksiyonlar için uyumlu olmayan adlar seçmenizi sağlayın. Bilgi deposu, tablo ve kapsayıcılardan oluşan gevşek bir koleksiyondur. İlgili nesneleri izlemek için bir adlandırma kuralı benimsemeyi göz önünde bulundurun.

  3. Azure AI Search'te dizin oluşturucuda zenginleştirme önbelleğini (önizleme) etkinleştirin ve ardından beceri kümesini yürütmek ve önbelleği doldurmak için dizin oluşturucuyu çalıştırın. Bu bir önizleme özelliğidir, bu nedenle dizin oluşturucu isteğinde önizleme REST API'sini (api-version=2020-06-30-preview veya üzeri) kullandığınızdan emin olun. Önbellek doldurulduktan sonra, bilgi deposundaki projeksiyon tanımlarını ücretsiz olarak değiştirebilirsiniz (becerilerin kendileri değiştirilmediği sürece).

  4. Kodunuzda tüm projeksiyonlar yalnızca beceri kümesinde tanımlanır. Projeksiyonlar için geçerli dizin oluşturucu özelliği (alan eşlemeleri veya çıkış alanı eşlemeleri gibi) yoktur. Beceri kümesi tanımında iki alana odaklanacaksınız: knowledgeStore özelliği ve beceri dizisi.

    1. knowledgeStore altında bölümünde tablo, nesne, dosya projeksiyonları projections belirtin. Nesne türü, nesne adı ve miktar (tanımladığınız projeksiyon sayısına göre) bu bölümde belirlenir.

    2. Beceri dizisinden her projeksiyonda source hangi beceri çıkışlarına başvurulması gerektiğini belirleyin. Tüm projeksiyonların bir kaynağı vardır. Kaynak, bir yukarı akış becerisinin çıkışı olabilir, ancak genellikle bir Shaper becerisinin çıkışıdır. Projeksiyonunuzun bileşimi şekiller aracılığıyla belirlenir.

  5. Mevcut bir beceri kümesine projeksiyonlar ekliyorsanız beceri kümesini güncelleştirin ve dizin oluşturucuyu çalıştırın.

  6. Azure Depolama'de sonuçlarınızı denetleyin. Sonraki çalıştırmalarda, Azure Depolama'daki nesneleri silerek veya beceri kümesindeki proje adlarını değiştirerek çakışmaları adlandırmaktan kaçının.

  7. Tablo projeksiyonları kullanıyorsanız, veri gereksinimlerinizin Tablo depolama belgelenen sınırları içinde olduğundan emin olmak için Tablo Hizmeti veri modelini ve Tablo depolama için ölçeklenebilirlik ve performans hedeflerini anlama'yı denetleyin.

Sonraki adımlar

Her projeksiyon türü için söz dizimini ve örnekleri gözden geçirin.