Aracılığıyla paylaş


Hızlı Başlangıç: Anlam derecelendirmesi

Bu hızlı başlangıçta, var olan bir dizine anlamsal derecelendirme eklemeyi öğreneceksiniz. Hotels-sample-index'i ya da kendi verilerinizi kullanabilirsiniz.

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, en az geliştirici çabasıyla aramanın ilgi düzeyini önemli ölçüde artırabilir .

Yeniden derleme gereksinimi olmadan var olan bir dizine anlamsal yapılandırma ekleyebilirsiniz. Anlamsal derecelendirme en çok bilgilendirici veya açıklayıcı metinler üzerinde etkilidir.

Bu hızlı başlangıçta şunları yapmayı öğrenirsiniz:

  • Arama dizinine anlamsal yapılandırma ekleme
  • Sorguya anlamsal parametreler ekleme

Önkoşullar

Erişimi yapılandırma

Api anahtarlarını veya rol atamalarıyla Microsoft Entra Id'yi kullanarak Azure AI Search hizmetinize bağlanabilirsiniz. Anahtarları kullanmaya başlamak daha kolaydır, ancak roller daha güvenlidir.

Rol tabanlı erişimi yapılandırmak için:

  1. Azure portalında oturum açın ve arama hizmetinizi seçin.

  2. Sol bölmeden Ayarlar>Anahtarlar'ı seçin.

  3. API Erişimi denetimi'nin altında Her İkisi'ni seçin.

    Bu seçenek hem anahtar tabanlı hem de anahtarsız kimlik doğrulamasını etkinleştirir. Rolleri atadıktan sonra bu adıma dönebilir ve Rol tabanlı erişim denetimi'ni seçebilirsiniz.

  4. Sol bölmeden Erişim denetimi (IAM) öğesini seçin.

  5. Ekle>Rol ataması ekle’yi seçin.

  6. Bu rolleri kullanıcı hesabınıza atayın:

    • Arama Hizmeti Katkıda Bulunanı

    • Arama Dizini Veri Katkıda Bulunanı

Daha fazla bilgi için bkz . Rolleri kullanarak Azure AI Search'e bağlanma.

Dizinle başlayın

Bu hızlı başlangıçta, semantik yapılandırma içerecek şekilde değiştirilmiş mevcut bir dizin varsayılır. Azure portal sihirbazını kullanarak dakikalar içinde oluşturabileceğiniz hotels-sample-index'i öneririz.

  1. Azure portalında oturum açın ve arama hizmetinizi bulun.

  2. Arama yönetimi>Dizinleri'nin altında hotels-sample-index dosyasını açın. Dizinde anlamsal yapılandırma olmadığından emin olun.

    Azure portalında boş bir anlam yapılandırma sayfasının ekran görüntüsü.

  3. Dizinin çalışır durumda olduğunu doğrulamak için bir sorgu çalıştırın. Arama gezgini'nde, semantik derecelendirme uygulanmadan önce yanıtı görüntüleyebilmeniz için bu arama dizesini "canlı müziğe yürüme mesafesinde" girin.

    Portaldaki Arama Gezgini'nde bir sorgunun ekran görüntüsü.

    Yanıtınız, tam metin araması için varsayılan BM25 L1 sıralayıcısı tarafından puanlanan aşağıdaki örneğe benzer olmalıdır. Okunabilirlik için örnek yalnızca "HotelName" "HotelId" ve "Description" alanlarını seçer.

    Bu sorgu bir anahtar sözcük aramasıdır. Sonuçlar sorgu terimlerinde (yürüme, mesafe, canlı, müzik) veya dilsel bir değişkende (yürüme, yaşam) ayrıntılı eşleşmeler içerir.

    "@odata.count": 13,
    "value": [
      {
        "@search.score": 5.5153193,
        "HotelId": "2",
        "HotelName": "Old Century Hotel",
        "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music."
      },
      {
        "@search.score": 5.074317,
        "HotelId": "24",
        "HotelName": "Uptown Chic Hotel",
        "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance."
      },
      {
        "@search.score": 4.8959594,
        "HotelId": "4",
        "HotelName": "Sublime Palace Hotel",
        "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience."
      },
      {
        "@search.score": 2.5966604,
        "HotelId": "35",
        "HotelName": "Bellevue Suites",
        "Description": "Comfortable city living in the very center of downtown Bellevue. Newly reimagined, this hotel features apartment-style suites with sleeping, living and work spaces. Located across the street from the Light Rail to downtown. Free shuttle to the airport."
      },
      {
        "@search.score": 2.566386,
        "HotelId": "47",
        "HotelName": "Country Comfort Inn",
        "Description": "Situated conveniently at the north end of the village, the inn is just a short walk from the lake, offering reasonable rates and all the comforts home inlcuding living room suites and functional kitchens. Pets are welcome."
      },
      {
        "@search.score": 2.2405157,
        "HotelId": "9",
        "HotelName": "Smile Up Hotel",
        "Description": "Experience the fresh, modern downtown. Enjoy updated rooms, bold style & prime location. Don't miss our weekend live music series featuring who's new/next on the scene."
      },
      {
        "@search.score": 2.1737604,
        "HotelId": "8",
        "HotelName": "Foot Happy Suites",
        "Description": "Downtown in the heart of the business district. Close to everything. Leave your car behind and walk to the park, shopping, and restaurants. Or grab one of our bikes and take your explorations a little further."
      },
      {
        "@search.score": 2.0364518,
        "HotelId": "31",
        "HotelName": "Country Residence Hotel",
        "Description": "All of the suites feature full-sized kitchens stocked with cookware, separate living and sleeping areas and sofa beds. Some of the larger rooms have fireplaces and patios or balconies. Experience real country hospitality in the heart of bustling Nashville. The most vibrant music scene in the world is just outside your front door."
      },
      {
        "@search.score": 1.7595702,
        "HotelId": "49",
        "HotelName": "Swirling Currents Hotel",
        "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs. "
      },
      {
        "@search.score": 1.5502293,
        "HotelId": "15",
        "HotelName": "By the Market Hotel",
        "Description": "Book now and Save up to 30%. Central location. Walking distance from the Empire State Building & Times Square, in the Chelsea neighborhood. Brand new rooms. Impeccable service."
      },
      {
        "@search.score": 1.3302404,
        "HotelId": "42",
        "HotelName": "Rock Bottom Resort & Campground",
        "Description": "Rock Bottom is nestled on 20 unspoiled acres on a private cove of Rock Bottom Lake. We feature both lodging and campground accommodations to suit just about every taste. Even though we are out of the traffic of the city, getting there is only a short drive away."
      },
      {
        "@search.score": 0.9050383,
        "HotelId": "38",
        "HotelName": "Lakeside B & B",
        "Description": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply."
      },
      {
        "@search.score": 0.7334347,
        "HotelId": "39",
        "HotelName": "White Mountain Lodge & Suites",
        "Description": "Live amongst the trees in the heart of the forest. Hike along our extensive trail system. Visit the Natural Hot Springs, or enjoy our signature hot stone massage in the Cathedral of Firs. Relax in the meditation gardens, or join new friends around the communal firepit. Weekend evening entertainment on the patio features special guest musicians or poetry readings."
      }
    ]
    

Daha sonra, yanıtın nasıl değiştiğini görmek için semantik derecelendirme yapılandırıldıktan sonra bu sorguyu yeniden deneyebilirsiniz.

Tavsiye

Azure portalında anlamsal yapılandırma ekleyebilirsiniz. Ancak, program aracılığıyla anlamsal yapılandırma eklemeyi öğrenmek istiyorsanız, bu hızlı başlangıçtaki yönergelerle devam edin.

İstemciyi ayarlama

Bu hızlı başlangıçta, mevcut arama dizinine anlamsal derecelendirme eklemek için bir IDE ve Azure.Search.Documents istemci kitaplığını kullanacaksınız.

Bu hızlı başlangıç için Visual Studio'yu öneririz.

Tavsiye

Tamamlanmış bir projeyle başlamak için kaynak kodu indirebilir veya kendi projenizi oluşturmak için bu adımları izleyebilirsiniz.

Kitaplıkları yükleme

  1. Visual Studio'yu başlatın ve quickstart-semantic-search.sln açın veya konsol uygulaması şablonu kullanarak 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. Azure.Identity paketini arayın ve en son kararlı sürümü seçin.

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

Azure'a Giriş Yap

Azure portalında oturum açtıysanız Azure'da oturum açmış olursunuz. Emin değilseniz, oturum açmak için Azure CLI veya Azure PowerShell kullanın: az login veya az connect. Birden çok kiracınız ve aboneliğiniz varsa bağlanma hakkında yardım için hızlı başlangıç: Anahtar olmadan bağlanma bölümüne bakın.

Dizini güncelleştirme

