Bir öneriyi otomatik tamamlama ve sorgudaki öneriler için yapılandırma

Not

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 typeahead veya "yazarken ara" özelliği, bir önerici kullanılarak etkinleştirilir. Önerici, otomatik tamamlama ve önerilen eşleşmeleri doldurmak için hangi alanların kullanılacağını belirleyen bir dizin yapılandırmasıdır. Bu alanlar, kısmi terimlerle eşleşmeleri desteklemek için ön ek dizileri oluşturarak ek bir ayrıştırma işleminden geçer. Örneğin, city alanına Seattle değeri içeren bir önerici, önceden yazılan desteği için sea, seat, seatt ve seattl ön ek kombinasyonlarına sahiptir.

Kısmi terimlerde eşleşmeler otomatik olarak tamamlanmış bir sorgu veya önerilen bir eşleşme olabilir. Aynı önerici her iki deneyimi de destekler.

Öneri önizleme deneyimleri

Azure Yapay Zeka Arama'teki Tahmin, bir terim sorgusu için kısmi girdiyi tamamlayan otomatik tamamlama veya belirli bir eşleşmeye tıklamaya davet eden öneriler olabilir. Otomatik tamamlama bir sorgu oluşturur. Öneriler, eşleşen bir belge oluşturur.

Aşağıdaki ekran görüntüsünde her ikisi de gösterilmektedir. Otomatik tamamlama, olası bir terimi tahmin eder ve tw ifadesini in ile tamamlar. Öneriler, gibi hotel name bir alanın dizinden eşleşen bir otel arama belgesini temsil ettiği mini arama sonuçlarıdır. Öneriler için açıklayıcı bilgiler sağlayan herhangi bir alanı ortaya çıkarabilirsiniz.

Otomatik tamamlama ve önerilen sorguların görsel karşılaştırmasını gösteren ekran görüntüsü.

Bu özellikleri ayrı ayrı veya birlikte kullanabilirsiniz. Azure Yapay Zeka Arama'te bu davranışları uygulamak için bir dizin ve sorgu bileşeni vardır.

  • Arama dizini tanımına bir önerici ekleyin. Bu makalenin kalan kısmı bir önerici oluşturmaya odaklanıyor.

  • "Öneri oluşturucu kullanımı bölümü altında listelenen API'lerden birini kullanarak, öneri isteği veya otomatik tamamlama isteği biçiminde bir sorgu çağırın."

Yazdıkça ara işlevi, dize alanları için alan bazında etkinleştirilir. Ekran görüntüsünde gösterilene benzer bir deneyim elde etmek istiyorsanız, aynı arama çözümünde her iki tür "typeahead" davranışını da uygulayabilirsiniz. Her iki istek de belirli bir dizinin belge koleksiyonunu hedefler ve bir kullanıcı en az üç karakterli bir giriş dizesi sağladıktan sonra yanıtlar döndürülür.

Öneri motoru oluşturma

