Aracılığıyla paylaş


Azure AI Search için dizin oluşturucu sorun giderme kılavuzu

Dizin oluşturucular bazen hata üretmeyen veya kimlik doğrulaması veya bağlanırken olduğu gibi diğer Azure hizmetlerinde oluşan sorunlarla karşılaşır. Bu makale, size yol gösterecek ileti olmadığında dizin oluşturucu sorunlarını gidermeye odaklanır. Ayrıca dizin oluşturma sırasında kullanılan arama dışı kaynaklardan gelen hatalar için sorun giderme sağlar.

Not

Araştırmanız gereken bir Azure AI Search hatanız varsa bkz . Bunun yerine yaygın dizin oluşturucu hatalarını ve uyarılarını giderme.

Kısıtlı kaynaklarla bağlantı sorunlarını giderme

Azure ağ güvenliği kapsamındaki veri kaynakları için dizin oluşturucuların bağlantı kurma yöntemleri sınırlıdır. Şu anda dizin oluşturucular , paylaşılan özel bağlantı kullanarak bir IP güvenlik duvarının arkasındaki veya sanal ağ üzerindeki kısıtlanmış veri kaynaklarına özel uç nokta üzerinden erişebilir.

Güvenlik duvarı kuralları

Azure Depolama, Azure Cosmos DB ve Azure SQL yapılandırılabilir bir güvenlik duvarı sağlar. Güvenlik duvarı isteği engellediğinde belirli bir hata iletisi yoktur. Genellikle güvenlik duvarı hataları geneldir. Bazı sık karşılaşılan hatalar şunlardır:

  • The remote server returned an error: (403) Forbidden
  • This request is not authorized to perform this operation
  • Credentials provided in the connection string are invalid or have expired

Dizin oluşturucuların bu kaynaklara böyle bir örnekte erişmesine izin vermek için iki seçenek vardır:

  • Arama hizmetinizin IP adresi ve hizmet etiketi IP adresi aralığı AzureCognitiveSearch için bir gelen kuralı yapılandırın. Her veri kaynağı türü için IP adresi aralığı kısıtlamalarını yapılandırmaya ilişkin ayrıntılar aşağıdaki bağlantılardan bulunabilir:

  • Son çare olarak veya geçici bir önlem olarak Tüm Ağlardan erişime izin vererek güvenlik duvarını devre dışı bırakın.

Sınırlama: IP adresi aralığı kısıtlamaları yalnızca arama hizmetiniz ve depolama hesabınız farklı bölgelerdeyse çalışır.

Dizin oluşturucular, veri alma işlemine ek olarak beceri kümeleri ve özel beceriler aracılığıyla giden istekler de gönderir. Azure işlevine dayalı özel beceriler için, Azure işlevlerinin IP adresi kısıtlamalarına da sahip olduğunu unutmayın. Özel beceri yürütmesi için izin verilip verilip ve edilemeyen IP adreslerinin listesi, arama hizmetinizin IP adresini ve hizmet etiketinin AzureCognitiveSearch IP adresi aralığını içerir.

Ağ güvenlik grubu (NSG) kuralları

Dizin oluşturucu SQL yönetilen örneğindeki verilere eriştiğinde veya özel beceri için web hizmeti URI'si olarak bir Azure VM kullanıldığında, ağ güvenlik grubu isteklere izin verilip verilmeyeceğini belirler.

Sanal ağda bulunan dış kaynaklar için hizmet etiketi için AzureCognitiveSearch gelen NSG kurallarını yapılandırın.

Sanal makineye bağlanma hakkında daha fazla bilgi için bkz . Azure VM'de SQL Server'a bağlantı yapılandırma.

Ağ hataları

Genellikle ağ hataları geneldir. Bazı sık karşılaşılan hatalar şunlardır:

  • A network-related or instance-specific error occurred while establishing a connection to the server
  • The server was not found or was not accessible
  • Verify that the instance name is correct and that the source is configured to allow remote connections

Bu hatalardan herhangi birini aldığınızda:

  • Kaynağınıza arama hizmeti üzerinden değil doğrudan bağlanmaya çalışarak erişilebilir olduğundan emin olun
  • Mevcut hatalar veya kesintiler için Azure portalında kaynağınızı denetleyin
  • Azure Durumu'nda ağ kesintilerini denetleme
  • Azure Özel DNS değil, ad çözümlemesi için genel DNS kullandığınızı doğrulayın

