Azure AI Search'te dizinleri arama

Azure AI Search'te arama dizini, dizin oluşturma, tam metin araması, vektör araması, karma arama ve filtrelenmiş sorgular için arama motoru tarafından kullanılabilen aranabilir içeriğinizdir. Dizin bir şema tarafından tanımlanır ve ikinci adım olarak veri içeri aktarma işlemiyle arama hizmetine kaydedilir. Bu içerik, modern arama uygulamalarında beklenen milisaniyelik yanıt süreleri için gerekli olan birincil veri depolarınızın dışında arama hizmetinizde bulunur. Dizin oluşturucu temelli dizin oluşturma senaryoları dışında, arama hizmeti hiçbir zaman kaynak verilerinize bağlanmaz veya bu verileri sorgulamaz.

Arama dizini oluşturmak ve yönetmek istiyorsanız, bu makale aşağıdaki noktaları anlamanıza yardımcı olur:

  • İçerik (belgeler ve şema)
  • Fiziksel veri yapısı
  • Temel işlemler

Hemen uygulamalı olmak mı tercih ediyorsunuz? Bunun yerine bkz . Arama dizini oluşturma.

Arama dizini şeması

Azure AI Search'te dizinler arama belgeleri içerir. Kavramsal olarak, belge dizininizdeki aranabilir verilerin tek bir birimidir. Örneğin, bir satıcının her ürün için bir belgesi olabilir, haber kuruluşunun her makale için bir belgesi olabilir, bir seyahat sitesinde her otel ve hedef için bir belge vb. olabilir. Bu kavramları daha tanıdık veritabanı eşdeğerleriyle eşleme: arama dizini bir tabloya eşittir ve belgeler kabaca tablodaki satırlarla eşdeğerdir.

Bir belgenin yapısı, aşağıdaki örnekte gösterildiği gibi dizin şeması tarafından belirlenir. "alanlar" koleksiyonu genellikle bir dizinin en büyük bölümüdür; burada her alan adlandırılır, bir veri türü atanır ve nasıl kullanıldığını belirleyen izin verilen davranışlarla ilişkilendirilir.

{
  "name": "name_of_index, unique across the service",
  "fields": [
    {
      "name": "name_of_field",
      "type": "Edm.String | Collection(Edm.String) | Collection(Edm.Single) | Edm.Int32 | Edm.Int64 | Edm.Double | Edm.Boolean | Edm.DateTimeOffset | Edm.GeographyPoint",
      "searchable": true (default where applicable) | false (only Edm.String and Collection(Edm.String) fields can be searchable),
      "filterable": true (default) | false,
      "sortable": true (default where applicable) | false (Collection(Edm.String) fields cannot be sortable),
      "facetable": true (default where applicable) | false (Edm.GeographyPoint fields cannot be facetable),
      "key": true | false (default, only Edm.String fields can be keys),
      "retrievable": true (default) | false,
      "analyzer": "name_of_analyzer_for_search_and_indexing", (only if 'searchAnalyzer' and 'indexAnalyzer' are not set)
      "searchAnalyzer": "name_of_search_analyzer", (only if 'indexAnalyzer' is set and 'analyzer' is not set)
      "indexAnalyzer": "name_of_indexing_analyzer", (only if 'searchAnalyzer' is set and 'analyzer' is not set)
      "normalizer":  "name_of_normalizer", (applies to fields that are filterable)
      "synonymMaps": "name_of_synonym_map", (optional, only one synonym map per field is currently supported)
      "dimensions": "number of dimensions used by an emedding models", (applies to vector fields only, of type Collection(Edm.Single))
      "vectorSearchProfile": "name_of_vector_profile" (indexes can have many configurations, a field can use just one)
    }
  ],
  "suggesters": [ ],
  "scoringProfiles": [ ],
  "analyzers":(optional)[ ... ],
  "charFilters":(optional)[ ... ],
  "tokenizers":(optional)[ ... ],
  "tokenFilters":(optional)[ ... ],
  "defaultScoringProfile": (optional) "...",
  "corsOptions": (optional) { },
  "encryptionKey":(optional){ },
  "semantic":(optional){ },
  "vectorSearch":(optional){ }
}

