Azure Yapay Zeka Arama'de dizinleri arama

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.

Azure Yapay Zeka Arama'te, arama dizini, yerel arama motoru tarafından dizin oluşturma, aracılı alma, tam metin arama, vektör araması, karma arama ve filtrelenmiş sorgular için erişilebilir olan arama hizmetindeki aranabilir içeriğinizdir. Dizin, ikinci adım olarak veri alımıyla birlikte arama hizmetinize kaydedilmiş bir şema tarafından tanımlanır. Dizine alınmış içerik, modern arama uygulamalarında beklenen milisaniyelik yanıt süreleri için gerekli olan birincil dış veri depolarınızın dışında arama hizmetinizde bulunur. Uzak aracısal alma ve dizin oluşturucu temelli dizin oluşturma senaryoları dışında, arama hizmeti hiçbir zaman dış kaynak verilerinize bağlanmaz veya bu verileri sorgulamaz.

Bu makale, arama dizini oluşturma ve yönetmeye yönelik temel kavramları kapsar; örneğin:

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

Tip

Hızlı özet:

  • Dizin, aranabilir içeriğinizi depolar
  • Şema alanları ve bunların davranışlarını tanımlar
  • Belgeler tek tek aranabilir öğelerdir (veritabanındaki satırlara benzer)
  • Dizin → oluşturmaya atla

Arama dizini şeması

Azure Yapay Zeka Arama dizinleri 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, üniversitenin her sınıf 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.

Aşağıda bir dizin şemasının nasıl göründüğüne bir örnek verilmiş.

{
  "name": "name_of_index, unique across the service",
  "description" : "Health plan coverage for standard and premium plans for Northwind and Contoso employees.",
  "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 (only Edm.String fields can be keys) | false (default where applicable),
      "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 embedding models" (applies to vector fields of type Collection(Edm.Single)),
      "vectorSearchProfile": "name_of_vector_profile" (indexes can have many configurations but 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){ }
}

fields koleksiyon genellikle en büyük bölümdür. Her alanın sorgu zamanında kullanımı belirleyen bir adı, veri türü ve öznitelikleri vardır.

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, alaka düzeyi ayarlaması 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 sıralamayı yapılandırır.
  • vectorSearch , vektör alanlarını ve sorgularını yapılandırıyor.

Alan tanımları

Arama belgesifields gövdesindeki koleksiyon 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. Hotels ö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 Odalar 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 searchable ve retrievable olarak işaretlenir.
  • Arama sonuçlarını daraltmak veya sıralamak için kullanılan alanlar , sortableve filterableolarak facetableişaretlenir.
Attribute Description
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. Ayrıntılar için bkz. Tam metin araması nasıl çalışır?
filtrelenebilir $filter sorgularında kullanılır. 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. "Güneşli gün" dizesi göz önüne alındığında $filter=f eq 'sunny' ile eşleşme bulunamaz, ancak $filter=f eq 'sunny day' eşleşir.
sıralanabilir Varsayılan olarak sistem bir arama puanına göre sıralar, ancak belgelerdeki alanlara göre açık bir sıralama yapılandırabilirsiniz. Tür Collection(Edm.String) alanları sıralanabilir olamaz.
fasetlenebilir 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 Edm.GeographyPoint alan tipindeki alanlarla 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 arama sonuçlarında belgenin bir parçası olarak döndürülip döndürülemeyeceğini gösterir. Bu özniteliğin false olarak ayarlanması, alanı döndürülen belge alanlarının dışında bırakır ve alan $select aracılığıyla istenemez. Bu ayar, dizine alınan içeriğe veya şema yapılandırmasına bağlı arama özelliklerinin iç kullanımını engellemez. Özellik yapılandırmasına bağlı olarak, alan içeriği veya türetilmiş bilgiler vurgulama, modeller, derecelendirme, filtreleme, sıralama veya diğer sorgu işleme gibi çıkışlara katkıda bulunabilir. Bu öznitelik, true alanları için key 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 bir ayarı aramak için Azure portal sayfalarını kullanmak için Azure portalını 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.

Note

Dizin oluşturmak için kullandığınız API'ler farklı varsayılan davranışlara sahiptir. REST API'leri için çoğu özellik varsayılan olarak etkindir (örneğin, string alanları için aranabilir ve alınabilir doğrudur) ve bunları genellikle yalnızca devre dışı bırakmak istiyorsanız ayarlamanız gerekir. .NET SDK'sı için tam tersi geçerlidir. 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.

Hassas alanlar için en iyi yöntemler

Bir alan hassas veya gizli bilgiler içeriyorsa:

  • Yalnızca uygulamanız için gereken , filterableveya facetablegibi searchablealan özniteliklerini etkinleştirin.
  • API veya SDK varsayılanlarına güvenmek yerine alan özniteliklerini açıkça yapılandırın.
  • Bir alanı belge sonuçlarının dışında tutarak tüm sorgu özellikleri veya yanıt biçimleri aracılığıyla açıklama yapılmasını önlediğini varsaymayın.
  • Hassas bilgileri arama dizininde depolamadan önce uygulama ve özellik gereksinimlerini gözden geçirin.