Bu bölümde, bir arama dizinini anlamsal yapılandırma içerecek şekilde güncelleştirin. Kod, arama hizmetinden dizin tanımını alır ve anlamsal bir yapılandırma ekler.

  1. Visual Studio'da BuildIndex projesini açın. Program aşağıdaki koddan oluşur.

    Bu kod, arama hizmetinizdeki bir dizini güncelleştirmek için SearchIndexClient kullanır.

    class BuildIndex
    {
        static async Task Main(string[] args)
        {
            string searchServiceName = "PUT-YOUR-SEARCH-SERVICE-NAME-HERE";
            string indexName = "hotels-sample-index";
            string endpoint = $"https://{searchServiceName}.search.windows.net";
            var credential = new Azure.Identity.DefaultAzureCredential();
    
            await ListIndexesAsync(endpoint, credential);
            await UpdateIndexAsync(endpoint, credential, indexName);
        }
    
        // Print a list of all indexes on the search service
        // You should see hotels-sample-index in the list
        static async Task ListIndexesAsync(string endpoint, Azure.Core.TokenCredential credential)
        {
            try
            {
                var indexClient = new Azure.Search.Documents.Indexes.SearchIndexClient(
                    new Uri(endpoint),
                    credential
                );
    
                var indexes = indexClient.GetIndexesAsync();
    
                Console.WriteLine("Here's a list of all indexes on the search service. You should see hotels-sample-index:");
                await foreach (var index in indexes)
                {
                    Console.WriteLine(index.Name);
                }
                Console.WriteLine(); // Add an empty line for readability
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error listing indexes: {ex.Message}");
            }
        }
    
        static async Task UpdateIndexAsync(string endpoint, Azure.Core.TokenCredential credential, string indexName)
        {
            try
            {
                var indexClient = new Azure.Search.Documents.Indexes.SearchIndexClient(
                    new Uri(endpoint),
                    credential
                );
    
                // Get the existing definition of hotels-sample-index
                var indexResponse = await indexClient.GetIndexAsync(indexName);
                var index = indexResponse.Value;
    
                // Add a semantic configuration
                const string semanticConfigName = "semantic-config";
                AddSemanticConfiguration(index, semanticConfigName);
    
                // Update the index with the new information
                var updatedIndex = await indexClient.CreateOrUpdateIndexAsync(index);
                Console.WriteLine("Index updated successfully.");
    
                // Print the updated index definition as JSON
                var refreshedIndexResponse = await indexClient.GetIndexAsync(indexName);
                var refreshedIndex = refreshedIndexResponse.Value;
                var jsonOptions = new JsonSerializerOptions { WriteIndented = true };
                string indexJson = JsonSerializer.Serialize(refreshedIndex, jsonOptions);
                Console.WriteLine($"Here is the revised index definition:\n{indexJson}");
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error updating index: {ex.Message}");
            }
        }
    
        // This is the semantic configuration definition
        static void AddSemanticConfiguration(SearchIndex index, string semanticConfigName)
        {
            if (index.SemanticSearch == null)
            {
                index.SemanticSearch = new SemanticSearch();
            }
            var configs = index.SemanticSearch.Configurations;
            if (configs == null)
            {
                throw new InvalidOperationException("SemanticSearch.Configurations is null and cannot be assigned. Your service must be Basic tier or higher.");
            }
            if (!configs.Any(c => c.Name == semanticConfigName))
            {
                var prioritizedFields = new SemanticPrioritizedFields
                {
                    TitleField = new SemanticField("HotelName"),
                    ContentFields = { new SemanticField("Description") },
                    KeywordsFields = { new SemanticField("Tags") }
                };
    
                configs.Add(
                    new SemanticConfiguration(
                        semanticConfigName,
                        prioritizedFields
                    )
                );
                Console.WriteLine($"Added new semantic configuration '{semanticConfigName}' to the index definition.");
            }
            else
            {
                Console.WriteLine($"Semantic configuration '{semanticConfigName}' already exists in the index definition.");
            }
            index.SemanticSearch.DefaultConfigurationName = semanticConfigName;
        }
    }
    
  2. Arama hizmeti URL'sini geçerli bir uç noktayla değiştirin.

  3. Programı çalıştırın.

  4. Çıkış, Console.WriteLine'dan bir konsol penceresine kaydedilir. Yeni semantik yapılandırmanın dahil olduğu dizin şemasının JSON'ı da dahil olmak üzere her adım için iletileri görmeniz gerekir.

Anlamsal sorgular çalıştırma

Bu bölümde, program sıralı olarak birkaç semantik sorgu çalıştırır.

  1. Visual Studio'da QueryIndex projesini açın. Program aşağıdaki koddan oluşur.

    Bu kod, dizine sorgu göndermek için SearchClient kullanır.

    class SemanticQuery
    {
        static async Task Main(string[] args)
        {
            string searchServiceName = "PUT-YOUR-SEARCH-SERVICE-NAME-HERE";
            string indexName = "hotels-sample-index";
            string endpoint = $"https://{searchServiceName}.search.windows.net";
            var credential = new Azure.Identity.DefaultAzureCredential();
    
            var client = new SearchClient(new Uri(endpoint), indexName, credential);
    
            // Query 1: Simple query
            string searchText = "walking distance to live music";
            Console.WriteLine("\nQuery 1: Simple query using the search string 'walking distance to live music'.");
            await RunQuery(client, searchText, new SearchOptions
            {
                Size = 5,
                QueryType = SearchQueryType.Simple,
                IncludeTotalCount = true,
                Select = { "HotelId", "HotelName", "Description" }
            });
            Console.WriteLine("Press Enter to continue to the next query...");
            Console.ReadLine();
    
            // Query 2: Semantic query (no captions, no answers)
            Console.WriteLine("\nQuery 2: Semantic query (no captions, no answers) for 'walking distance to live music'.");
            var semanticOptions = new SearchOptions
            {
                Size = 5,
                QueryType = SearchQueryType.Semantic,
                SemanticSearch = new SemanticSearchOptions
                {
                    SemanticConfigurationName = "semantic-config"
                },
                IncludeTotalCount = true,
                Select = { "HotelId", "HotelName", "Description" }
            };
            await RunQuery(client, searchText, semanticOptions);
            Console.WriteLine("Press Enter to continue to the next query...");
            Console.ReadLine();
    
            // Query 3: Semantic query with captions
            Console.WriteLine("\nQuery 3: Semantic query with captions.");
            var captionsOptions = new SearchOptions
            {
                Size = 5,
                QueryType = SearchQueryType.Semantic,
                SemanticSearch = new SemanticSearchOptions
                {
                    SemanticConfigurationName = "semantic-config",
                    QueryCaption = new QueryCaption(QueryCaptionType.Extractive)
                    {
                        HighlightEnabled = true
                    }
                },
                IncludeTotalCount = true,
                Select = { "HotelId", "HotelName", "Description" }
            };
            // Add the field(s) you want captions for to the QueryCaption.Fields collection
            captionsOptions.HighlightFields.Add("Description");
            await RunQuery(client, searchText, captionsOptions, showCaptions: true);
            Console.WriteLine("Press Enter to continue to the next query...");
            Console.ReadLine();
    
            // Query 4: Semantic query with answers
            // This query uses different search text designed for an answers scenario
            string searchText2 = "what's a good hotel for people who like to read";
            searchText = searchText2; // Update searchText for the next query
            Console.WriteLine("\nQuery 4: Semantic query with a verbatim answer from the Description field for 'what's a good hotel for people who like to read'.");
            var answersOptions = new SearchOptions
            {
                Size = 5,
                QueryType = SearchQueryType.Semantic,
                SemanticSearch = new SemanticSearchOptions
                {
                    SemanticConfigurationName = "semantic-config",
                    QueryAnswer = new QueryAnswer(QueryAnswerType.Extractive)
                },
                IncludeTotalCount = true,
                Select = { "HotelId", "HotelName", "Description" }
            };
            await RunQuery(client, searchText2, answersOptions, showAnswers: true);
    
            static async Task RunQuery(
            SearchClient client,
            string searchText,
            SearchOptions options,
            bool showCaptions = false,
            bool showAnswers = false)
            {
                try
                {
                    var response = await client.SearchAsync<SearchDocument>(searchText, options);
    
                    if (showAnswers && response.Value.SemanticSearch?.Answers != null)
                    {
                        Console.WriteLine("Extractive Answers:");
                        foreach (var answer in response.Value.SemanticSearch.Answers)
                        {
                            Console.WriteLine($"  {answer.Highlights}");
                        }
                        Console.WriteLine(new string('-', 40));
                    }
    
                    await foreach (var result in response.Value.GetResultsAsync())
                    {
                        var doc = result.Document;
                        // Print captions first if available
                        if (showCaptions && result.SemanticSearch?.Captions != null)
                        {
                            foreach (var caption in result.SemanticSearch.Captions)
                            {
                                Console.WriteLine($"Caption: {caption.Highlights}");
                            }
                        }
                        Console.WriteLine($"HotelId: {doc.GetString("HotelId")}");
                        Console.WriteLine($"HotelName: {doc.GetString("HotelName")}");
                        Console.WriteLine($"Description: {doc.GetString("Description")}");
                        Console.WriteLine($"@search.score: {result.Score}");
    
                        // Print @search.rerankerScore if available
                        if (result.SemanticSearch != null && result.SemanticSearch.RerankerScore.HasValue)
                        {
                            Console.WriteLine($"@search.rerankerScore: {result.SemanticSearch.RerankerScore.Value}");
                        }
                        Console.WriteLine(new string('-', 40));
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"Error querying index: {ex.Message}");
                }
            }
        }
    }
    
  2. Arama hizmeti URL'sini geçerli bir uç noktayla değiştirin.

  3. Programı çalıştırın.

  4. Çıkış, Console.WriteLine'dan bir konsol penceresine kaydedilir. Her sorgu için arama sonuçlarını görmeniz gerekir.