sunucusuz dizin oluşturma Azure SQL Veritabanı (hata kodu 40613)

SQL veritabanınız sunucusuz bir işlem katmanındaysa, dizin oluşturucu buna bağlandığında veritabanının çalıştığından (ve duraklatılmadığından) emin olun.

Veritabanı duraklatılırsa, arama hizmetinizdeki ilk oturum açma işleminin veritabanını otomatik olarak sürdürmesi beklenir, ancak bunun yerine veritabanının kullanılamadığını belirten bir hata döndürür ve hata kodu 40613 olur. Veritabanı çalıştırıldıktan sonra bağlantı kurmak için oturum açmayı yeniden deneyin.

Microsoft Entra Koşullu Erişim ilkeleri

SharePoint Online dizin oluşturucu oluşturduğunuzda, cihaz kodu sağladıktan sonra Microsoft Entra uygulamanızda oturum açmanızı gerektiren bir adım vardır. ifadesini "Your sign-in was successful but your admin requires the device requesting access to be managed"içeren bir ileti alırsanız, dizin oluşturucu büyük olasılıkla Bir Koşullu Erişim ilkesi tarafından SharePoint belge kitaplığından engellenir.

İlkeyi güncelleştirmek ve dizin oluşturucunun belge kitaplığına erişmesine izin vermek için:

  1. Azure portalını açın ve Microsoft Entra Koşullu Erişim'i arayın.

  2. Soldaki menüde İlkeler'i seçin. Bu sayfayı görüntüleme erişiminiz yoksa, erişimi olan veya erişimi olan birini bulmanız gerekir.

  3. SharePoint Online dizin oluşturucusunun belge kitaplığına erişmesini engelleyen ilkeyi belirleyin. Dizin oluşturucuyu engelliyor olabilecek ilke, Kullanıcılar ve gruplar bölümündeki dizin oluşturucu oluşturma adımı sırasında kimlik doğrulaması yapmak için kullandığınız kullanıcı hesabını içerir. İlkenin aşağıdaki koşulları da olabilir:

    • Windows platformlarını kısıtlayın.
    • Mobil uygulamaları ve masaüstü istemcilerini kısıtlayın.
    • Cihaz durumunun Evet olarak yapılandırılmasını sağlayın.
  4. Dizin oluşturucuyu engelleyen ilkeyi onayladıktan sonra dizin oluşturucu için bir muafiyet oluşturun. Arama hizmeti IP adresini alarak başlayın.

    İlk olarak, arama hizmetinizin tam etki alanı adını (FQDN) alın. FQDN şuna benzer: <your-search-service-name>.search.windows.net. FQDN'yi Azure portalında bulabilirsiniz.

    Hizmet FQDN'lerini alma

    Artık FQDN'niz olduğuna göre, FQDN'nin bir nslookup (veya bir ping) öğesini gerçekleştirerek arama hizmetinin IP adresini alın. Aşağıdaki örnekte, Azure Depolama güvenlik duvarındaki bir gelen kuralına "150.0.0.1" ekleyebilirsiniz. Arama hizmeti dizin oluşturucusunun Azure Depolama hesabına erişebilmesi için güvenlik duvarı ayarlarının güncelleştirilmiş olması 15 dakika kadar sürebilir.

    nslookup contoso.search.windows.net
    Server:  server.example.org
    Address:  10.50.10.50
    
    Non-authoritative answer:
    Name:    <name>
    Address:  150.0.0.1
    Aliases:  contoso.search.windows.net
    
  5. Bölgenizin dizin oluşturucu yürütme ortamı için IP adresi aralıklarını alın.

    Dizin oluşturucunun çok kiracılı yürütme ortamından kaynaklanan istekler için ek IP adresleri kullanılır. Bu IP adresi aralığını hizmet etiketinden alabilirsiniz.

    Hizmet etiketi için AzureCognitiveSearch IP adresi aralıkları bulma API'si veya indirilebilir JSON dosyası aracılığıyla alınabilir.

    Bu alıştırmada, arama hizmetinin Azure Genel bulutu olduğu varsayıldığında Azure Genel JSON dosyası indirilmelidir.

    JSON dosyasını indirme

    JSON dosyasından, arama hizmetinin Orta Batı ABD'de olduğunu varsayarsak, çok kiracılı dizin oluşturucu yürütme ortamı için IP adreslerinin listesi aşağıda listelenmiştir.

        {
          "name": "AzureCognitiveSearch.WestCentralUS",
          "id": "AzureCognitiveSearch.WestCentralUS",
          "properties": {
            "changeNumber": 1,
            "region": "westcentralus",
            "platform": "Azure",
            "systemService": "AzureCognitiveSearch",
            "addressPrefixes": [
              "52.150.139.0/26",
              "52.253.133.74/32"
            ]
          }
        }
    
  6. Azure portalında Koşullu Erişim sayfasına dönün, soldaki menüden Adlandırılmış konumlar'ı ve ardından + IP aralıkları konumu'na tıklayın. Yeni adlandırılmış konumunuza bir ad verin ve son iki adımda topladığınız arama hizmeti ve dizin oluşturucu yürütme ortamlarınız için IP aralıklarını ekleyin. 1

    • Arama hizmeti IP adresiniz için, yalnızca geçerli IP aralıklarını kabul ettiğinden IP adresinin sonuna "/32" eklemeniz gerekebilir.
    • Dizin oluşturucu yürütme ortamı IP aralıkları için yalnızca arama hizmetinizin içinde olduğu bölgenin IP aralıklarını eklemeniz gerektiğini unutmayın.
  7. Yeni Adlandırılmış konumu ilkenin dışında tutun:

    1. Soldaki menüde İlkeler'i seçin.
    2. Dizin oluşturucuyu engelleyen ilkeyi seçin.
    3. Koşullar'ı seçin.
    4. Konumlar'ı seçin.
    5. Dışla'yı seçin ve yeni Adlandırılmış konumu ekleyin.
    6. Değişiklikleri kaydedin .
  8. İlkenin güncelleştirilmesini ve yeni ilke kurallarının uygulanmasını birkaç dakika bekleyin.

  9. Dizin oluşturucuyu yeniden oluşturmayı deneyin:

    1. Oluşturduğunuz veri kaynağı nesnesi için bir güncelleştirme isteği gönderin.
    2. Dizin oluşturucu oluşturma isteğini yeniden gönderin. Yeni kodu kullanarak oturum açın, sonra başka bir dizin oluşturucu oluşturma isteği gönderin.

