Aracılığıyla paylaş


Hızlı Başlangıç: .NET veya Python ile anlam sıralaması

Azure AI Search'te anlam derecelendirmesi, arama sonuçlarını yeniden puanlama amacıyla Microsoft'un makine okuma kavramasını kullanan sorgu tarafı işlevselliğidir ve en önemli eşleşmeleri listenin en üstüne yükseltmeyi sağlar. İçeriğe ve sorguya bağlı olarak anlamsal derecelendirme , geliştirici için minimum çalışmayla aramanın ilgi düzeyini önemli ölçüde artırabilir.

Bu hızlı başlangıçta semantik dereceleyiciyi çağıran dizin ve sorgu değişikliklerinde size yol gösterilir.

Not

ChatGPT etkileşimi olan bir Azure AI Arama çözümü örneği için bu tanıtıma veya bu hızlandırıcıya bakın.

Önkoşullar

  • Etkin aboneliği olan bir Azure hesabı. Ücretsiz bir hesap oluşturabilirsiniz.

  • Temel katmanda veya daha yüksek bir katmanda semantik dereceleyicinin etkinleştirildiği bir Azure AI Arama kaynağı.

  • API anahtarı ve arama hizmeti uç noktası. Azure portalında oturum açın ve arama hizmetinizi bulun.

    Genel Bakış'ta URL'yi kopyalayın ve sonraki bir adım için kaydedin. Örnek uç nokta https://mydemo.search.windows.net şeklinde görünebilir.

    Anahtarlar'da, nesneleri oluşturmak ve silmek için tam haklar için bir yönetici anahtarını kopyalayın ve kaydedin. İki değiştirilebilir birincil ve ikincil anahtar vardır. Birini seçin.

    Arama hizmetinizin HTTP uç noktasını ve erişim anahtarını nerede bulacağını gösteren ekran görüntüsü.

Anlamsal derecelendirme ekleme

Anlam derecesini kullanmak için, arama dizinine bir anlamsal yapılandırma ekleyin ve sorguya parametreler ekleyin. Mevcut bir dizininiz varsa, aranabilir içeriğinizin yapısını etkilemediğinden içeriğinizi yeniden dizine eklemek zorunda kalmadan bu değişiklikleri yapabilirsiniz.

  • Anlamsal yapılandırma, anlamsal yeniden boyutlandırmada kullanılan başlık, anahtar sözcükler ve içeriğe katkıda bulunan alanlar için bir öncelik sırası ayarlar. Alan önceliklendirmesi daha hızlı işlemeye olanak tanır.

  • Anlam dereceleyicisini çağıran sorgular, sorgu türüne ve açıklamalı alt yazıların ve yanıtların döndürülip döndürülmediğine ilişkin parametreler içerir. Bu parametreleri mevcut sorgu mantığınıza ekleyebilirsiniz. Diğer parametrelerle çakışma yoktur.

Mevcut arama dizinine anlamsal derecelendirme eklemek için Azure.Search.Documents istemci kitaplığını kullanarak bir konsol uygulaması oluşturun.

Alternatif olarak, tamamlanmış bir projeyle başlamak için kaynak kodu indirebilirsiniz.

Ortamınızı ayarlama

  1. Visual Studio'yu başlatın ve konsol uygulaması için yeni bir proje oluşturun.

  2. Araçlar>NuGet Paket Yöneticisi Çözüm için NuGet Paketlerini Yönet... seçeneğini belirleyin.

  3. Göz At'ı seçin.

  4. Azure.Search.Documents paketini arayın ve en son kararlı sürümü seçin.

  5. Derlemeyi projenize ve çözümünüze eklemek için Yükle'yi seçin.

Arama istemcisi oluşturma

  1. Program.cs aşağıdaki using yönergeleri ekleyin.

    using Azure;
    using Azure.Search.Documents;
    using Azure.Search.Documents.Indexes;
    using Azure.Search.Documents.Indexes.Models;
    using Azure.Search.Documents.Models;
    
  2. İki istemci oluşturma: SearchIndexClient dizini oluşturur ve SearchClient var olan bir dizini yükler ve sorgular.

    Her iki istemcinin de oluşturma/silme haklarıyla kimlik doğrulaması için hizmet uç noktasına ve bir yönetici API anahtarına ihtiyacı vardır. Ancak, kod sizin için URI'yi oluşturur, bu nedenle özelliği için serviceName yalnızca arama hizmeti adını belirtin. veya .search.windows.neteklemeyinhttps://.

     static void Main(string[] args)
     {
         string serviceName = "<YOUR-SEARCH-SERVICE-NAME>";
         string apiKey = "<YOUR-SEARCH-ADMIN-API-KEY>";
         string indexName = "hotels-quickstart";
    
    
         // Create a SearchIndexClient to send create/delete index commands
         Uri serviceEndpoint = new Uri($"https://{serviceName}.search.windows.net/");
         AzureKeyCredential credential = new AzureKeyCredential(apiKey);
         SearchIndexClient adminClient = new SearchIndexClient(serviceEndpoint, credential);
    
         // Create a SearchClient to load and query documents
         SearchClient srchclient = new SearchClient(serviceEndpoint, indexName, credential);
         . . . 
     }
    