Anlamsal sorgu çıktısı (açıklamalı alt yazı veya yanıt yok)

Bu çıkış, açıklamalı alt yazı veya yanıt içermeyen anlamsal sorgudan alınmaktadır. Sorgu dizesi 'canlı müzik için yürüme mesafesi'dir.

Burada, terim sorgusunun ilk sonuçları anlamsal derecelendirme modelleri kullanılarak yeniden kaydedilir. Bu belirli veri kümesi ve sorgu için ilk birkaç sonuç benzer konumlardadır. Semantik derecelendirmenin etkileri sonuçların geri kalanında daha belirgindir.

HotelId: 24
HotelName: Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.
@search.score: 5.074317
@search.rerankerScore: 2.613231658935547
----------------------------------------
HotelId: 2
HotelName: Old Century Hotel
Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
@search.score: 5.5153193
@search.rerankerScore: 2.271434783935547
----------------------------------------
HotelId: 4
HotelName: Sublime Palace Hotel
Description: Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
@search.score: 4.8959594
@search.rerankerScore: 1.9861756563186646
----------------------------------------
HotelId: 39
HotelName: White Mountain Lodge & Suites
Description: Live amongst the trees in the heart of the forest. Hike along our extensive trail system. Visit the Natural Hot Springs, or enjoy our signature hot stone massage in the Cathedral of Firs. Relax in the meditation gardens, or join new friends around the communal firepit. Weekend evening entertainment on the patio features special guest musicians or poetry readings.
@search.score: 0.7334347
@search.rerankerScore: 1.9615401029586792
----------------------------------------
HotelId: 15
HotelName: By the Market Hotel
Description: Book now and Save up to 30%. Central location. Walking distance from the Empire State Building & Times Square, in the Chelsea neighborhood. Brand new rooms. Impeccable service.
@search.score: 1.5502293
@search.rerankerScore: 1.9085469245910645
----------------------------------------
Press Enter to continue to the next query...

Açıklamalı alt yazılarla anlamsal sorgu çıktısı

Aşağıda, isabet vurgulama ile açıklamalı alt yazılar ekleyen sorgunun sonuçları yer alır.

Caption: Chic hotel near the city. High-rise hotel in downtown, within walking distance to<em> theaters, </em>art galleries, restaurants and shops. Visit<em> Seattle Art Museum </em>by day, and then head over to<em> Benaroya Hall </em>to catch the evening's concert performance.
HotelId: 24
HotelName: Uptown Chic Hotel
Description: Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.
@search.score: 5.074317
@search.rerankerScore: 2.613231658935547
----------------------------------------
Caption:
HotelId: 2
HotelName: Old Century Hotel
Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
@search.score: 5.5153193
@search.rerankerScore: 2.271434783935547
----------------------------------------
Caption: Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within<em> short walking distance </em>to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort,.
HotelId: 4
HotelName: Sublime Palace Hotel
Description: Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience.
@search.score: 4.8959594
@search.rerankerScore: 1.9861756563186646
----------------------------------------
Caption: Live amongst the trees in the heart of the forest. Hike along our extensive trail system. Visit the Natural Hot Springs, or enjoy our signature hot stone massage in the Cathedral of Firs. Relax in the meditation gardens, or join new friends around the communal firepit. Weekend<em> evening entertainment </em>on the patio features special<em> guest musicians </em>or.
HotelId: 39
HotelName: White Mountain Lodge & Suites
Description: Live amongst the trees in the heart of the forest. Hike along our extensive trail system. Visit the Natural Hot Springs, or enjoy our signature hot stone massage in the Cathedral of Firs. Relax in the meditation gardens, or join new friends around the communal firepit. Weekend evening entertainment on the patio features special guest musicians or poetry readings.
@search.score: 0.7334347
@search.rerankerScore: 1.9615401029586792
----------------------------------------
Caption: Book now and Save up to 30%. Central location. <em>Walking distance from the Empire State Building & Times Square, in the Chelsea neighborhood.</em> Brand new rooms. Impeccable service.
HotelId: 15
HotelName: By the Market Hotel
Description: Book now and Save up to 30%. Central location. Walking distance from the Empire State Building & Times Square, in the Chelsea neighborhood. Brand new rooms. Impeccable service.
@search.score: 1.5502293
@search.rerankerScore: 1.9085469245910645
----------------------------------------
Press Enter to continue to the next query...

Anlamsal yanıtlar için çıkış

Son sorgu anlamsal bir yanıt döndürür. Bu örnekte sorgu dizesini değiştirdiğimize dikkat edin: 'Okumayı seven kişiler için iyi bir otel nedir'.

Anlam dereceleyicisi, sorunun özelliklerine sahip bir sorgu dizesine yanıt üretebilir. Oluşturulan yanıt, içeriğinizden ayrıntılı olarak ayıklanır, böylece sohbet tamamlama modelinden beklediğiniz gibi oluşturulmuş içerik içermez. Anlamsal yanıt senaryonuz için yararlı değilse, kodunuzdan atlayabilirsiniz semantic_answers .

Anlamsal bir yanıt üretmek için, sorunun ve yanıtın yakın bir şekilde hizalanması ve modelin soruyu net bir şekilde yanıtlayan içerik bulması gerekir. Olası yanıtlar güvenilirlik eşiğini karşılayamazsa model yanıt döndürmez. Tanıtım amacıyla, bu örnekteki soru söz dizimini görebilmeniz için bir yanıt almak üzere tasarlanmıştır.

Yanıtların dizininizden alınan ayrıntılı içerik olduğunu ve bir kullanıcının görmeyi beklediği tümceciklerin eksik olabileceğini hatırlayın. kompozit yanıtlar almak için RAG deseni veya etken alım kullanmayı göz önünde bulundurun.

Extractive Answers:
  Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the<em> library </em>by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.
----------------------------------------
HotelId: 1
HotelName: Stay-Kay City Hotel
Description: This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.
@search.score: 2.0361428
@search.rerankerScore: 2.124817371368408
----------------------------------------
HotelId: 16
HotelName: Double Sanctuary Resort
Description: 5 star Luxury Hotel - Biggest Rooms in the city. #1 Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in/out, Fitness Center & espresso in room.
@search.score: 3.759768
@search.rerankerScore: 2.0705394744873047
----------------------------------------
HotelId: 38
HotelName: Lakeside B & B
Description: Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.
@search.score: 0.7308748
@search.rerankerScore: 2.041472911834717
----------------------------------------
HotelId: 2
HotelName: Old Century Hotel
Description: The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music.
@search.score: 3.391012
@search.rerankerScore: 2.0231292247772217
----------------------------------------
HotelId: 15
HotelName: By the Market Hotel
Description: Book now and Save up to 30%. Central location. Walking distance from the Empire State Building & Times Square, in the Chelsea neighborhood. Brand new rooms. Impeccable service.
@search.score: 1.3198771
@search.rerankerScore: 2.021622657775879
----------------------------------------

Bu hızlı başlangıçta, var olan bir dizine anlamsal derecelendirme eklemeyi öğreneceksiniz. Hotels-sample-index'i ya da kendi verilerinizi kullanabilirsiniz.

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, en az geliştirici çabasıyla aramanın ilgi düzeyini önemli ölçüde artırabilir .

Yeniden derleme gereksinimi olmadan var olan bir dizine anlamsal yapılandırma ekleyebilirsiniz. Anlamsal derecelendirme en çok bilgilendirici veya açıklayıcı metinler üzerinde etkilidir.

Bu hızlı başlangıçta şunları yapmayı öğrenirsiniz:

  • Arama dizinine anlamsal yapılandırma ekleme
  • Sorguya anlamsal parametreler ekleme

Önkoşullar

Erişimi yapılandırma

Api anahtarlarını veya rol atamalarıyla Microsoft Entra Id'yi kullanarak Azure AI Search hizmetinize bağlanabilirsiniz. Anahtarları kullanmaya başlamak daha kolaydır, ancak roller daha güvenlidir.

Rol tabanlı erişimi yapılandırmak için:

  1. Azure portalında oturum açın ve arama hizmetinizi seçin.

  2. Sol bölmeden Ayarlar>Anahtarlar'ı seçin.

  3. API Erişimi denetimi'nin altında Her İkisi'ni seçin.

    Bu seçenek hem anahtar tabanlı hem de anahtarsız kimlik doğrulamasını etkinleştirir. Rolleri atadıktan sonra bu adıma dönebilir ve Rol tabanlı erişim denetimi'ni seçebilirsiniz.

  4. Sol bölmeden Erişim denetimi (IAM) öğesini seçin.

  5. Ekle>Rol ataması ekle’yi seçin.

  6. Bu rolleri kullanıcı hesabınıza atayın:

    • Arama Hizmeti Katkıda Bulunanı

    • Arama Dizini Veri Katkıda Bulunanı