Öneri oluşturucu oluşturmak için dizin tanımına bir öneri ekleyin. Bir öneri sistemi, ad ve hızlı arama deneyiminin etkinleştirildiği bir alan koleksiyonunu alır. Öneri oluşturucu oluşturmak için en iyi zaman, bunu kullanan alanı da tanımladığınız zamandır.

  • Yalnızca dize alanlarını kullanın.

  • Dize alanı karmaşık bir türün parçasıysa (örneğin, Adres içindeki bir Şehir alanı), alan yoluna üst öğeyi ekleyin: "Address/City" (REST, C#ve Python) veya ["Address"]["City"] (JavaScript).

  • Alanda varsayılan standart Lucene çözümleyicisini ("analyzer": null) veya dil çözümleyicisini (örneğin, "analyzer": "fr.microsoft") kullanın.

Önceden var olan alanları kullanarak bir öneri oluşturucu oluşturmaya çalışırsanız, API buna izin vermemektedir. İki veya daha fazla karakter bileşimindeki kısmi terimler tüm terimlerle birlikte belirteç haline getirildiğinde, dizin oluşturma sırasında önekler oluşturulur. Mevcut alanların zaten belirteç haline getirildiği göz önünde bulundurulduğunda, bir öneri sistemine eklemek istiyorsanız dizini yeniden oluşturmanız gerekir. Daha fazla bilgi için Azure Yapay Zeka Arama'te dizin güncellemeyi veya yeniden derlemeyi inceleyin.

Alanları seçin

Bir önerici çeşitli özelliklere sahip olsa da, esasen yazdıkça arama deneyimini etkinleştirdiğiniz dize alanlarından oluşan bir koleksiyondur. Her dizin için bir öneri aracı olduğundan, öneri listesi hem öneriler hem de otomatik tamamlama için içerik katkıda bulunan tüm alanları içermelidir.

Otomatik tamamlama, ekstra içeriğin daha fazla terim tamamlama potansiyeline sahip olması nedeniyle, daha geniş bir alan havuzundan yararlanır.

Diğer taraftan öneriler, alan seçiminiz seçmeli olduğunda daha iyi sonuçlar üretir. Önerinin bir arama belgesi için ara sunucu olduğunu unutmayın, bu nedenle tek bir sonucu en iyi temsil eden alanları seçin. Birden çok eşleşmeyi ayırt eden adlar, başlıklar veya diğer benzersiz alanlar en iyi şekilde çalışır. Alanlar yinelenen değerlerden oluşuyorsa, öneriler aynı sonuçlardan oluşur ve kullanıcı hangisini seçeceğini bilemez.

Yazarken arama deneyimlerini karşılamak için otomatik tamamlama ihtiyaçlarınıza uygun tüm alanları ekleyin ve ardından önerilerin sonuçlarını kontrol etmek için select, top, filter ve searchFields kullanın.

Çözümleyicileri seçme

Çözümleyici seçiminiz, alanların nasıl belirteç haline getirileceğini ve ön eklendiğini belirler. Örneğin, tireli bir ifade için bağlama duyarlı, dil çözümleyicisi kullanıldığında şu belirteç bileşimleri elde edilir: bağlam, hassas, bağlama duyarlı. Standart Lucene çözümleyicisini kullansaydınız, tireli dizi bulunmazdı.

Çözümleyicileri değerlendirirken terimlerin nasıl işlendiğine ilişkin içgörüler için Metin Analizi API'sini kullanmayı göz önünde bulundurun. Bir dizin derledikten sonra, belirteç çıkışını görüntülemek için bir dizedeki çeşitli çözümleyicileri deneyebilirsiniz.

Kötü sonuçları önlemek için özel çözümleyiciler veya yerleşik çözümleyiciler kullanan alanlara (standart Lucene hariç) açıkça izin verilmez.

Not

Çözümleyici kısıtlamasını geçici olarak düzeltmeniz gerekiyorsa, örneğin belirli sorgu senaryoları için bir anahtar sözcük veya ngram çözümleyicisi gerekiyorsa, aynı içerik için iki ayrı alan kullanmanız gerekir. Bu, alanlardan birinin bir öneri oluşturucuya sahip olmasını sağlarken, diğeri özel çözümleyici yapılandırmasıyla ayarlanabilir. Dizin oluşturucu kullanıyorsanız, birden çok yapılandırmayı desteklemek için kaynak alanı iki farklı dizin alanına eşleyebilirsiniz.

Azure portalını kullanarak oluşturma

Azure portalında Dizin ekle'yi seçtiğinizde bir önericisi belirtebilirsiniz.

  1. Dizin ekle'yi seçin ve bir dize alanı ekleyin.
  2. Alan ilişkilendirmesini Aranabilir olarak ayarlayın.
  3. Bir çözümleyici seçin.
  4. Alanlar tanımlandıktan sonra Otomatik Tamamlama ayarları'nı seçin.
  5. Otomatik tamamlama deneyimini etkinleştirmek istediğiniz aranabilir dize alanlarını seçin.

REST kullanarak oluşturma

REST API'de Dizin Oluştur'u kullanarak öneri oluşturucular ekleyin.

{
  "name": "hotels-sample",
  "fields": [
    . . .
        {
            "name": "HotelName",
            "type": "Edm.String",
            "facetable": false,
            "filterable": false,
            "key": false,
            "retrievable": true,
            "searchable": true,
            "sortable": false,
            "analyzer": "en.microsoft",
            "indexAnalyzer": null,
            "searchAnalyzer": null,
            "synonymMaps": [],
            "fields": []
        },
  ],
  "suggesters": [
    {
      "name": "sg",
      "searchMode": "analyzingInfixMatching",
      "sourceFields": ["HotelName"]
    }
  ],
  "scoringProfiles": [
    . . .
  ]
}

.NET kullanarak oluşturma

C# dilinde searchSuggester nesnesi tanımlayın. Suggesters SearchIndex nesnesi üzerindeki bir koleksiyondur, ancak yalnızca bir öğe alabilir. Dizin tanımına bir önerici ekleyin.

private static void CreateIndex(string indexName, SearchIndexClient indexClient)
{
    FieldBuilder fieldBuilder = new FieldBuilder();
    var searchFields = fieldBuilder.Build(typeof(Hotel));

    var definition = new SearchIndex(indexName, searchFields);

    var suggester = new SearchSuggester("sg", new[] { "HotelName", "Category", "Address/City", "Address/StateProvince" });
    definition.Suggesters.Add(suggester);

    indexClient.CreateOrUpdateIndex(definition);
}

Özellik referansı

Özellik Açıklama
Adı Öneri oluşturucu tanımında belirtilir, ancak otomatik tamamlama veya öneriler isteğinde de çağrılır.
kaynakAlanları Önericisi tanımında belirtilir. Öneriler için içeriğin kaynağı olan dizindeki bir veya daha fazla alanın listesidir. Alanlar türünde Edm.String olmalıdır. Alanda bir çözümleyici belirtilirse, LexicalAnalyzerName Yapısında (özel çözümleyici değil) listelenen adlandırılmış bir sözcük çözümleyicisi olmalıdır.

En iyi uygulama olarak, beklenen ve uygun bir yanıtın elde edilmesine uygun olan alanları belirtin, ister arama çubuğunda tamamlanmış bir dize, ister açılır bir liste olsun.

Otel adı, kesinliği nedeniyle iyi bir adaydır. Açıklamalar ve yorumlar gibi fazla detaylı alanlar çok yoğun. Benzer şekilde, kategoriler ve etiketler gibi yinelenen alanlar daha az etkilidir. Örneklerde, birden çok alan ekleyebildiğinizi göstermek için kategoriyi yine de ekleyeceğiz.
arama modu Yalnızca REST parametresi, ancak Azure portalında da görülebilir. Bu parametre .NET SDK'sında kullanılamaz. Aday tümcecikleri aramak için kullanılan stratejiyi gösterir. Şu anda desteklenen tek mod, bir terimin başında eşleşmekte olan analyzingInfixMatching modudur.

Önerici kullan

Bir sorguda bir önerici kullanılır. Bir önerici oluşturulduktan sonra, yazarken arama işlevi için aşağıdaki API'lerden birini çağırın.

Bir arama uygulamasında istemci kodu, kısmi sorguyu toplamak ve eşleşmeyi sağlamak için jQuery UI Otomatik Tamamlama gibi bir kitaplık kullanmalıdır. Bu görev hakkında daha fazla bilgi için bkz . İstemci koduna otomatik tamamlama veya önerilen sonuçlar ekleme.

API kullanımı, aşağıdaki Otomatik Tamamlama REST API çağrısında gösterilmiştir. Bu örnekten iki farklı seçenek vardır. İlk olarak, tüm sorgularda olduğu gibi, işlem bir dizinin belge koleksiyonuna karşıdır ve sorgu, bu durumda kısmi sorgu sağlayan bir search parametre içerir. İkincisi, isteğe eklemeniz suggesterName gerekir. Bir öneri oluşturucu dizinde tanımlanmamışsa, otomatik tamamlama çağrıları veya öneriler başarısız olur.

POST /indexes/myxboxgames/docs/autocomplete?search&api-version=2026-04-01
{
  "search": "minecraf",
  "suggesterName": "sg"
}

Örnek kod

İstemci uygulamasında kısmi terim tamamlama için açık kaynak Öneri paketini nasıl kullanacağınızı öğrenmek için, .NET arama kodunu keşfedin.

Sonraki adım

İstek formülasyonu hakkında daha fazla bilgi edinin.