Fiziksel yapı ve boyut

Azure Yapay Zeka Arama'te, bir dizinin fiziksel yapısı büyük ölçüde dahili bir uygulamadır. Şemasına erişebilir, içeriğini yükleyip sorgulayabilir, boyutunu izleyebilir ve kapasitesini yönetebilirsiniz. Ancak Microsoft, arama hizmetinizle birlikte depolanan altyapıyı ve fiziksel veri yapılarını yönetir.

dizin boyutunu Azure portalındaki Search management > Indexes sayfasında izleyebilirsiniz. Alternatif olarak, depolama boyutunun değerini denetlemek için arama hizmetinize bir GET INDEXisteği veya Bir Hizmet İstatistikleri isteği yayımlayabilirsiniz.

Note

İçeriği etkin bir şekilde siliyorsanız dizin depolama alanı ve boyutu birkaç dakikada bir güncelleştirilir. Silme işlemi arka plan işlemi olarak çalışır. Ölçüm güncelleştirmelerinde küçük bir gecikme bekleyebilirsiniz.

Bir dizinin boyutu aşağıdakiler tarafından belirlenir:

  • Belgelerinizin miktarı ve bileşimi.
  • Tek tek alanlardaki öznitelikler: alınabilir özelliği dizininizi şişirmez, ancak filtrelenebilir, sıralanabilir ve yüzeylenebilir özellikler, belirteçlerle ayrıştırılmamış metinleri depolamak için daha fazla depolama alanı tüketir.
  • Dizin yapılandırması. Özellikle, önericileri veya özel çözümleyicileri dahil etme. 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.

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

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 çevrilmiş 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.

Önericiler , önceden yazılan veya otomatik tamamlama sorgularını destekleyen yapılardır. 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.

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 dahil olmak üzere dizin çalışma zamanı işlemlerini tanıtır.

Note

Dizini taşımak veya kopyalamak için portal veya API desteği yoktur. Genellikle, uygulama dağıtımınızı farklı bir arama hizmetine yönlendirirsiniz (aynı dizin adını kullanarak) veya geçerli arama hizmetinizde bir kopyasını oluşturmak için adı değiştirin ve ardından oluşturun.

Dizin yalıtımı

Azure Yapay Zeka Arama'da bir kerede bir dizinle çalışırsınız. Dizinle ilgili tüm işlemler tek bir dizini hedefler. dizin oluşturma veya sorgulama için ilgili dizinler veya bağımsız dizinlerin birlenmesi kavramı yoktur.

Sürekli kullanılabilir

İlk belge dizine eklendiğinde sorgular için bir dizin hemen kullanılabilir, ancak tüm belgeler dizine alınana kadar tam olarak çalışmaz. Dahili olarak, bir dizin bölümler arasında dağıtılır ve kopyalar üzerinde yürütülür. Fiziksel dizin dahili olarak yönetilir. Mantıksal dizini yönetirsiniz.

Dizin sürekli kullanılabilir ve duraklatılamaz veya çevrimdışına alınamaz. Sürekli işlem için tasarlandığından içeriğinde yapılan güncelleştirmeler ve dizine yapılan eklemeler gerçek zamanlı olarak gerçekleşir. bir istek belge güncelleştirmesiyle çakışıyorsa, sorgular geçici olarak eksik sonuçlar döndürebilir.

Yenileme veya silme gibi belge işlemleri ve yeni alanlar ekleme gibi bir dizinin mevcut yapısını veya bütünlüğünü etkilemeyen değişiklikler için sorgu sürekliliği vardır. Mevcut alanları değiştirme gibi yapısal güncelleştirmeler genellikle geliştirme ortamındaki bir bırakma ve yeniden derleme iş akışı kullanılarak veya üretim hizmetinde dizinin yeni bir sürümü oluşturularak yönetilir.

Dizin yeniden oluşturulmasını önlemek için, küçük değişiklikler yapan bazı müşteriler önceki bir sürümle birlikte var olan yeni bir alan oluşturarak bir alanı "sürümlemektedir". Zaman içinde, özellikle çoğaltılması pahalı olan bir üretim dizininde, eski alanlar ve eski özel çözümleyici tanımları nedeniyle başkasıyla ilişkisi kalmamış içeriğe yol açar. Dizin yaşam döngüsü yönetiminin bir parçası olarak dizinde planlı güncelleştirmeler sırasında 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:

Endpoint Bağlantı 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 hakları gereklidir ve yönetici API anahtarları veya Arama Katkıda Bulunanı rolü aracılığıyla kullanılabilir.
<your-service>.search.windows.net/indexes/<your-index>/docs Tek bir endeksin belge koleksiyonunu hedefler. Bir dizini veya veri yenilemeyi sorgularken kullanılır. Sorgular için okuma hakları yeterlidir ve sorgu API'si anahtarları veya veri okuyucu rolü aracılığıyla kullanılabilir. Veri yenileme için yönetici hakları gereklidir.

Dizine bağlanma

  1. Azure portalı ve arama hizmeti panonuzla başlayın.

  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 Yapay Zeka Arama için neredeyse tüm örnek veya kılavuzları kullanarak dizin oluşturma deneyimi 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.