Daha fazla bilgi için bkz . Rolleri kullanarak Azure AI Search'e bağlanma.

Dizinle başlayın

Bu hızlı başlangıçta, semantik yapılandırma içerecek şekilde değiştirilmiş mevcut bir dizin varsayılır. Azure portal sihirbazını kullanarak dakikalar içinde oluşturabileceğiniz hotels-sample-index'i öneririz.

  1. Azure portalında oturum açın ve arama hizmetinizi bulun.

  2. Arama yönetimi>Dizinleri'nin altında hotels-sample-index dosyasını açın. Dizinde anlamsal yapılandırma olmadığından emin olun.

    Azure portalında boş bir anlam yapılandırma sayfasının ekran görüntüsü.

  3. Dizinin çalışır durumda olduğunu doğrulamak için bir sorgu çalıştırın. Arama gezgini'nde, semantik derecelendirme uygulanmadan önce yanıtı görüntüleyebilmeniz için bu arama dizesini "canlı müziğe yürüme mesafesinde" girin.

    Portaldaki Arama Gezgini'nde bir sorgunun ekran görüntüsü.

    Yanıtınız, tam metin araması için varsayılan BM25 L1 sıralayıcısı tarafından puanlanan aşağıdaki örneğe benzer olmalıdır. Okunabilirlik için örnek yalnızca "HotelName" "HotelId" ve "Description" alanlarını seçer.

    Bu sorgu bir anahtar sözcük aramasıdır. Sonuçlar sorgu terimlerinde (yürüme, mesafe, canlı, müzik) veya dilsel bir değişkende (yürüme, yaşam) ayrıntılı eşleşmeler içerir.

    "@odata.count": 13,
    "value": [
      {
        "@search.score": 5.5153193,
        "HotelId": "2",
        "HotelName": "Old Century Hotel",
        "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music."
      },
      {
        "@search.score": 5.074317,
        "HotelId": "24",
        "HotelName": "Uptown Chic Hotel",
        "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance."
      },
      {
        "@search.score": 4.8959594,
        "HotelId": "4",
        "HotelName": "Sublime Palace Hotel",
        "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience."
      },
      {
        "@search.score": 2.5966604,
        "HotelId": "35",
        "HotelName": "Bellevue Suites",
        "Description": "Comfortable city living in the very center of downtown Bellevue. Newly reimagined, this hotel features apartment-style suites with sleeping, living and work spaces. Located across the street from the Light Rail to downtown. Free shuttle to the airport."
      },
      {
        "@search.score": 2.566386,
        "HotelId": "47",
        "HotelName": "Country Comfort Inn",
        "Description": "Situated conveniently at the north end of the village, the inn is just a short walk from the lake, offering reasonable rates and all the comforts home inlcuding living room suites and functional kitchens. Pets are welcome."
      },
      {
        "@search.score": 2.2405157,
        "HotelId": "9",
        "HotelName": "Smile Up Hotel",
        "Description": "Experience the fresh, modern downtown. Enjoy updated rooms, bold style & prime location. Don't miss our weekend live music series featuring who's new/next on the scene."
      },
      {
        "@search.score": 2.1737604,
        "HotelId": "8",
        "HotelName": "Foot Happy Suites",
        "Description": "Downtown in the heart of the business district. Close to everything. Leave your car behind and walk to the park, shopping, and restaurants. Or grab one of our bikes and take your explorations a little further."
      },
      {
        "@search.score": 2.0364518,
        "HotelId": "31",
        "HotelName": "Country Residence Hotel",
        "Description": "All of the suites feature full-sized kitchens stocked with cookware, separate living and sleeping areas and sofa beds. Some of the larger rooms have fireplaces and patios or balconies. Experience real country hospitality in the heart of bustling Nashville. The most vibrant music scene in the world is just outside your front door."
      },
      {
        "@search.score": 1.7595702,
        "HotelId": "49",
        "HotelName": "Swirling Currents Hotel",
        "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs. "
      },
      {
        "@search.score": 1.5502293,
        "HotelId": "15",
        "HotelName": "By the Market Hotel",
        "Description": "Book now and Save up to 30%. Central location. Walking distance from the Empire State Building & Times Square, in the Chelsea neighborhood. Brand new rooms. Impeccable service."
      },
      {
        "@search.score": 1.3302404,
        "HotelId": "42",
        "HotelName": "Rock Bottom Resort & Campground",
        "Description": "Rock Bottom is nestled on 20 unspoiled acres on a private cove of Rock Bottom Lake. We feature both lodging and campground accommodations to suit just about every taste. Even though we are out of the traffic of the city, getting there is only a short drive away."
      },
      {
        "@search.score": 0.9050383,
        "HotelId": "38",
        "HotelName": "Lakeside B & B",
        "Description": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply."
      },
      {
        "@search.score": 0.7334347,
        "HotelId": "39",
        "HotelName": "White Mountain Lodge & Suites",
        "Description": "Live amongst the trees in the heart of the forest. Hike along our extensive trail system. Visit the Natural Hot Springs, or enjoy our signature hot stone massage in the Cathedral of Firs. Relax in the meditation gardens, or join new friends around the communal firepit. Weekend evening entertainment on the patio features special guest musicians or poetry readings."
      }
    ]
    

Daha sonra, yanıtın nasıl değiştiğini görmek için semantik derecelendirme yapılandırıldıktan sonra bu sorguyu yeniden deneyebilirsiniz.

Tavsiye

Azure portalında anlamsal yapılandırma ekleyebilirsiniz. Ancak, program aracılığıyla anlamsal yapılandırma eklemeyi öğrenmek istiyorsanız, bu hızlı başlangıçtaki yönergelerle devam edin.

İstemciyi ayarlama

Bu hızlı başlangıçta, anlamsal derecelendirme hakkında bilgi edinmek için Python için Azure SDK'daki bir Jupyter not defteri ve azure-search-documents kitaplığını kullanın.

Bu hızlı başlangıç için Python 3.10 veya üzeri yüklü Visual Studio Code ve Python uzantısı önerilir.

Tavsiye

Tamamlanmış bir projeyle başlamak için tamamlanmış bir not defterini indirebilir veya kendi projenizi oluşturmak için bu adımları izleyebilirsiniz.

Bu hızlı başlangıç için bir sanal ortam öneririz:

  1. Visual Studio Code’u başlatın.

  2. semantic-search-quickstart.ipynb dosyasını açın veya yeni bir not defteri oluşturun.

  3. Ctrl+Shift+P tuşlarını kullanarak Komut Paleti'ni açın.

  4. Python: Ortam Oluştur'u arayın.

  5. Venv. seçeneğini belirleyin

  6. Bir Python yorumlayıcısı seçin. 3.10 veya üzerini seçin.

Kurulumu bir dakika sürebilir. Sorunlarla karşılaşırsanız bkz . VS Code'da Python ortamları.

Paketleri yükleme ve ortam değişkenlerini ayarlama

  1. Azure-search-documents dahil olmak üzere paketleri yükleyin.

    ! pip install -r requirements.txt --quiet
    
  2. "sample.env'yi .env olarak yeniden adlandırın ve arama hizmeti uç noktanızı sağlayın." Uç noktayı arama hizmetine Genel Bakış sayfasından Azure portalından alabilirsiniz.

    AZURE_SEARCH_ENDPOINT=https://your-search-service.search.windows.net
    AZURE_SEARCH_INDEX_NAME=hotels-sample-index
    

Azure'a Giriş Yap

Azure portalında oturum açtıysanız Azure'da oturum açmış olursunuz. Emin değilseniz, oturum açmak için Azure CLI veya Azure PowerShell kullanın: az login veya az connect. Birden çok kiracınız ve aboneliğiniz varsa bağlanma hakkında yardım için hızlı başlangıç: Anahtar olmadan bağlanma bölümüne bakın.

Dizini güncelleştirme