Diğer öğeler kısa olması için daraltılır, ancak aşağıdaki bağlantılar ayrıntıları sağlar:

  • önericiler , otomatik tamamlama gibi önceden yazılan sorguları destekler.
  • scoringProfiles , ilgi ayarı için kullanılır.
  • çözümleyiciler , dizeleri dil kurallarına veya çözümleyici tarafından desteklenen diğer özelliklere göre belirteçler halinde işlemek için kullanılır.
  • corsOptions veya Çıkış noktaları arası uzaktan betik (CORS), farklı etki alanlarından istekler veren uygulamalar için kullanılır.
  • encryptionKey , dizindeki hassas içeriğin çift şifrelemesini yapılandırıyor.
  • semantik , tam metin ve karma aramada anlamsal yeniden boyutlandırmayı yapılandırır.
  • vectorSearch , vektör alanlarını ve sorgularını yapılandırıyor.

Alan tanımları

Arama belgesi, Dizin Oluşturma isteğinin gövdesindeki "alanlar" koleksiyonu tarafından tanımlanır. Belge tanımlama (anahtarlar), aranabilir metinleri depolamak için alanlar ve destekleyici filtreler, modeller ve sıralama alanları gerekir. Ayrıca, bir kullanıcının hiç görmediği veriler için alanlara da ihtiyacınız olabilir. Örneğin, bir puanlama profilinde arama puanını artırmak için kullanabileceğiniz kar marjları veya pazarlama promosyonları alanlarını isteyebilirsiniz.

Gelen veriler doğası gereği hiyerarşikse, bunu iç içe yapılar için kullanılan karmaşık bir tür olarak bir dizin içinde temsil edebilirsiniz. Oteller adlı yerleşik örnek veri kümesi, her otelle bire bir ilişkisi olan bir Adres (birden çok alt alan içerir) ve her otelle birden çok odanın ilişkilendirildiği Rooms karmaşık koleksiyonu kullanan karmaşık türleri gösterir.

Alan öznitelikleri

Alan öznitelikleri, alanın tam metin aramasında, modelli gezintide, sıralama işlemlerinde vb. nasıl kullanıldığını belirler.

Dize alanları genellikle "aranabilir" ve "alınabilir" olarak işaretlenir. Arama sonuçlarını daraltmak için kullanılan alanlar arasında "sıralanabilir", "filtrelenebilir" ve "modellenebilir" yer alır.

Öznitelik Açıklama
"aranabilir" Tam metin veya vektör aranabilir. Metin alanları, dizin oluşturma sırasında sözcük kesme gibi sözcük temelli analizlere tabidir. Aranabilir bir alanı "güneşli gün" gibi bir değere ayarlarsanız, dahili olarak "güneşli" ve "gün" belirteçlerine ayrılır. Ayrıntılar için bkz. Tam metin araması nasıl çalışır?
"filtrelenebilir" $filter sorgularında başvurulur. Türünde Edm.String filtrelenebilir alanlar veya Collection(Edm.String) sözcük bölme işlemine tabi tutulmaz, bu nedenle karşılaştırmalar yalnızca tam eşleşmeler içindir. Örneğin, f alanını "güneşli gün" olarak ayarlarsanız eşleşme $filter=f eq 'sunny' bulunmaz ancak $filter=f eq 'sunny day' bulur.
"sıralanabilir" Varsayılan olarak sistem sonuçları puana göre sıralar, ancak belgelerdeki alanlara göre sıralamayı yapılandırabilirsiniz. Tür Collection(Edm.String) alanları "sıralanabilir" olamaz.
"modellenebilir" Genellikle kategoriye göre (örneğin, belirli bir şehirdeki oteller) isabet sayısını içeren bir arama sonuçları sunumunda kullanılır. Bu seçenek türünde Edm.GeographyPointalanlarla kullanılamaz. Filtrelenebilir, "sıralanabilir" veya "modellenebilir" türdeki Edm.String alanlar en fazla 32 kilobayt uzunluğunda olabilir. Ayrıntılar için bkz. Dizin Oluşturma (REST API’si).
"key" Dizin içindeki belgeler için benzersiz tanımlayıcı. Anahtar alan olarak tam olarak bir alan seçilmeli ve Edm.String türünde olmalıdır.
"alınabilir" Alanın bir arama sonucunda döndürülüp döndürülemeyeceğini belirler. Bu, bir alanı (kar marjı gibi) filtre, sıralama veya puanlama mekanizması olarak kullanmak istediğinizde, ancak alanın son kullanıcıya görünür olmasını istemediğinizde kullanışlıdır. Bu öznitelik, key alanları için true olmalıdır.