Dizin oluşturma

Dizin şemasını oluşturarak veya güncelleştirerek ekleyin SemanticConfiguration. Mevcut bir dizini güncelleştiriyorsanız, belgelerinizin yapısı değişmediğinden bu değişiklik için yeniden dizin oluşturma gerekmez.

// Create hotels-quickstart index
private static void CreateIndex(string indexName, SearchIndexClient adminClient)
{

    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);
    definition.SemanticSearch = new SemanticSearch
    {
        Configurations =
        {
            new SemanticConfiguration("my-semantic-config", new()
            {
                TitleField = new SemanticField("HotelName"),
                ContentFields =
                {
                    new SemanticField("Description"),
                    new SemanticField("Description_fr")
                },
                KeywordsFields =
                {
                    new SemanticField("Tags"),
                    new SemanticField("Category")
                }
            })
        }
    };

    adminClient.CreateOrUpdateIndex(definition);
}

Aşağıdaki kod, arama hizmetinizde dizini oluşturur:

// Create index
Console.WriteLine("{0}", "Creating index...\n");
CreateIndex(indexName, adminClient);

SearchClient ingesterClient = adminClient.GetSearchClient(indexName);

Belge yükleme

Azure AI Search, hizmette depolanan içerik üzerinde aramalar. Belgeleri karşıya yükleme kodu, tam metin araması için C# hızlı başlangıcıyla aynıdır, bu nedenle belgeyi burada yinelememiz gerekmez. Adları, adresleri ve açıklamaları olan dört otel olmalıdır. Çözümünüz Oteller ve Adresler türlerine sahip olmalıdır.

Dizin arama

Parametreleri belirtmek için arama seçenekleriyle birlikte anlam derecesini çağıran bir sorgu aşağıdadır:

Console.WriteLine("Example of a semantic query.");

options = new SearchOptions()
{
    QueryType = Azure.Search.Documents.Models.SearchQueryType.Semantic,
    SemanticSearch = new()
    {
        SemanticConfigurationName = "my-semantic-config",
        QueryCaption = new(QueryCaptionType.Extractive)
    }
};
options.Select.Add("HotelName");
options.Select.Add("Category");
options.Select.Add("Description");

// response = srchclient.Search<Hotel>("*", options);
response = srchclient.Search<Hotel>("what hotel has a good restaurant on site", options);
WriteDocuments(response);

Karşılaştırma için, terim sıklığına ve yakınlığına göre varsayılan BM25 derecelendirmesini kullanan bir sorgunun sonuçları aşağıdadır. "Hangi otelin sitede iyi bir restoranı var" sorgusu göz önüne alındığında, BM25 derecelendirme algoritması eşleşmeleri bu ekran görüntüsünde gösterilen sırayla döndürür:

BM25 tarafından derecelenen eşleşmeleri gösteren ekran görüntüsü.

Buna karşılık, aynı sorguya semantik derecelendirme uygulandığında ("hangi otelin yerinde iyi bir restoranı vardır"), sonuçlar sorguyla anlamsal ilgisine göre yeniden düzenlenir. Bu kez en önemli sonuç, kullanıcı beklentilerine daha iyi uyum sağlayan restoranlı oteldir.

Anlamsal derecelendirmeye göre derecelenen eşleşmeleri gösteren ekran görüntüsü.

Programı çalıştırma

Uygulamayı yeniden derlemek ve programı tamamen çalıştırmak için F5 tuşuna basın.

Çıktı, sorgu bilgilerinin ve sonuçların eklenmesiyle birlikte Console.WriteLine'dan gelen iletileri içerir.

Kaynakları temizleme

Kendi aboneliğinizde çalışırken, projenin sonunda oluşturduğunuz kaynaklara hala ihtiyacınız olup olmadığını belirlemek iyi bir fikirdir. Çalışır durumda bırakılan kaynaklar maliyetlerin artmasına neden olabilir. Kaynakları teker teker silebilir veya tüm kaynak grubunu silerek kaynak kümesinin tamamını kaldırabilirsiniz.

Sol gezinti bölmesindeki Tüm kaynaklar veya Kaynak grupları bağlantısını kullanarak Kaynakları Azure portalında bulabilir ve yönetebilirsiniz.

Sonraki adımlar

Bu hızlı başlangıçta, var olan bir dizinde semantik derecelendirmeyi çağırmayı öğrendiniz. Sonraki adım olarak kendi dizinlerinizde anlam sıralamasını denemenizi öneririz. Ancak tanıtımlara devam etmek istiyorsanız aşağıdaki bağlantıyı ziyaret edin.