Bu bölümde, bir arama dizinini anlamsal yapılandırma içerecek şekilde güncelleştirin. Kod, arama hizmetinden dizin tanımını alır ve anlamsal bir yapılandırma ekler.

  1. Visual Studio Code'da semantic-search-quickstart.ipynb dosyasını açın veya yeni bir dosya oluşturun.

  2. Çözümde kullanılan değişkenleri sağlayın.

    # Provide variables
    from dotenv import load_dotenv
    from azure.identity import DefaultAzureCredential, get_bearer_token_provider
    import os
    
    load_dotenv(override=True) # Take environment variables from .env.
    
    # The following variables from your .env file are used in this notebook
    search_endpoint = os.environ["AZURE_SEARCH_ENDPOINT"]
    credential = DefaultAzureCredential()
    token_provider = get_bearer_token_provider(credential, "https://search.azure.com/.default")
    index_name = os.getenv("AZURE_SEARCH_INDEX", "hotels-sample-index")
    
  3. SearchIndexClient oluşturun ve mevcut hotels-sample-index dosyasını alın.

    from azure.search.documents.indexes import SearchIndexClient
    from azure.identity import DefaultAzureCredential
    import os
    
    # Initialize the client (similar to what you already have)
    search_endpoint = os.environ["AZURE_SEARCH_ENDPOINT"]
    credential = DefaultAzureCredential()
    index_name = "hotels-sample-index"  # or use your existing index_name variable
    
    # Create the SearchIndexClient
    index_client = SearchIndexClient(endpoint=search_endpoint, credential=credential)
    
    try:
        # Get the existing index schema
        index = index_client.get_index(index_name)
    
        print(f"Index name: {index.name}")
        print(f"Number of fields: {len(index.fields)}")
    
        # Print field details
        for field in index.fields:
            print(f"Field: {field.name}, Type: {field.type}, Searchable: {field.searchable}")
    
        # Access semantic configuration if it exists
        if index.semantic_search and index.semantic_search.configurations:
            for config in index.semantic_search.configurations:
                print(f"Semantic config: {config.name}")
                if config.prioritized_fields.title_field:
                    print(f"Title field: {config.prioritized_fields.title_field.field_name}")
        else:
            print("No semantic configuration exists for this index")
    
    except Exception as ex:
        print(f"Error retrieving index: {ex}")
    
  4. Kodu çalıştırın.

  5. Çıktı, dizinin adı, alan listesi ve anlamsal yapılandırma olup olmadığını belirten bir deyimdir. Bu hızlı başlangıcın amaçları doğrultusunda, iletide "Bu dizin için anlamsal yapılandırma yok" ifadesi yer almalıdır.

  6. Arama hizmetinizdeki mevcut bir hotels-sample-index öğesine anlamsal yapılandırma ekleyin. Bu işlem tarafından hiçbir arama belgesi silinmez ve yapılandırma eklendikten sonra dizininiz çalışmaya devam eder.

    # Add semantic configuration to hotels-sample-index and display updated index details
    from azure.search.documents.indexes.models import (
        SemanticConfiguration,
        SemanticField,
        SemanticPrioritizedFields,
        SemanticSearch
    )
    
    try:
        # Get the existing index
        existing_index = index_client.get_index(index_name)
    
        # Create a new semantic configuration
        new_semantic_config = SemanticConfiguration(
            name="semantic-config",
            prioritized_fields=SemanticPrioritizedFields(
                title_field=SemanticField(field_name="HotelName"),
                keywords_fields=[SemanticField(field_name="Tags")],
                content_fields=[SemanticField(field_name="Description")]
            )
        )
    
        # Add semantic configuration to the index
        if existing_index.semantic_search is None:
            existing_index.semantic_search = SemanticSearch(configurations=[new_semantic_config])
        else:
            # Check if configuration already exists
            config_exists = any(config.name == "semantic-config" 
                              for config in existing_index.semantic_search.configurations)
            if not config_exists:
                existing_index.semantic_search.configurations.append(new_semantic_config)
    
        # Update the index
        result = index_client.create_or_update_index(existing_index)
    
        # Get the updated index and display detailed information
        updated_index = index_client.get_index(index_name)
    
        print("Semantic configurations:")
        print("-" * 40)
        if updated_index.semantic_search and updated_index.semantic_search.configurations:
            for config in updated_index.semantic_search.configurations:
                print(f"  Configuration: {config.name}")
                if config.prioritized_fields.title_field:
                    print(f"    Title field: {config.prioritized_fields.title_field.field_name}")
                if config.prioritized_fields.keywords_fields:
                    keywords = [kf.field_name for kf in config.prioritized_fields.keywords_fields]
                    print(f"    Keywords fields: {', '.join(keywords)}")
                if config.prioritized_fields.content_fields:
                    content = [cf.field_name for cf in config.prioritized_fields.content_fields]
                    print(f"    Content fields: {', '.join(content)}")
                print()
        else:
            print("  No semantic configurations found")
    
        print("✅ Semantic configuration successfully added!")
    
    except Exception as ex:
        print(f"❌ Error adding semantic configuration: {ex}")
    
  7. Kodu çalıştırın.

  8. Çıktı, yeni eklediğiniz anlamsal yapılandırmadır.

Anlamsal sorgular çalıştırma

Dizin semantik bir yapılandırmaya sahip olduktan sonra, anlamsal parametreler içeren sorgular çalıştırabilirsiniz.

  1. SearchClient ve anlamsal sorgu türünü ve anlamsal yapılandırmayı içeren bir sorgu isteği oluşturun. Bu, anlamsal derecelendirmeyi çağırmak için en düşük gereksinimdir.

    # Set up the search client
    search_client = SearchClient(endpoint=search_endpoint,
                          index_name=index_name,
                          credential=credential)
    
    # Runs a semantic query (runs a BM25-ranked query, rescoring and promoting the most semantically relevant matches to the top)
    results =  search_client.search(query_type='semantic', semantic_configuration_name='semantic-config',
        search_text="walking distance to live music", 
        select='HotelId,HotelName,Description', query_caption='extractive')
    
    for result in results:
        print(result["@search.reranker_score"])
        print(result["HotelId"])
        print(result["HotelName"])
        print(f"Description: {result['Description']}")
    
  2. Kodu çalıştırın.

  3. Çıktı, "@search.reranker_score" tarafından sıralanmış 13 belgeden oluşmalıdır.

Açıklamalı alt yazıları döndürme

İsteğe bağlı olarak, metnin bölümlerini ayıklamak için altyazılar ekleyebilir ve önemli terimler ve ifadelerde vurgulama yapabilirsiniz. Bu sorgu resim yazıları ekler.

  1. Sorguya ekleyin captions .

    # Runs a semantic query that returns captions
    results =  search_client.search(query_type='semantic', semantic_configuration_name='semantic-config',
        search_text="walking distance to live music", 
        select='HotelName,HotelId,Description', query_caption='extractive')
    
    for result in results:
        print(result["@search.reranker_score"])
        print(result["HotelId"])
        print(result["HotelName"])
        print(f"Description: {result['Description']}")
    
        captions = result["@search.captions"]
        if captions:
            caption = captions[0]
            if caption.highlights:
                print(f"Caption: {caption.highlights}\n")
            else:
                print(f"Caption: {caption.text}\n")
    
  2. Kodu çalıştırın.

  3. Çıktı, arama alanının yanı sıra yeni bir başlık öğesi içermelidir. Açıklamalı alt yazılar, sonuçtaki en ilgili bölümlerdir. Dizininiz daha büyük metin öbekleri içeriyorsa, resim yazısı en ilginç cümleleri ayıklamaya yardımcı olur.

    2.613231658935547
    24
    Uptown Chic Hotel
    Description: Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.
    Caption: Chic hotel near the city. High-rise hotel in downtown, within walking distance to<em> theaters, </em>art galleries, restaurants and shops. Visit<em> Seattle Art Museum </em>by day, and then head over to<em> Benaroya Hall </em>to catch the evening's concert performance.
    

Anlamsal yanıtlar döndür

Bu son sorguda anlamsal yanıtlar döndür.

Anlam dereceleyicisi, sorunun özelliklerine sahip bir sorgu dizesine yanıt üretebilir. Oluşturulan yanıt, içeriğinizden ayrıntılı olarak ayıklanır, böylece sohbet tamamlama modelinden beklediğiniz gibi oluşturulmuş içerik içermez. Anlamsal yanıt senaryonuz için yararlı değilse, kodunuzdan atlayabilirsiniz semantic_answers .

Anlamsal bir yanıt üretmek için, sorunun ve yanıtın yakın bir şekilde hizalanması ve modelin soruyu net bir şekilde yanıtlayan içerik bulması gerekir. Olası yanıtlar güvenilirlik eşiğini karşılayamazsa model yanıt döndürmez. Tanıtım amacıyla, bu örnekteki soru söz dizimini görebilmeniz için bir yanıt almak üzere tasarlanmıştır.

  1. Sorguya ekleyin answers .

    # Run a semantic query that returns semantic answers  
    results =  search_client.search(query_type='semantic', semantic_configuration_name='semantic-config',
     search_text="what's a good hotel for people who like to read",
     select='HotelName,Description,Category', query_caption='extractive', query_answer="extractive",)
    
    semantic_answers = results.get_answers()
    for answer in semantic_answers:
        if answer.highlights:
            print(f"Semantic Answer: {answer.highlights}")
        else:
            print(f"Semantic Answer: {answer.text}")
        print(f"Semantic Answer Score: {answer.score}\n")
    
    for result in results:
        print(result["@search.reranker_score"])
        print(result["HotelName"])
        print(f"Description: {result['Description']}")
    
        captions = result["@search.captions"]
        if captions:
            caption = captions[0]
            if caption.highlights:
                print(f"Caption: {caption.highlights}\n")
            else:
                print(f"Caption: {caption.text}\n")
    
  2. Kodu çalıştırın.

  3. Çıktı, sorunun en iyi yanıtının sonuçlardan birinden alındığı aşağıdaki örneğe benzer görünmelidir.

    Yanıtların dizininizden alınan ayrıntılı içerik olduğunu ve bir kullanıcının görmeyi beklediği tümceciklerin eksik olabileceğini hatırlayın. Sohbet tamamlama modeli tarafından üretilen yanıtları almak için bir RAG pattern veya agentic retrieval kullanmayı düşünün.

    Semantic Answer: Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the<em> library </em>by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.
    Semantic Answer Score: 0.9829999804496765
    
    2.124817371368408
    1
    Stay-Kay City Hotel
    Description: This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.
    Caption: This classic hotel is<em> fully-refurbished </em>and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities.
    
    2.0705394744873047
    16
    Double Sanctuary Resort
    Description: 5 star Luxury Hotel - Biggest Rooms in the city. #1 Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in/out, Fitness Center & espresso in room.
    Caption: <em>5 star Luxury Hotel </em>-<em> Biggest </em>Rooms in the city. #1 Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in/out, Fitness Center & espresso in room.
    
    2.041472911834717
    38
    Lakeside B & B
    Description: Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.
    Caption: Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the<em> library </em>by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.
    
    2.084540843963623
    Double Sanctuary Resort
    Description: 5 star Luxury Hotel - Biggest Rooms in the city. #1 Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in/out, Fitness Center & espresso in room.
    Caption: <em>5 star Luxury Hotel </em>-<em> Biggest </em>Rooms in the<em> city. #1 </em>Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in/out, Fitness Center & espresso in room.
    
    ...
    