İstediğiniz zaman yeni alanlar ekleyebilseniz de, dizinin ömrü boyunca mevcut alan tanımları kilitlenir. Bu nedenle geliştiriciler genellikle basit dizinler oluşturmak, fikirleri test etmek veya portal sayfalarını kullanarak bir ayarı bulmak için portalı kullanır. Dizini kolayca yeniden derleyebilmeniz için kod tabanlı bir yaklaşım izlerseniz, bir dizin tasarımı çerçevesinde sık sık yapılan yineleme daha verimli olur.

Not

Dizin oluşturmak için kullandığınız API'ler farklı varsayılan davranışlara sahiptir. REST API'leri için çoğu öznitelik varsayılan olarak etkindir (örneğin, "aranabilir" ve "alınabilir" dize alanları için geçerlidir) ve bunları genellikle yalnızca kapatmak istiyorsanız ayarlamanız gerekir. .NET SDK'sı için tam tersi doğrudur. Açıkça ayarlamadığınız herhangi bir özellikte, özellikle etkinleştirmediğiniz sürece ilgili arama davranışını devre dışı bırakmak varsayılandır.

Fiziksel yapı ve boyut

Azure AI Search'te bir dizinin fiziksel yapısı büyük ölçüde bir iç uygulamadır. Şemasına erişebilir, içeriğini sorgulayabilir, boyutunu izleyebilir ve kapasiteyi yönetebilirsiniz, ancak kümelerin kendileri (dizinler, parçalar ve diğer dosya ve klasörler) Microsoft tarafından dahili olarak yönetilir.

Dizin boyutunu Azure portalındaki Dizinler sekmesinden veya arama hizmetinize bir GET INDEX isteği vererek izleyebilirsiniz. Ayrıca bir Hizmet İstatistikleri isteği gönderebilir ve depolama boyutunun değerini de de kontrol edebilirsiniz.

Dizinin boyutu şu şekilde belirlenir:

  • Belgelerinizin miktarı ve bileşimi
  • Tek tek alanlardaki öznitelikler
  • Dizin yapılandırması (özellikle, öneri oluşturucuları dahil edip etmediğiniz)

Belge oluşturma ve miktar, içeri aktarmayı seçtiğiniz öğelere göre belirlenir. Bir arama dizininin yalnızca aranabilir içerik içermesi gerektiğini unutmayın. Kaynak veriler ikili alanlar içeriyorsa, metin aranabilir bilgileri oluşturmak için içeriği çözmek ve analiz etmek için yapay zeka zenginleştirmesi kullanmadığınız sürece bu alanları atın.