Desteklenmeyen belge türlerini dizinleme

Azure Blob Depolama içeriği dizine alıyorsanız ve kapsayıcı desteklenmeyen içerik türünün bloblarını içeriyorsa, dizin oluşturucu bu belgeyi atlar. Diğer durumlarda, tek tek belgelerle ilgili sorunlar olabilir.

Bu durumda, tek tek belgelerle ilgili sorunlar olması durumunda dizin oluşturucu işlemenin devam etmesi için yapılandırma seçeneklerini ayarlayabilirsiniz.

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]

{
  ... other parts of indexer definition
  "parameters" : { "configuration" : { "failOnUnsupportedContentType" : false, "failOnUnprocessableDocument" : false } }
}

Eksik belgeler

Dizin oluşturucular bir dış veri kaynağından belge veya satır ayıklar ve arama belgeleri oluşturur ve bu belgeler arama hizmeti tarafından dizinlenir. Bazen, veri kaynağında bulunan bir belge arama dizininde görünemiyor. Bu beklenmeyen sonuç aşağıdaki nedenlerden dolayı oluşabilir:

  • Dizin oluşturucu çalıştırıldıktan sonra belge güncelleştirildi. Dizin oluşturucunuz bir zamanlamaya göreyse, sonunda belgeyi yeniden çalıştırır ve alır.
  • Dizin oluşturucu belge alınamadan önce zaman aşımına uğradı. En fazla işlem süresi sınırı vardır ve bundan sonra hiçbir belge işlenmez. Dizin oluşturucu durumunu portalda veya Dizin Oluşturucu Durumunu Al (REST API) çağrısı yaparak deleyebilirsiniz.
  • Alan eşlemeleri veya yapay zeka zenginleştirmesi belgeyi değiştirdi ve arama dizinindeki ifade beklediğinizden farklı.
  • Değişiklik izleme değerleri hatalı veya önkoşullar eksik. Yüksek filigran değeriniz gelecekteki bir saate ayarlanmış bir tarihse, daha önceki bir tarihe sahip tüm belgeler dizin oluşturucu tarafından atlanır. Dizin oluşturucu durumundaki 'initialTrackingState' ve 'finalTrackingState' alanlarını kullanarak dizin oluşturucunuzun değişiklik izleme durumunu belirleyebilirsiniz. Azure SQL ve MySQL için dizin oluşturucuların kaynak tablonun yüksek su işareti sütununda bir dizini olmalıdır; aksi zaman aşımına uğradıysa dizin oluşturucu tarafından kullanılan sorgular zaman aşımına uğradı.