Bu hızlı başlangıçta, var olan bir dizine anlamsal derecelendirme eklemeyi öğreneceksiniz. Hotels-sample-index'i ya da kendi verilerinizi kullanabilirsiniz.

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, en az geliştirici çabasıyla aramanın ilgi düzeyini önemli ölçüde artırabilir .

Yeniden derleme gereksinimi olmadan var olan bir dizine anlamsal yapılandırma ekleyebilirsiniz. Anlamsal derecelendirme en çok bilgilendirici veya açıklayıcı metinler üzerinde etkilidir.

Bu hızlı başlangıçta şunları yapmayı öğrenirsiniz:

  • Arama dizinine anlamsal yapılandırma ekleme
  • Sorguya anlamsal parametreler ekleme

Önkoşullar

Erişimi yapılandırma

Api anahtarlarını veya rol atamalarıyla Microsoft Entra Id'yi kullanarak Azure AI Search hizmetinize bağlanabilirsiniz. Anahtarları kullanmaya başlamak daha kolaydır, ancak roller daha güvenlidir.

Rol tabanlı erişimi yapılandırmak için:

  1. Azure portalında oturum açın ve arama hizmetinizi seçin.

  2. Sol bölmeden Ayarlar>Anahtarlar'ı seçin.

  3. API Erişimi denetimi'nin altında Her İkisi'ni seçin.

    Bu seçenek hem anahtar tabanlı hem de anahtarsız kimlik doğrulamasını etkinleştirir. Rolleri atadıktan sonra bu adıma dönebilir ve Rol tabanlı erişim denetimi'ni seçebilirsiniz.

  4. Sol bölmeden Erişim denetimi (IAM) öğesini seçin.

  5. Ekle>Rol ataması ekle’yi seçin.

  6. Bu rolleri kullanıcı hesabınıza atayın:

    • Arama Hizmeti Katkıda Bulunanı

    • Arama Dizini Veri Katkıda Bulunanı

Daha fazla bilgi için bkz . Rolleri kullanarak Azure AI Search'e bağlanma.

Dizinle başlayın

Bu hızlı başlangıçta, semantik yapılandırma içerecek şekilde değiştirilmiş mevcut bir dizin varsayılır. Azure portal sihirbazını kullanarak dakikalar içinde oluşturabileceğiniz hotels-sample-index'i öneririz.

  1. Azure portalında oturum açın ve arama hizmetinizi bulun.

  2. Arama yönetimi>Dizinleri'nin altında hotels-sample-index dosyasını açın. Dizinde anlamsal yapılandırma olmadığından emin olun.

    Azure portalında boş bir anlam yapılandırma sayfasının ekran görüntüsü.

  3. Dizinin çalışır durumda olduğunu doğrulamak için bir sorgu çalıştırın. Arama gezgini'nde, semantik derecelendirme uygulanmadan önce yanıtı görüntüleyebilmeniz için bu arama dizesini "canlı müziğe yürüme mesafesinde" girin.

    Portaldaki Arama Gezgini'nde bir sorgunun ekran görüntüsü.

    Yanıtınız, tam metin araması için varsayılan BM25 L1 sıralayıcısı tarafından puanlanan aşağıdaki örneğe benzer olmalıdır. Okunabilirlik için örnek yalnızca "HotelName" "HotelId" ve "Description" alanlarını seçer.

    Bu sorgu bir anahtar sözcük aramasıdır. Sonuçlar sorgu terimlerinde (yürüme, mesafe, canlı, müzik) veya dilsel bir değişkende (yürüme, yaşam) ayrıntılı eşleşmeler içerir.

    "@odata.count": 13,
    "value": [
      {
        "@search.score": 5.5153193,
        "HotelId": "2",
        "HotelName": "Old Century Hotel",
        "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music."
      },
      {
        "@search.score": 5.074317,
        "HotelId": "24",
        "HotelName": "Uptown Chic Hotel",
        "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance."
      },
      {
        "@search.score": 4.8959594,
        "HotelId": "4",
        "HotelName": "Sublime Palace Hotel",
        "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience."
      },
      {
        "@search.score": 2.5966604,
        "HotelId": "35",
        "HotelName": "Bellevue Suites",
        "Description": "Comfortable city living in the very center of downtown Bellevue. Newly reimagined, this hotel features apartment-style suites with sleeping, living and work spaces. Located across the street from the Light Rail to downtown. Free shuttle to the airport."
      },
      {
        "@search.score": 2.566386,
        "HotelId": "47",
        "HotelName": "Country Comfort Inn",
        "Description": "Situated conveniently at the north end of the village, the inn is just a short walk from the lake, offering reasonable rates and all the comforts home inlcuding living room suites and functional kitchens. Pets are welcome."
      },
      {
        "@search.score": 2.2405157,
        "HotelId": "9",
        "HotelName": "Smile Up Hotel",
        "Description": "Experience the fresh, modern downtown. Enjoy updated rooms, bold style & prime location. Don't miss our weekend live music series featuring who's new/next on the scene."
      },
      {
        "@search.score": 2.1737604,
        "HotelId": "8",
        "HotelName": "Foot Happy Suites",
        "Description": "Downtown in the heart of the business district. Close to everything. Leave your car behind and walk to the park, shopping, and restaurants. Or grab one of our bikes and take your explorations a little further."
      },
      {
        "@search.score": 2.0364518,
        "HotelId": "31",
        "HotelName": "Country Residence Hotel",
        "Description": "All of the suites feature full-sized kitchens stocked with cookware, separate living and sleeping areas and sofa beds. Some of the larger rooms have fireplaces and patios or balconies. Experience real country hospitality in the heart of bustling Nashville. The most vibrant music scene in the world is just outside your front door."
      },
      {
        "@search.score": 1.7595702,
        "HotelId": "49",
        "HotelName": "Swirling Currents Hotel",
        "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs. "
      },
      {
        "@search.score": 1.5502293,
        "HotelId": "15",
        "HotelName": "By the Market Hotel",
        "Description": "Book now and Save up to 30%. Central location. Walking distance from the Empire State Building & Times Square, in the Chelsea neighborhood. Brand new rooms. Impeccable service."
      },
      {
        "@search.score": 1.3302404,
        "HotelId": "42",
        "HotelName": "Rock Bottom Resort & Campground",
        "Description": "Rock Bottom is nestled on 20 unspoiled acres on a private cove of Rock Bottom Lake. We feature both lodging and campground accommodations to suit just about every taste. Even though we are out of the traffic of the city, getting there is only a short drive away."
      },
      {
        "@search.score": 0.9050383,
        "HotelId": "38",
        "HotelName": "Lakeside B & B",
        "Description": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply."
      },
      {
        "@search.score": 0.7334347,
        "HotelId": "39",
        "HotelName": "White Mountain Lodge & Suites",
        "Description": "Live amongst the trees in the heart of the forest. Hike along our extensive trail system. Visit the Natural Hot Springs, or enjoy our signature hot stone massage in the Cathedral of Firs. Relax in the meditation gardens, or join new friends around the communal firepit. Weekend evening entertainment on the patio features special guest musicians or poetry readings."
      }
    ]
    

Daha sonra, yanıtın nasıl değiştiğini görmek için semantik derecelendirme yapılandırıldıktan sonra bu sorguyu yeniden deneyebilirsiniz.

Tavsiye

Azure portalında anlamsal yapılandırma ekleyebilirsiniz. Ancak, program aracılığıyla anlamsal yapılandırma eklemeyi öğrenmek istiyorsanız, bu hızlı başlangıçtaki yönergelerle devam edin.

İstemciyi ayarlama

