Azure AI Search'te dizin projeksiyonları

Önemli

Dizin projeksiyonları, ek kullanım koşulları altında genel önizleme aşamasındadır. Özelliği içerecek şekilde güncelleştirilen Azure portalı, 2023-10-01-Preview REST API'leri, Azure portalı ve beta istemci kitaplıkları aracılığıyla kullanılabilir.

Dizin projeksiyonları , bir zenginleştirme işlem hattındaki içeriğin birden çok dizini hedeflediği bire çok dizin desenini destekleyen ikincil bir dizinin şeklini tanımlayan beceri kümesi tanımının bir bileşenidir.

Dizin projeksiyonları, zenginleştirme işlem hattı tarafından oluşturulan yapay zekayla zenginleştirilmiş içeriği alır ve bunu arama hizmetinizde ikincil dizine (dizin oluşturucunun varsayılan olarak hedeflediği dizinden farklı) dizinler. Dizin projeksiyonları, verileri dizine eklemeden önce, zenginleştirilmiş öğeler dizisini hedef dizinde birden çok arama belgesine (diğer adıyla "bire çok" dizin oluşturma) benzersiz olarak ayırmanıza olanak sağlayacak şekilde yeniden şekillendirmenize de olanak tanır. "Bire çok" dizin oluşturma, kırpılmamış içerik için birincil dizin ve öbeklenmiş için ikincil dizin isteyebileceğiniz veri öbekleme senaryoları için yararlıdır.

Geçmişte bilişsel becerileri kullandıysanız beceri kümelerinin zenginleştirilmiş içerik oluşturduğunu zaten biliyorsunuzdur. Beceri kümeleri, varlıkları tanıma veya metin çevirme gibi atomik dönüşümleri çağıran bir zenginleştirme dizisi aracılığıyla belgeyi taşır. Varsayılan olarak, beceri kümesi içinde işlenen bir belge, arama dizinindeki tek bir belgeyle eşler. Bu, bir giriş metninin öbeklemesi ve ardından her öbek üzerinde zenginleştirmeler gerçekleştirmeniz durumunda outputFieldMappings ile eşlendiğinde dizindeki sonucun oluşturulan zenginleştirmelerin bir dizisi olduğu anlamına gelir. Dizin projeksiyonlarıyla, zenginleştirilmiş verilerin her bir öbeklerini kendi arama belgesine eşlemek için bir bağlam tanımlarsınız. Bu, belgenin zenginleştirilmiş verilerini arama dizinine bire çok eşlemesi uygulamanızı sağlar.

Dizin projeksiyonları tanımı

Dizin projeksiyonları bir beceri kümesi tanımı içinde tanımlanır ve öncelikle her seçicinin arama hizmetindeki farklı bir hedef dizine karşılık geldiği bir seçici dizisi olarak tanımlanır. Her seçici, tanımının bir parçası olarak aşağıdaki parametreleri gerektirir:

  • targetIndexName: Dizin projeksiyon veri dizininin içine girdiği arama hizmetindeki dizinin adı.
  • parentKeyFieldName: Hedef dizinde üst belge için anahtarın değerini içeren alanın adı.
  • sourceContext: Verilerin tek tek arama belgelerine eşlendiği ayrıntı düzeyini tanımlayan zenginleştirme ek açıklaması. Daha fazla bilgi için bkz . Beceri bağlamı ve giriş ek açıklaması dili.
  • mappings: Zenginleştirilmiş verilerin arama dizinindeki alanlara eşlendiği bir dizi. Her eşleme şunlardan oluşur:
    • name: Arama dizinindeki verilerin dizine alınması gereken alanın adı,
    • source: Verilerin çekilmesi gereken zenginleştirme ek açıklaması yolu.

Her mapping bir kullanıcı, bilgi deposuna veya Şekillendirici Becerisine benzer şekilde isteğe bağlı sourceContext ve inputs alanla özyinelemeli olarak veri tanımlayabilir. Bu parametreler, arama dizinindeki türdeki Edm.ComplexType alanlara dizinlenecek verileri şekillendirmenize olanak sağlar.

parametresinde targetIndexName tanımlanan dizin aşağıdaki gereksinimlere sahiptir:

  • Dizin projeksiyonları tanımını içeren beceri kümesi oluşturulmadan önce arama hizmetinde önceden oluşturulmuş olması gerekir.
  • parametresinde parentKeyFieldName tanımlanan ada sahip bir alan içermelidir. Bu alan türünde Edm.Stringolmalı, anahtar alanı olamaz ve filtrelenebilir değeri true olarak ayarlanmalıdır.
  • Anahtar alanının aranabilir değeri true olarak ayarlanmalıdır ve çözümleyici ile keyword tanımlanmalıdır.
  • içinde tanımlanan her biri nameiçin tanımlanmış mappingsalanlar olmalıdır ve bunların hiçbiri anahtar alanı olamaz.

Aşağıda, ayrı ayrı sayfaların çıkışını Split becerisine göre arama dizininde kendi belgeleri olarak yansıtmak için kullanabileceğiniz dizin projeksiyonları tanımı için örnek bir yük verilmiştir.

"indexProjections": {
    "selectors": [
        {
            "targetIndexName": "myTargetIndex",
            "parentKeyFieldName": "ParentKey",
            "sourceContext": "/document/pages/*",
            "mappings": [
                {
                    "name": "chunk",
                    "source": "/document/pages/*"
                }
            ]
        }
    ]
}

Üst belgeleri işleme