Alan öznitelikleri davranışları belirler. Bu davranışları desteklemek için dizin oluşturma işlemi gerekli veri yapılarını oluşturur. Örneğin , "aranabilir" türünde Edm.Stringbir alan için, belirteçli terim için ters dizinleri tarayan tam metin aramasını çağırır. Buna karşılık, "filtrelenebilir" veya "sıralanabilir" özniteliği değiştirilmemiş dizeler üzerinde yinelemeyi destekler. Sonraki bölümdeki örnekte, seçilen özniteliklere göre dizin boyutundaki varyasyonlar gösterilmektedir.

Önericiler , önceden yazılan veya otomatik tamamlama sorgularını destekleyen yapılardır. Bu nedenle, bir önericisi eklediğinizde, dizin oluşturma işlemi ayrıntılı karakter eşleşmeleri için gerekli veri yapılarını oluşturur. Önericiler alan düzeyinde uygulanır, bu nedenle yalnızca önceden yazma için makul olan alanları seçin.

Özniteliklerin ve önericilerin depolama etkilerini gösteren örnek

Aşağıdaki ekran görüntüsünde çeşitli öznitelik birleşimlerinden kaynaklanan dizin depolama desenleri gösterilmektedir. Dizin, verileri içeri aktarma sihirbazını ve yerleşik örnek verileri kullanarak kolayca oluşturabileceğiniz gayrimenkul örnek dizinini temel alır. Dizin şemaları gösterilmese de, dizin adına göre öznitelikleri çıkarabilirsiniz. Örneğin, realestate-searchable dizininde "aranabilir" özniteliği seçilidir ve başka hiçbir şey seçilmez; realestate-retrievable dizininde "alınabilir" özniteliği seçilidir ve başka hiçbir şey seçilmez ve başka bir şey yoktur.

Index size based on attribute selection

Bu dizin değişkenleri biraz yapay olsa da özniteliklerin depolamayı nasıl etkilediğine ilişkin kapsamlı karşılaştırmalar için bunlara başvurabiliriz:

  • "alınabilir" ifadesinin dizin boyutu üzerinde hiçbir etkisi yoktur.
  • "filterable", "sortable", "facetable" daha fazla depolama alanı tüketir.
  • önericisi , dizin boyutunu artırma potansiyeline sahiptir, ancak ekran görüntüsünde belirtildiği kadar büyük değildir (çoğu dizinde olası bir senaryo olmayan, öneride bulunanın algılandığı tüm alanlar seçilmiştir).

Ayrıca önceki tabloya yansıtılmayan, çözümleyicilerin etkisidir. Tam karakter dizilerini (a, ab, abc, abcd ) depolamak için edgeNgram belirteci kullanırsanız, dizin standart çözümleyiciyi kullandığınızdan daha büyüktür.

Temel işlemler ve etkileşim

Artık dizinin ne olduğu hakkında daha iyi bir fikriniz olduğuna göre, bu bölüm tek bir dizine bağlanma ve dizinin güvenliğini sağlama da dahil olmak üzere dizin çalışma zamanı işlemlerini tanıtır.

Not

Bir dizini yönetirken, bir dizini taşımak veya kopyalamak için portal veya API desteği olmadığını unutmayın. Bunun yerine, müşteriler genellikle uygulama dağıtım çözümünü farklı bir arama hizmetine yönlendirir (aynı dizin adını kullanıyorsa) veya geçerli arama hizmetinde bir kopya oluşturmak için adı düzeltip oluşturun.

Dizin yalıtımı

Azure AI Search'te, dizinle ilgili tüm işlemlerin tek bir dizini hedeflediği tek bir dizinle çalışırsınız. dizin oluşturma veya sorgulama için ilgili dizinler veya bağımsız dizinlerin birlenmesi kavramı yoktur.

Sürekli kullanılabilir

dizin, ilk belge dizine eklendiğinde sorgular için hemen kullanılabilir, ancak tüm belgeler dizine alınana kadar tam olarak çalışmaz. Dahili olarak, bir arama dizini bölümler arasında dağıtılır ve çoğaltmalarda yürütülür. Fiziksel dizin dahili olarak yönetilir. Mantıksal dizin sizin tarafınızdan yönetilir.