Bu hızlı başlangıçta, bir anlamsal sıralayıcıyı yapılandırmak ve kullanmak için bir REST istemcisi ve Azure AI Arama REST API'lerini kullanacaksınız.

Bu hızlı başlangıç için REST istemci uzantısına sahip Visual Studio Code'un kullanılması önerilir.

Tavsiye

Tamamlanmış bir projeyle başlamak için kaynak kodu indirebilir veya kendi projenizi oluşturmak için bu adımları izleyebilirsiniz.

  1. Visual Studio Code'u başlatın ve semantic-search-index-update.rest dosyasını açın veya yeni bir dosya oluşturun.

  2. Üst kısımda arama hizmetiniz, yetkilendirmeniz ve dizin adınız için ortam değişkenlerini ayarlayın.

    • için @searchURLAzure portalında oturum açın ve arama hizmetine Genel Bakış sayfasından URL'yi kopyalayın.

    • için @personalAccessToken, kişisel erişim belirtecinizi almak için Anahtarsız bağlanma başlığındaki yönergeleri izleyin.

  3. Bağlantıyı test etmek için ilk isteğinizi gönderin.

    ### List existing indexes by name (verify the connection)
     GET  {{searchUrl}}/indexes?api-version=2025-05-01-preview&$select=name  HTTP/1.1
     Authorization: Bearer {{personalAccessToken}}
    
  4. Gönderilen isteği seçin.

    REST istemcisi gönderme isteği bağlantısının ekran görüntüsü.

  5. Bu GET isteğinin çıktısı var olan dizinlerin listesini döndürür. Bu hızlı başlangıçta kullanılan hotels-sample-index dahil olmak üzere dizinlerin bir listesini ve bir HTTP 200 Başarı durum kodunu almalısınız.

Dizini güncelleştirme

REST API kullanarak bir dizini güncelleştirmek için şemanın tamamını ve yapmak istediğiniz değişiklikleri sağlamanız gerekir. Bu istek hotels-sample-index şemasını ve anlamsal yapılandırmayı sağlar. Değişiklik aşağıdaki JSON'lardan oluşur.