Dizin projeksiyonları, beceri kümesi aracılığıyla çalışan her "üst" belge için etkili bir şekilde "alt" belgeler oluşturduğundan, "üst" belgelerin dizinlemeyi nasıl işleneceğini öğrenmek için aşağıdaki seçeneklere de sahip olursunuz.

  • Üst ve alt belgeleri ayrı dizinlerde tutmak için, dizin oluşturucu tanımınız için öğesinin targetIndexName dizin projeksiyon seçicinizde tanımlanandan targetIndexName farklı olduğundan emin olmanız gerekir.

  • Üst ve alt belgeleri aynı dizinde dizine almak için, hedef dizin şemasının hem tanımlı fieldMappings hem de dizin oluşturucu tanımınızda ve outputFieldMappings dizin projeksiyon seçicinizde çalıştığından mappings emin olmanız gerekir. Daha sonra dizin oluşturucu tanımınız ve dizin projeksiyon seçiciniz için aynı targetIndexName değeri sağlamanız gerekir.

  • Üst belgeleri yoksaymak ve yalnızca alt belgeleri dizine almak için yine de dizin oluşturucu tanımınızda bir targetIndexName sağlamanız gerekir (dizin projeksiyon seçicisi için yaptığınızla aynı değeri sağlayabilirsiniz). Ardından tanımınızın selectors yanında, burada gösterildiği gibi anahtarı olarak skipIndexingParentDocumentsayarlanmış ayrı parameters bir projectionMode nesne tanımlayın:

    "indexProjections": {
        "selectors": [
            ...
        ],
        "parameters": {
            "projectionMode": "skipIndexingParentDocuments"
        }
    }
    

REST API sürümü 2023-10-01-Preview , beceri kümesine yapılan eklemeler aracılığıyla dizin projeksiyonları oluşturmak için kullanılabilir.

İçerik yaşam döngüsü

Dizin oluşturucu veri kaynağı değişiklik izleme ve silme algılamayı destekliyorsa, dizin oluşturma işlemi bu değişiklikleri almak için birincil ve ikincil dizinleri eşitleyebilir.

Dizin oluşturucuyu ve beceri kümesini her çalıştırdığınızda, beceri kümesi veya temel alınan kaynak veriler değiştiyse dizin projeksiyonları güncelleştirilir. Dizin oluşturucu tarafından alınan tüm değişiklikler, zenginleştirme işlemi aracılığıyla dizindeki projeksiyonlara yayılır ve yansıtılan verilerinizin kaynak veri kaynağındaki içeriğin geçerli bir gösterimi olduğundan emin olur.

Dekont

Dizin gönderme API'sini kullanarak öngörülen belgelerdeki verileri el ile düzenleyebilmenize karşın, kaynak verilerdeki belgenin güncelleştirilmiş olduğu varsayılarak, sonraki işlem hattı çağrısında tüm düzenlemelerin üzerine yazılır.

Öngörülen anahtar değeri

Her dizin projeksiyon belgesi, benzersizliği sağlamak ve değişiklik ve silme izlemenin düzgün çalışmasını sağlamak için dizin oluşturucunun oluşturduğu benzersiz bir tanımlayıcı anahtar içerir. Bu anahtar aşağıdaki kesimleri içerir:

  • Benzersizliği garanti etmek için rastgele karma. Üst belge dizin oluşturucu çalıştırmaları arasında güncelleştirilirse bu karma değişir.
  • Üst belgenin anahtarı.
  • Belgenin oluşturulduğu bağlamı tanımlayan zenginleştirme ek açıklaması yolu.

Örneğin, anahtar değeri "123" olan bir üst belgeyi dört sayfaya bölerseniz ve sonra bu sayfaların her biri dizin projeksiyonları aracılığıyla kendi belgesi olarak yansıtılırsa, metnin üçüncü sayfasının anahtarı "01f07abfe7ed_123_pages_2" gibi görünür. Üst belge daha sonra beşinci sayfa ekleyecek şekilde güncelleştirilirse, yansıtma verilerinin geri kalanı değişmese bile dizin oluşturucu arasındaki rastgele karma değeri değiştiğinden üçüncü sayfanın yeni anahtarı "9d800bdacc0e_123_pages_2" olabilir.

Değişiklikler veya eklemeler

Bir üst belge, öngörülen dizin belgesindeki veriler değişecek şekilde değiştirilirse (örneğin, belirli bir sayfada bir sözcük değiştirildiyse ancak net yeni sayfa eklenmiyorsa), söz konusu projeksiyon için hedef dizindeki veriler bu değişikliği yansıtacak şekilde güncelleştirilir.

Bir üst belge, daha önce orada olmayan yeni öngörülen alt belgeler olacak şekilde değiştirilirse (örn. belgeye bir veya daha fazla sayfa değerinde metin eklenmişse), dizin oluşturucu bir sonraki çalıştırıldığında bu yeni alt belgeler eklenir.

Her iki durumda da, belirli içerikleri güncelleştirilmiş olup olmadığına bakılmaksızın, tüm öngörülen belgeler anahtarlarında yeni bir karma değere sahip olacak şekilde güncelleştirilir.

Silmeler

Üst belge, dizin projeksiyonları tarafından oluşturulan bir alt belgenin artık mevcut olmayacak şekilde değiştirilirse (örneğin, metin öncekinden daha az öbek olacak şekilde kısaltılırsa), arama dizinindeki ilgili alt belge silinir. Kalan alt belgeler, içeriği başka bir şekilde değişmese bile anahtarını yeni bir karma değeri içerecek şekilde güncelleştirilir.

Bir üst belge veri kaynağından tamamen silinirse, ilgili alt belgeler yalnızca silme işlemi veri kaynağı tanımında tanımlanan bir dataDeletionDetectionPolicy tarafından algılanırsa silinir. Yapılandırılmış bir dataDeletionDetectionPolicy belgeniz yoksa ve veri kaynağından bir üst belgeyi silmeniz gerekiyorsa, artık istenmiyorsa alt belgeleri el ile silmeniz gerekir.