İpucu

Belgeler eksikse, söz konusu belgeyi dışlamadığından emin olmak için kullandığınız sorguyu denetleyin. Belirli bir belgeyi sorgulamak için Arama Belgesi REST API'sini kullanın.

Blob Depolama'da eksik içerik

Blob dizin oluşturucu bir kapsayıcıdaki blobları bulur ve bu bloblardan metin ayıklar. Metin ayıklamayla ilgili bazı sorunlar şunlardır:

  • Belgede yalnızca taranmış görüntüler bulunur. Taranmış görüntüler (JPG' ler) gibi metin olmayan içeriğe sahip PDF blobları, standart blob dizin oluşturma işlem hattında sonuç üretmez. Metin öğeleri içeren görüntü içeriğiniz varsa, metni bulmak ve ayıklamak için OCR veya görüntü analizini kullanabilirsiniz.

  • Blob dizin oluşturucu yalnızca dizin meta verileri için yapılandırılmıştır. İçerik ayıklamak için blob dizin oluşturucu hem içeriği hem de meta verileri ayıklanacak şekilde yapılandırılmalıdır:

PUT https://[service name].search.windows.net/indexers/[indexer name]?api-version=2023-11-01
Content-Type: application/json
api-key: [admin key]

{
  ... other parts of indexer definition
  "parameters" : { "configuration" : { "dataToExtract" : "contentAndMetadata" } }
}

Azure Cosmos DB'de eksik içerik

Azure AI Search'te Azure Cosmos DB dizin oluşturma üzerinde örtük bir bağımlılık vardır. Azure Cosmos DB'de otomatik dizin oluşturmayı kapatırsanız, Azure AI Search başarılı bir durum döndürür, ancak kapsayıcı içeriğini dizine alamaz. Ayarları denetleme ve dizin oluşturmayı açma yönergeleri için bkz . Azure Cosmos DB'de dizin oluşturmayı yönetme.

Veri kaynağı ve dizin arasındaki belge sayısı tutarsızlığı

Dizin oluşturucu veri kaynağından, dizinin kendisinden veya kodunuzdaki sayıdan farklı bir belge sayısı gösterebilir. Bu davranışın oluşmasının bazı olası nedenleri şunlardır:

  • Dizin, özellikle portalda gerçek belge sayısını göstermede gecikmeye neden olabilir.
  • Dizin oluşturucunun Silinmiş Belge İlkesi var. Silinen belgeler silinmeden önce dizine alınırsa, silinen belgeler dizin oluşturucu tarafından sayılır.
  • Veri kaynağındaki Kimlik sütunu benzersiz değilse. Bu, Azure Cosmos DB gibi sütun kavramına sahip veri kaynakları için geçerlidir.
  • Veri kaynağı tanımında kayıt sayısını tahmin etmek için kullandığınız sorgudan farklı bir sorgu varsa. Örneğin, veritabanınızda veritabanı kayıt sayısını sorgularken, veri kaynağı tanımı sorgusunda dizine eklenecek kayıtların yalnızca bir alt kümesini seçiyor olabilirsiniz.
  • Sayı, işlem hattının her bileşeni için farklı aralıklarla denetleniyor: veri kaynağı, dizin oluşturucu ve dizin.
  • Veri kaynağında birçok belgeye eşlenmiş bir dosya vardır. Bu koşul, blobların dizini oluşturulurken ve "ayrıştırmaMode" ve jsonLinesolarak ayarlandığında jsonArray ortaya çıkabilir.

Birden çok kez işlenen belgeler

Dizin oluşturucular, veri kaynağındaki her yeni ve değiştirilmiş belgenin dizin oluşturma sırasında alındığından emin olmak için muhafazakar bir arabelleğe alma stratejisi kullanır. Bazı durumlarda, bu arabellekler çakışarak dizin oluşturucunun belgeyi iki veya daha fazla kez dizine eklemesine neden olabilir ve bu da işlenen belge sayısının veri kaynağındaki gerçek belge sayısından fazla olmasına neden olur. Bu davranış, dizinde depolanan belgeleri yineleme gibi verileri etkilemez, yalnızca nihai tutarlılığa ulaşmak daha uzun sürebilir. Bu koşul özellikle aşağıdaki ölçütlerden biri doğruysa yaygındır:

  • İsteğe bağlı dizin oluşturucu istekleri hızla art arda verilir
  • Veri kaynağının topolojisi birden çok çoğaltma ve bölüm içerir (bu örneklerden biri burada açıklandı)
  • Veri kaynağı bir Azure SQL veritabanıdır ve "yüksek su işareti" olarak seçilen sütun türündedir datetime2

Dizin oluşturucuların hızlı bir şekilde birden çok kez çağrılması amaçlanmamıştır. Güncelleştirmelere hızlı bir şekilde ihtiyacınız varsa desteklenen yaklaşım, veri kaynağını eşzamanlı olarak güncelleştirirken güncelleştirmeleri dizine göndermektir. İsteğe bağlı işleme için isteklerinizi beş dakika veya daha fazla aralıklarla hızlandırmanızı ve dizin oluşturucuyu bir zamanlamaya göre çalıştırmanızı öneririz.

30 saniyelik arabelleğe sahip yinelenen belge işleme örneği

Bir belgenin iki kez işlendiği koşullar, aşağıdaki zaman çizelgesinde her eylemi ve sayaç eylemini not alan açıklanmıştır. Aşağıdaki zaman çizelgesinde sorun gösterilmektedir:

Zaman Çizelgesi (ss:dd:ss) Etkinlik Indexer Yüksek Su İşareti Yorum
00:01:00 Nihai tutarlılık ile veri kaynağına yazma doc1 null Belge zaman damgası 00:01:00'dir.
00:01:05 Nihai tutarlılık ile veri kaynağına yazma doc2 null Belge zaman damgası: 00:01:05.
00:01:10 Dizin oluşturucu başlatılır null
00:01:11 00:01:10 öncesi tüm değişiklikler için dizin oluşturucu sorguları; Dizin oluşturucu sorgularının yalnızca farkında doc2olduğu çoğaltma; yalnızca doc2 alınır null Dizin oluşturucu, zaman damgasını başlatmadan önce tüm değişiklikleri istiyor ancak aslında bir alt küme alıyor. Bu davranış, arka arkaya bakma arabelleği süresini zorunlu kılmaktadır.
00:01:12 Dizin oluşturucu işlemleri ilk kez gerçekleştirilir doc2 null
00:01:13 Dizin oluşturucu sona eriyor 00:01:10 Yüksek su işareti, geçerli dizin oluşturucu yürütmesinin başlangıç zaman damgasına güncelleştirildi.
00:01:20 Dizin oluşturucu başlatılır 00:01:10
00:01:21 00:00:40 ile 00:01:20 arasındaki tüm değişiklikler için dizin oluşturucu sorguları; dizin oluşturucu sorgularının hem farkında olduğu çoğaltma hem de doc1 doc2alır doc1 ve doc2 00:01:10 Dizin oluşturucu geçerli yüksek su işareti eksi 30 saniyelik arabellek ve geçerli dizin oluşturucu yürütmesinin başlangıç zaman damgası arasındaki tüm değişiklikler için istekte bulunur.
00:01:22 Dizin oluşturucu işlemleri ilk kez gerçekleştirilir doc1 00:01:10
00:01:23 Dizin oluşturucu ikinci kez işler doc2 00:01:10
00:01:24 Dizin oluşturucu sona eriyor 00:01:20 Yüksek su işareti, geçerli dizin oluşturucu yürütmesinin başlangıç zaman damgasına güncelleştirildi.
00:01:32 Dizin oluşturucu başlatılır 00:01:20
00:01:33 00:00:50 ile 00:01:32 arasındaki tüm değişiklikler için dizin oluşturucu sorguları; ve alır doc1doc2 00:01:20 Dizin oluşturucu geçerli yüksek su işareti eksi 30 saniyelik arabellek ve geçerli dizin oluşturucu yürütmesinin başlangıç zaman damgası arasındaki tüm değişiklikler için istekte bulunur.
00:01:34 Dizin oluşturucu ikinci kez işler doc1 00:01:20
00:01:35 Dizin oluşturucu işlemleri doc2 üçüncü kez gerçekleştirilir 00:01:20
00:01:36 Dizin oluşturucu sona eriyor 00:01:32 Yüksek su işareti, geçerli dizin oluşturucu yürütmesinin başlangıç zaman damgasına güncelleştirildi.
00:01:40 Dizin oluşturucu başlatılır 00:01:32
00:01:41 00:01:02 ile 00:01:40 arasındaki tüm değişiklikler için dizin oluşturucu sorguları; Alır doc2 00:01:32 Dizin oluşturucu geçerli yüksek su işareti eksi 30 saniyelik arabellek ve geçerli dizin oluşturucu yürütmesinin başlangıç zaman damgası arasındaki tüm değişiklikler için istekte bulunur.
00:01:42 Dizin oluşturucu işlemleri doc2 dördüncü kez gerçekleştirilir 00:01:32
00:01:43 Dizin oluşturucu sona eriyor 00:01:40 Bu dizin oluşturucu yürütmesinin, veri kaynağına yapılan son yazma işleminden ve ayrıca işlendikten doc2sonra 30 saniyeden fazla başladığına dikkat edin. Bu beklenen davranıştır, çünkü 00:01:35'e kadar olan tüm dizin oluşturucu yürütmeleri ortadan kalkarsa, bu ve doc2işleminin doc1 ilk ve tek yürütmesi olur.

Uygulamada, bu senaryo yalnızca belirli veri kaynakları için isteğe bağlı dizin oluşturucular birkaç dakika içinde el ile çağrıldığında gerçekleşir. Aynı belge için aynı becerileri birden çok kez çalıştırıyorsanız, eşleşmeyen sayılara (dizin oluşturucunun 345 belge toplamını dizin oluşturucu yürütme istatistiklerine göre işlemesi gibi, ancak veri kaynağında ve dizinde 340 belge olması gibi) veya faturalamanın artmasına neden olabilir. Zamanlamayı kullanarak dizin oluşturucu çalıştırmak tercih edilen bir öneridir.

Paralel dizin oluşturma

Aynı anda birden çok dizin oluşturucu çalışırken, bazılarının kuyruğa girmesi normaldir ve kullanılabilir kaynakların yürütülmesini bekler. Eşzamanlı olarak çalışabilen dizin oluşturucuların sayısı birkaç faktöre bağlıdır. Dizin oluşturucular beceri kümeleriyle bağlantılı değilse paralel çalıştırma kapasitesi, yapay zeka Arama hizmeti ayarlanan çoğaltma ve bölüm sayısına bağlıdır.

Öte yandan, bir dizin oluşturucu bir beceri kümesiyle ilişkilendirildiyse, yapay zeka Arama'nın iç kümelerinde çalışır. Bu durumda eşzamanlı olarak çalıştırılabilme özelliği, beceri kümesinin karmaşıklığı ve diğer beceri kümelerinin aynı anda çalışıp çalışmadığına göre belirlenir. Yerleşik dizin oluşturucular kaynaktan güvenilir bir şekilde veri ayıklamak için tasarlanmıştır, bu nedenle bir zamanlamaya göre çalıştırılırsa hiçbir veri kaçırılmaz. Ancak, dizin oluşturucunun paralelleştirme ve ölçeği genişletme işlemlerinin biraz zaman gerektirebileceği beklenir.

Duyarlılık etiketleriyle belgeleri dizinleme

Belgelerde ayarlanmış duyarlılık etiketleriniz varsa bunları dizine ekleyemeyebilirsiniz. Hata alıyorsanız, dizin oluşturmadan önce etiketleri kaldırın.

Ayrıca bkz.