Dizin, duraklatma veya çevrimdışı duruma getirme özelliği olmadan sürekli olarak kullanılabilir. Sürekli işlem için tasarlandığından içeriğindeki tüm güncelleştirmeler veya dizinin kendisine yapılan eklemeler gerçek zamanlı olarak gerçekleşir. Sonuç olarak, bir istek belge güncelleştirmesi ile çakışırsa sorgular geçici olarak tamamlanmamış sonuçlar döndürebilir.

Belge işlemleri (yenileme veya silme) ve geçerli dizinin mevcut yapısını ve bütünlüğünü (yeni alanlar ekleme gibi) etkilemeyen değişiklikler için sorgu sürekliliğinin mevcut olduğuna dikkat edin. Yapısal güncelleştirmeler yapmanız gerekiyorsa (var olan alanları değiştirme), bunlar genellikle geliştirme ortamında bir bırakma ve yeniden oluşturma iş akışı kullanılarak veya üretim hizmetinde dizinin yeni bir sürümü oluşturularak yönetilir.

Dizin yeniden derlemesini önlemek için, küçük değişiklikler yapan bazı müşteriler önceki sürümle birlikte bir arada bulunan yeni bir alan oluşturarak bir alanı "sürüm" olarak seçer. Zaman içinde bu, özellikle çoğaltması pahalı olan bir üretim dizininde eski alanlar veya eski özel çözümleyici tanımları biçiminde yalnız bırakılmış içeriğe yol açar. Dizin yaşam döngüsü yönetiminin bir parçası olarak dizine yönelik planlı güncelleştirmelerde bu sorunları çözebilirsiniz.

Uç nokta bağlantısı ve güvenliği

Tüm dizin oluşturma ve sorgu istekleri bir dizini hedefler. Uç noktalar genellikle aşağıdakilerden biridir:

Uç nokta Bağlan ve erişim denetimi
<your-service>.search.windows.net/indexes Dizinler koleksiyonunu hedefler. Dizin oluştururken, listelerken veya silerken kullanılır. Bu işlemler için yönetici aracılığıyla kullanılabilen Yönetici hakları gereklidirAPI anahtarları veya Arama Katkıda Bulunanı rolü.
<your-service>.search.windows.net/indexes/<your-index>/docs Tek bir dizinin belge koleksiyonunu hedefler. Bir dizini veya veri yenilemeyi sorgularken kullanılır. Sorgular için okuma hakları yeterlidir ve sorgu API anahtarları veya veri okuyucu rolü aracılığıyla kullanılabilir. Veri yenileme için yönetici hakları gereklidir.
  1. Azure portalı ile başlayın. Azure aboneleri veya arama hizmetini oluşturan kişi Azure portalında arama hizmetini yönetebilir. Azure aboneliği, hizmet oluşturmak veya silmek için Katkıda Bulunan veya üzeri izinler gerektirir. Bu izin düzeyi, Azure portalında bir arama hizmetini tam olarak yönetmek için yeterlidir.

  2. Programlı erişim için diğer istemcileri deneyin. İlk adımlar için hızlı başlangıçları öneririz:

Sonraki adımlar

Azure AI Search için neredeyse tüm örnek veya kılavuzları kullanarak dizin oluşturma konusunda uygulamalı deneyim elde edebilirsiniz. Başlangıç olarak, içindekiler tablosundaki hızlı başlangıçlardan herhangi birini seçebilirsiniz.

Ancak, bir dizini verilerle yüklemeye yönelik yöntemler hakkında da bilgi sahibi olmak istersiniz. Dizin tanımı ve veri içeri aktarma stratejileri birlikte tanımlanır. Aşağıdaki makaleler, dizin oluşturma ve yükleme hakkında daha fazla bilgi sağlar.