"semantic": {
   "configurations": [
   {
      "name": "semantic-config",
      "flightingOptIn": false,
      "rankingOrder": "BoostedRerankerScore",
      "prioritizedFields": {
         "titleField": { "fieldName": "HotelName" },
         "prioritizedContentFields": [{ "fieldName": "Description" }],
         "prioritizedKeywordsFields": [{ "fieldName": "Tags" }]
      }
   }
   ]
}
  1. Dizin adını, işlemi ve tam JSON şemasını belirten bir POST isteği formüle edin. Şemanın tüm gerekli öğeleri mevcut olmalıdır. Bu istek hotels-sample-index için tam şemayı ve anlamsal yapılandırmayı içerir.

    POST  {{searchUrl}}/indexes?api-version=2025-05-01-preview  HTTP/1.1
    Content-Type: application/json
    Authorization: Bearer {{personalAccessToken}}
    
    {
       "name": "hotels-sample-index",
       "fields": [
           { "name": "HotelId", "type": "Edm.String", "searchable": false, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true, "key": true },
           { "name": "HotelName", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "stored": true, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
           { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "stored": true, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
           { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "stored": true, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
           { "name": "Category", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft" },
           { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft" },
           { "name": "ParkingIncluded", "type": "Edm.Boolean", "searchable": false, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true },
           { "name": "LastRenovationDate", "type": "Edm.DateTimeOffset", "searchable": false, "filterable": false, "retrievable": true, "stored": true, "sortable": true, "facetable": false },
           { "name": "Rating", "type": "Edm.Double", "searchable": false, "filterable": true, "retrievable": true, "stored": true, "sortable": true, "facetable": true },
           { "name": "Address", "type": "Edm.ComplexType", "fields": [
              { "name": "StreetAddress", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "stored": true, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
              { "name": "City", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft" },
              { "name": "StateProvince", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft" },
              { "name": "PostalCode", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft" },
              { "name": "Country", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft" }]},
           { "name": "Location", "type": "Edm.GeographyPoint", "searchable": false, "filterable": true, "retrievable": true, "stored": true, "sortable": true, "facetable": false },
           { "name": "Rooms", "type": "Collection(Edm.ComplexType)", "fields": [
              { "name": "Description", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "stored": true, "sortable": false, "facetable": false, "analyzer": "en.microsoft" },
              { "name": "Description_fr", "type": "Edm.String", "searchable": true, "filterable": false, "retrievable": true, "stored": true, "sortable": false, "facetable": false, "analyzer": "fr.microsoft" },
              { "name": "Type", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft" },
              { "name": "BaseRate", "type": "Edm.Double", "searchable": false, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true },
              { "name": "BedOptions", "type": "Edm.String", "searchable": true, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft" },
              { "name": "SleepsCount", "type": "Edm.Int64", "searchable": false, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true },
              { "name": "SmokingAllowed", "type": "Edm.Boolean", "searchable": false, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true },
              { "name": "Tags", "type": "Collection(Edm.String)", "searchable": true, "filterable": true, "retrievable": true, "stored": true, "sortable": false, "facetable": true, "analyzer": "en.microsoft" }]},
           { "name": "id", "type": "Edm.String", "searchable": false, "filterable": false, "retrievable": false, "stored": true, "sortable": false, "facetable": false },
           { "name": "rid", "type": "Edm.String", "searchable": false, "filterable": false, "retrievable": false, "stored": true, "sortable": false, "facetable": false }],
      "scoringProfiles": [],
      "suggesters": [
        {
          "name": "sg",
          "searchMode": "analyzingInfixMatching",
          "sourceFields": ["Address/City", "Address/Country", "Rooms/Type", "Rooms/Tags"]
        }
      ],
      "analyzers": [],
      "normalizers": [],
      "tokenizers": [],
      "tokenFilters": [],
      "charFilters": [],
      "similarity": {
        "@odata.type": "#Microsoft.Azure.Search.BM25Similarity"
      },
      "semantic": {
        "configurations": [
          {
            "name": "semantic-config",
            "flightingOptIn": false,
            "rankingOrder": "BoostedRerankerScore",
            "prioritizedFields": {
              "titleField": {
                "fieldName": "HotelName"
              },
              "prioritizedContentFields": [
                {
                  "fieldName": "Description"
                }
              ],
              "prioritizedKeywordsFields": [
                {
                  "fieldName": "Tags"
                }
              ]
            }
          }
        ]
      }
    }
    
  2. Gönderilen isteği seçin.

  3. Bu POST isteğinin çıktısı bir HTTP 200 Başarı durumu iletisidir.

Anlamsal sorgular çalıştırma

Gerekli semantik parametreler query_type ve semantic_configuration_name içerir. Aşağıda en düşük parametreleri kullanan temel bir anlamsal sorgu örneği verilmiştir.

  1. semantic-search-query.rest dosyasını açın veya yeni bir dosya oluşturun.

  2. Dosyanın üst kısmında arama hizmetiniz, yetkilendirmeniz ve dizin adınız için ortam değişkenlerini ayarlayın.

    • için @searchURLAzure portalında oturum açın ve arama hizmetine Genel Bakış sayfasından URL'yi kopyalayın.

    • için @personalAccessToken, kişisel erişim belirtecinizi almak için Anahtarsız bağlanma başlığındaki yönergeleri izleyin.

  3. hotels-sample-index değerini döndüren bir GET isteğiyle bağlantıyı test edin.

    GET  {{searchUrl}}/indexes/hotels-sample-index?api-version=2025-05-01-preview  HTTP/1.1
    Authorization: Bearer {{personalAccessToken}}
    
  4. Anlamsal sorgu türünü ve yapılandırma adını içeren bir sorgu gönderin.

     POST {{searchUrl}}/indexes/hotels-sample-index/docs/search?api-version=2025-05-01-preview  HTTP/1.1
     Content-Type: application/json
     Authorization: Bearer {{personalAccessToken}}
    
     {
       "search": "walking distance to live music",
       "select": "HotelId, HotelName, Description",
       "count": true,
       "top": 7,
       "queryType": "simple"
     }
    
  5. Çıktı JSON arama sonuçlarından oluşur. Sorguyla 13 otel eşleşir. Bu örnekte ilk yedi yer alır.

    {
       "@odata.count": 13,
       "@search.answers": [],
       "value": [
         {
           "@search.score": 5.074317,
           "@search.rerankerScore": 2.613231658935547,
           "HotelId": "24",
           "HotelName": "Uptown Chic Hotel",
           "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance."
         },
         {
           "@search.score": 5.5153193,
           "@search.rerankerScore": 2.271434783935547,
           "HotelId": "2",
           "HotelName": "Old Century Hotel",
           "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music."
         },
         {
           "@search.score": 4.8959594,
           "@search.rerankerScore": 1.9861756563186646,
           "HotelId": "4",
           "HotelName": "Sublime Palace Hotel",
           "Description": "Sublime Cliff Hotel is located in the heart of the historic center of Sublime in an extremely vibrant and lively area within short walking distance to the sites and landmarks of the city and is surrounded by the extraordinary beauty of churches, buildings, shops and monuments. Sublime Cliff is part of a lovingly restored 19th century resort, updated for every modern convenience."
         },
         {
           "@search.score": 0.7334347,
           "@search.rerankerScore": 1.9615401029586792,
           "HotelId": "39",
           "HotelName": "White Mountain Lodge & Suites",
           "Description": "Live amongst the trees in the heart of the forest. Hike along our extensive trail system. Visit the Natural Hot Springs, or enjoy our signature hot stone massage in the Cathedral of Firs. Relax in the meditation gardens, or join new friends around the communal firepit. Weekend evening entertainment on the patio features special guest musicians or poetry readings."
         },
         {
           "@search.score": 1.5502293,
           "@search.rerankerScore": 1.9085469245910645,
           "HotelId": "15",
           "HotelName": "By the Market Hotel",
           "Description": "Book now and Save up to 30%. Central location. Walking distance from the Empire State Building & Times Square, in the Chelsea neighborhood. Brand new rooms. Impeccable service."
         },
         {
           "@search.score": 1.7595702,
           "@search.rerankerScore": 1.90234375,
           "HotelId": "49",
           "HotelName": "Swirling Currents Hotel",
           "Description": "Spacious rooms, glamorous suites and residences, rooftop pool, walking access to shopping, dining, entertainment and the city center. Each room comes equipped with a microwave, a coffee maker and a minifridge. In-room entertainment includes complimentary W-Fi and flat-screen TVs. "
         },
         {
           "@search.score": 2.0364518,
           "@search.rerankerScore": 1.9012802839279175,
           "HotelId": "31",
           "HotelName": "Country Residence Hotel",
           "Description": "All of the suites feature full-sized kitchens stocked with cookware, separate living and sleeping areas and sofa beds. Some of the larger rooms have fireplaces and patios or balconies. Experience real country hospitality in the heart of bustling Nashville. The most vibrant music scene in the world is just outside your front door."
         }
       ]
     }
    

Açıklamalı alt yazıları döndürme

İsteğe bağlı olarak, metnin bölümlerini ayıklamak için altyazılar ekleyebilir ve önemli terimler ve ifadelerde vurgulama yapabilirsiniz. Bu sorgu isabet vurgulama içeren açıklamalı alt yazılar ekler.

  1. parametresini captions ekleyin ve isteği gönderin.

    POST {{searchUrl}}/indexes/hotels-sample-index/docs/search?api-version=2025-05-01-preview  HTTP/1.1
    Content-Type: application/json
    Authorization: Bearer {{personalAccessToken}}
    
    {
      "search": "walking distance to live music",
      "select": "HotelId, HotelName, Description",
      "count": true,
      "queryType": "semantic",
      "semanticConfiguration": "semantic-config",
      "captions": "extractive|highlight-true"
    }
    
  2. Çıktı, "@search.captions"'un eklenmesiyle aynı sonuçlardan oluşur. Tek bir belge için JSON aşağıdadır. Her eşleşme arama puanlarını, düz metindeki açıklamalı alt yazıları, vurgu biçimlendirmesini ve seçme alanlarını içerir.

    {
       "@search.score": 5.074317,
       "@search.rerankerScore": 2.613231658935547,
       "@search.captions": [
         {
           "text": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance.",
           "highlights": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to<em> theaters, </em>art galleries, restaurants and shops. Visit<em> Seattle Art Museum </em>by day, and then head over to<em> Benaroya Hall </em>to catch the evening's concert performance."
         }
       ],
       "HotelId": "24",
       "HotelName": "Uptown Chic Hotel",
       "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance."
    }
    

Anlamsal yanıtlar döndür

Bu son sorguda anlamsal yanıtlar döndür.

Anlam dereceleyicisi, sorunun özelliklerine sahip bir sorgu dizesine yanıt üretebilir. Oluşturulan yanıt, içeriğinizden ayrıntılı olarak ayıklanır, böylece sohbet tamamlama modelinden beklediğiniz gibi oluşturulmuş içerik içermez. Anlamsal yanıt senaryonuz için yararlı değilse, kodunuzdan atlayabilirsiniz semantic_answers .

Anlamsal bir yanıt üretmek için, sorunun ve yanıtın yakın bir şekilde hizalanması ve modelin soruyu net bir şekilde yanıtlayan içerik bulması gerekir. Olası yanıtlar güvenilirlik eşiğini karşılayamazsa model yanıt döndürmez. Tanıtım amacıyla, bu örnekteki soru söz dizimini görebilmeniz için bir yanıt almak üzere tasarlanmıştır.

  1. Soru soran bir arama dizesi kullanarak isteği formüle edin.

    POST {{searchUrl}}/indexes/hotels-sample-index/docs/search?api-version=2025-05-01-preview  HTTP/1.1
    Content-Type: application/json
    Authorization: Bearer {{personalAccessToken}}
    
    {
      "search": "what's a good hotel for people who like to read",
      "select": "HotelId, HotelName, Description",
      "count": true,
      "queryType": "semantic",
      "semanticConfiguration": "semantic-config"
      "answers": "extractive"
    }
    
  2. Yeni yapılan sorgudan, okumayı seven kişiler için oteller hakkında "@search.answers" içeren 41 sonuç elde edildi.

    Yanıtların dizininizden alınan ayrıntılı içerik olduğunu ve bir kullanıcının görmeyi beklediği tümceciklerin eksik olabileceğini hatırlayın. Oluşturulmuş yanıtlar elde etmek için, bir sohbet tamamlama modeli tarafından üretilenleri göz önünde bulundurarak, bir RAG modeli veya agentik getirme kullanmayı düşünebilirsiniz.

    Bu örnekte yanıt, soru için güçlü bir uyum olarak kabul edilir.

    {
      "@odata.count": 41,
      "@search.answers": [
        {
          "key": "38",
          "text": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.",
          "highlights": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the<em> library </em>by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply.",
          "score": 0.9829999804496765
        }
      ],
      "value": [
        {
          "@search.score": 2.0361428,
          "@search.rerankerScore": 2.124817371368408,
          "HotelId": "1",
          "HotelName": "Stay-Kay City Hotel",
          "Description": "This classic hotel is fully-refurbished and ideally located on the main commercial artery of the city in the heart of New York. A few minutes away is Times Square and the historic centre of the city, as well as other places of interest that make New York one of America's most attractive and cosmopolitan cities."
        },
        {
          "@search.score": 3.759768,
          "@search.rerankerScore": 2.0705394744873047,
          "HotelId": "16",
          "HotelName": "Double Sanctuary Resort",
          "Description": "5 star Luxury Hotel - Biggest Rooms in the city. #1 Hotel in the area listed by Traveler magazine. Free WiFi, Flexible check in/out, Fitness Center & espresso in room."
        },
        {
          "@search.score": 0.7308748,
          "@search.rerankerScore": 2.041472911834717,
          "HotelId": "38",
          "HotelName": "Lakeside B & B",
          "Description": "Nature is Home on the beach. Explore the shore by day, and then come home to our shared living space to relax around a stone fireplace, sip something warm, and explore the library by night. Save up to 30 percent. Valid Now through the end of the year. Restrictions and blackouts may apply."
        },
        {
          "@search.score": 3.391012,
          "@search.rerankerScore": 2.0231292247772217,
          "HotelId": "2",
          "HotelName": "Old Century Hotel",
          "Description": "The hotel is situated in a nineteenth century plaza, which has been expanded and renovated to the highest architectural standards to create a modern, functional and first-class hotel in which art and unique historical elements coexist with the most modern comforts. The hotel also regularly hosts events like wine tastings, beer dinners, and live music."
        },
        {
          "@search.score": 1.3198771,
          "@search.rerankerScore": 2.021622657775879,
          "HotelId": "15",
          "HotelName": "By the Market Hotel",
          "Description": "Book now and Save up to 30%. Central location. Walking distance from the Empire State Building & Times Square, in the Chelsea neighborhood. Brand new rooms. Impeccable service."
        },
        {
          "@search.score": 1.3983066,
          "@search.rerankerScore": 2.005582809448242,
          "HotelId": "5",
          "HotelName": "Red Tide Hotel",
          "Description": "On entering this charming hotel in Scarlet Harbor, you'll notice an uncommon blend of antiques, original artwork, and contemporary comforts that give this hotel its signature look. Each suite is furnished to accentuate the views and unique characteristics of the building's classic architecture. No two suites are alike. However, all guests are welcome in the mezzanine plaza, the surrounding gardens, and the northside terrace for evening refreshments."
        },
        {
          "@search.score": 1.4815493,
          "@search.rerankerScore": 1.9739465713500977,
          "HotelId": "24",
          "HotelName": "Uptown Chic Hotel",
          "Description": "Chic hotel near the city. High-rise hotel in downtown, within walking distance to theaters, art galleries, restaurants and shops. Visit Seattle Art Museum by day, and then head over to Benaroya Hall to catch the evening's concert performance."
        }
      ]
    }
    

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.

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. Aşağıdaki makaleler kullanmaya başlamanıza yardımcı olabilir.