Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Z tego przewodnika Szybki start dowiesz się, jak dodać klasyfikację semantyczną do istniejącego indeksu. Możesz użyć pliku hotels-sample-index lub własnego.
W usłudze Azure AI Search semantyczna klasyfikacja to funkcja po stronie zapytania, która wykorzystuje zrozumienie odczytu maszynowego od firmy Microsoft w celu ponownego podkreślenia wyników wyszukiwania, promując najbardziej semantycznie istotne dopasowania na początku listy. W zależności od zawartości i zapytania semantyczny ranking może znacznie poprawić istotność wyszukiwania przy minimalnym wysiłku dewelopera.
Możesz dodać konfigurację semantyczną do istniejącego indeksu bez konieczności ponownego kompilowania. Ranking semantyczny jest najbardziej skuteczny w tekście, który jest informacyjny lub opisowy.
W tym przewodniku Szybki start zawarto informacje na temat wykonywania następujących czynności:
- Dodawanie konfiguracji semantycznej do indeksu wyszukiwania
- Dodawanie parametrów semantycznych do zapytania
Wymagania wstępne
Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Usługa Azure AI Search w warstwie Podstawowa lub nowsza z włączonym semantycznym rankerem.
Nowy lub istniejący indeks z opisowymi lub rozbudowanymi polami tekstowymi, oznaczony jako możliwy do pobrania w indeksie. W tym przewodniku Szybki start zakłada się hotels-sample-index.
Konfigurowanie dostępu
Możesz nawiązać połączenie z usługą Azure AI Search przy użyciu kluczy API lub identyfikatora Microsoft Entra ID z przypisanymi rolami. Klucze są łatwiejsze do rozpoczęcia od, ale role są bezpieczniejsze.
Aby skonfigurować dostęp oparty na rolach:
Zaloguj się do witryny Azure Portal i wybierz usługę wyszukiwania.
W okienku po lewej stronie wybierz Ustawienia>Klucze.
W obszarze Kontrola dostępu do interfejsu API wybierz pozycję Oba.
Ta opcja umożliwia zarówno uwierzytelnianie oparte na kluczach, jak i bez klucza. Po przypisaniu ról możesz wrócić do tego kroku i wybrać pozycję Kontrola dostępu oparta na rolach.
W okienku po lewej stronie wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).
Wybierz Dodaj>Dodaj przypisanie roli.
Przypisz te role do konta użytkownika:
Współautor usługi wyszukiwania
Współautor danych indeksu wyszukiwania
Aby uzyskać więcej informacji, zobacz Nawiązywanie połączenia z usługą Azure AI Search przy użyciu ról.
Rozpoczynanie od indeksu
Ten przewodnik szybkiego startu zakłada, że istnieje indeks, który został zmodyfikowany w celu uwzględnienia konfiguracji semantycznej. Zalecamy hotels-sample-index, który można utworzyć w ciągu kilku minut za pomocą kreatora portalu Azure.
Zaloguj się do witryny Azure Portal i znajdź usługę wyszukiwania.
Pod zarządzanie wyszukiwaniem>Indeksy otwórz hotels-sample-index. Upewnij się, że indeks nie ma konfiguracji semantycznej.
Aby sprawdzić, czy indeks działa, uruchom zapytanie. W Eksploratorze wyszukiwania wprowadź ten ciąg wyszukiwania "odległość spaceru od muzyki na żywo" , aby można było wyświetlić odpowiedź przed zastosowaniem semantycznego rankingu.
Odpowiedź powinna być podobna do poniższego przykładu, jak w przypadku domyślnego klasyfikatora BM25 L1 na potrzeby wyszukiwania pełnotekstowego. Aby uzyskać czytelność, przykład wybiera tylko pola "HotelName" "HotelId" i "Description".
To zapytanie jest wyszukiwaniem słów kluczowych. Wyniki zawierają dosłowne dopasowania dotyczące terminów zapytania (spacer, odległość, live, muzyka) lub wariant językowy (spacer, życie).
"@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." } ]
Później możesz spróbować ponownie wykonać to zapytanie po skonfigurowaniu klasyfikacji semantycznej, aby zobaczyć, jak zmienia się odpowiedź.
Wskazówka
Konfigurację semantyczną można dodać w witrynie Azure Portal. Jeśli jednak chcesz dowiedzieć się, jak programowo dodać konfigurację semantyczną, postępuj zgodnie z instrukcjami w tym przewodniku Szybki start.
Konfigurowanie klienta
W tym przewodniku użyjesz środowiska IDE i biblioteki klienta Azure.Search.Documents, aby zaimplementować klasyfikację semantyczną do istniejącego indeksu wyszukiwania.
Zalecamy użycie Visual Studio dla tego szybkiego startu.
Wskazówka
Możesz pobrać kod źródłowy, aby rozpocząć od ukończonego projektu lub wykonać następujące kroki, aby utworzyć własny.
Instalowanie bibliotek
Uruchom program Visual Studio i otwórz quickstart-semantic-search.sln lub utwórz nowy projekt przy użyciu szablonu aplikacji konsolowej.
W obszarze Narzędzia>Menedżer pakietów NuGet wybierz pozycję Zarządzaj pakietami NuGet dla rozwiązania....
Wybierz przycisk Przeglądaj.
Wyszukaj pakiet Azure.Search.Documents i wybierz najnowszą stabilną wersję.
Wyszukaj pakiet Azure.Identity i wybierz najnowszą stabilną wersję.
Wybierz pozycję Zainstaluj , aby dodać zestaw do projektu i rozwiązania.
Zaloguj się do Azure
Jeśli zalogowałeś się do witryny Azure Portal, zalogowałeś się na platformie Azure. Jeśli nie masz pewności, zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell: az login
lub az connect
. Jeśli masz wiele dzierżaw i subskrypcji, zobacz Szybki start: nawiązywanie połączenia bez kluczy , aby uzyskać pomoc dotyczącą nawiązywania połączenia.
Aktualizowanie indeksu
W tej sekcji zaktualizujesz indeks wyszukiwania, aby uwzględnić konfigurację semantyczną. Kod pobiera definicję indeksu z usługi wyszukiwania i dodaje konfigurację semantyczną.
Otwórz projekt BuildIndex w programie Visual Studio. Program składa się z następującego kodu.
Ten kod używa elementu SearchIndexClient do zaktualizowania indeksu w usłudze wyszukiwania.
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; } }
Zastąp adres URL usługi wyszukiwania prawidłowym punktem końcowym.
Uruchom program.
Dane są rejestrowane w oknie konsoli przez Console.WriteLine. Powinny zostać wyświetlone komunikaty dla każdego kroku, w tym dane JSON schematu indeksu z nową konfiguracją semantyczną.
Uruchamianie zapytań semantycznych
W tej sekcji program uruchamia kilka semantycznych zapytań w sekwencji.
Otwórz projekt QueryIndex w programie Visual Studio. Program składa się z następującego kodu.
Ten kod używa elementu SearchClient do wysyłania zapytań do indeksu.
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}"); } } } }
Zastąp adres URL usługi wyszukiwania prawidłowym punktem końcowym.
Uruchom program.
Dane są rejestrowane w oknie konsoli przez Console.WriteLine. Powinny zostać wyświetlone wyniki wyszukiwania dla każdego zapytania.
Dane wyjściowe zapytania semantycznego (bez podpisów ani odpowiedzi)
Te dane wyjściowe pochodzą z semantycznego zapytania bez podpisów ani odpowiedzi. Ciąg zapytania to "w odległości spaceru do muzyki na żywo".
W tym miejscu początkowe wyniki zapytania terminowego są oceniane ponownie przy użyciu semantycznych modeli rankingowych. W przypadku tego konkretnego zestawu danych i zapytania pierwsze kilka wyników znajduje się w podobnych pozycjach. Efekty klasyfikacji semantycznej są bardziej widoczne w pozostałej części wyników.
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...
Dane wyjściowe zapytania semantycznego z podpisami
Poniżej przedstawiono wyniki zapytania, które dodaje etykiety z wyróżnieniem trafień.
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...
Dane wyjściowe dla odpowiedzi semantycznych
Ostateczne zapytanie zwraca semantyczną odpowiedź. Zwróć uwagę, że zmieniliśmy ciąg zapytania dla tego przykładu: "co to jest dobry hotel dla osób, które lubią czytać".
Semantyczny ranker może wygenerować odpowiedź na ciąg zapytaniowy, który wykazuje cechy pytania. Wygenerowana odpowiedź jest wyodrębniona z zawartości, więc nie będzie zawierać zawartości skomponowanej, takiej jak to, czego można oczekiwać od modelu ukończenia czatu. Jeśli semantyczna odpowiedź nie jest przydatna w danym scenariuszu, możesz pominąć semantic_answers
ze swojego kodu.
Aby utworzyć semantyczną odpowiedź, pytanie i odpowiedź muszą być ściśle dopasowane, a model musi znaleźć zawartość, która wyraźnie odpowiada na pytanie. Jeśli potencjalne odpowiedzi nie spełniają progu ufności, model nie zwraca odpowiedzi. W celach demonstracyjnych pytanie w tym przykładzie zostało zaprojektowane tak, aby uzyskać odpowiedź, aby zobaczyć składnię.
Pamiętaj, że odpowiedzi są dosłowną zawartością pobraną z indeksu i mogą brakować fraz, które użytkownik spodziewa się zobaczyć. Aby uzyskać złożone odpowiedzi wygenerowane przez model ukończenia czatu, rozważ użycie wzorca RAG lub agentowego pobierania danych.
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
----------------------------------------
Z tego przewodnika Szybki start dowiesz się, jak dodać klasyfikację semantyczną do istniejącego indeksu. Możesz użyć pliku hotels-sample-index lub własnego.
W usłudze Azure AI Search semantyczna klasyfikacja to funkcja po stronie zapytania, która wykorzystuje zrozumienie odczytu maszynowego od firmy Microsoft w celu ponownego podkreślenia wyników wyszukiwania, promując najbardziej semantycznie istotne dopasowania na początku listy. W zależności od zawartości i zapytania semantyczny ranking może znacznie poprawić istotność wyszukiwania przy minimalnym wysiłku dewelopera.
Możesz dodać konfigurację semantyczną do istniejącego indeksu bez konieczności ponownego kompilowania. Ranking semantyczny jest najbardziej skuteczny w tekście, który jest informacyjny lub opisowy.
W tym przewodniku Szybki start zawarto informacje na temat wykonywania następujących czynności:
- Dodawanie konfiguracji semantycznej do indeksu wyszukiwania
- Dodawanie parametrów semantycznych do zapytania
Wymagania wstępne
Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Usługa Azure AI Search w warstwie Podstawowa lub nowsza z włączonym semantycznym rankerem.
Nowy lub istniejący indeks z opisowymi lub rozbudowanymi polami tekstowymi, oznaczony jako możliwy do pobrania w indeksie. W tym przewodniku Szybki start zakłada się hotels-sample-index.
Konfigurowanie dostępu
Możesz nawiązać połączenie z usługą Azure AI Search przy użyciu kluczy API lub identyfikatora Microsoft Entra ID z przypisanymi rolami. Klucze są łatwiejsze do rozpoczęcia od, ale role są bezpieczniejsze.
Aby skonfigurować dostęp oparty na rolach:
Zaloguj się do witryny Azure Portal i wybierz usługę wyszukiwania.
W okienku po lewej stronie wybierz Ustawienia>Klucze.
W obszarze Kontrola dostępu do interfejsu API wybierz pozycję Oba.
Ta opcja umożliwia zarówno uwierzytelnianie oparte na kluczach, jak i bez klucza. Po przypisaniu ról możesz wrócić do tego kroku i wybrać pozycję Kontrola dostępu oparta na rolach.
W okienku po lewej stronie wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).
Wybierz Dodaj>Dodaj przypisanie roli.
Przypisz te role do konta użytkownika:
Współautor usługi wyszukiwania
Współautor danych indeksu wyszukiwania
Aby uzyskać więcej informacji, zobacz Nawiązywanie połączenia z usługą Azure AI Search przy użyciu ról.
Rozpoczynanie od indeksu
Ten przewodnik szybkiego startu zakłada, że istnieje indeks, który został zmodyfikowany w celu uwzględnienia konfiguracji semantycznej. Zalecamy hotels-sample-index, który można utworzyć w ciągu kilku minut za pomocą kreatora portalu Azure.
Zaloguj się do witryny Azure Portal i znajdź usługę wyszukiwania.
Pod zarządzanie wyszukiwaniem>Indeksy otwórz hotels-sample-index. Upewnij się, że indeks nie ma konfiguracji semantycznej.
Aby sprawdzić, czy indeks działa, uruchom zapytanie. W Eksploratorze wyszukiwania wprowadź ten ciąg wyszukiwania "odległość spaceru od muzyki na żywo" , aby można było wyświetlić odpowiedź przed zastosowaniem semantycznego rankingu.
Odpowiedź powinna być podobna do poniższego przykładu, jak w przypadku domyślnego klasyfikatora BM25 L1 na potrzeby wyszukiwania pełnotekstowego. Aby uzyskać czytelność, przykład wybiera tylko pola "HotelName" "HotelId" i "Description".
To zapytanie jest wyszukiwaniem słów kluczowych. Wyniki zawierają dosłowne dopasowania dotyczące terminów zapytania (spacer, odległość, live, muzyka) lub wariant językowy (spacer, życie).
"@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." } ]
Później możesz spróbować ponownie wykonać to zapytanie po skonfigurowaniu klasyfikacji semantycznej, aby zobaczyć, jak zmienia się odpowiedź.
Wskazówka
Konfigurację semantyczną można dodać w witrynie Azure Portal. Jeśli jednak chcesz dowiedzieć się, jak programowo dodać konfigurację semantyczną, postępuj zgodnie z instrukcjami w tym przewodniku Szybki start.
Konfigurowanie klienta
W tym szybkim przewodniku dowiesz się, jak korzystać z notesu Jupyter i biblioteki azure-search-documents w zestawie Azure SDK dla języka Python do poznania rankingów semantycznych.
Na potrzeby tego przewodnika szybkiego startu zalecamy Visual Studio Code z Python 3.10 lub nowszy oraz rozszerzenie Python.
Wskazówka
Możesz pobrać gotowy notatnik i rozpocząć od ukończonego projektu lub wykonać te kroki, aby utworzyć własny.
W tym przewodniku Szybki start zalecamy środowisko wirtualne:
Uruchom program Visual Studio Code.
Otwórz plik semantic-search-quickstart.ipynb lub utwórz nowy notatnik.
Otwórz paletę poleceń przy użyciu Ctrl+Shift+P.
Wyszukaj frazę Python: Create Environment (Tworzenie środowiska).
Wybierz pozycję
Venv.
Wybierz interpreter języka Python. Wybierz 3.10 lub nowszą.
Skonfigurowanie może potrwać minutę. Jeśli wystąpią problemy, zobacz Środowiska języka Python w programie VS Code.
Instalowanie pakietów i ustawianie zmiennych środowiskowych
Zainstaluj pakiety, w tym azure-search-documents.
! pip install -r requirements.txt --quiet
Zmień nazwę
sample.env
na.env
, a następnie podaj punkt końcowy usługi wyszukiwania. Punkt końcowy można uzyskać z portalu Azure na stronie Przegląd usługi wyszukiwania.AZURE_SEARCH_ENDPOINT=https://your-search-service.search.windows.net AZURE_SEARCH_INDEX_NAME=hotels-sample-index
Zaloguj się do Azure
Jeśli zalogowałeś się do witryny Azure Portal, zalogowałeś się na platformie Azure. Jeśli nie masz pewności, zaloguj się przy użyciu interfejsu wiersza polecenia platformy Azure lub programu Azure PowerShell: az login
lub az connect
. Jeśli masz wiele dzierżaw i subskrypcji, zobacz Szybki start: nawiązywanie połączenia bez kluczy , aby uzyskać pomoc dotyczącą nawiązywania połączenia.
Aktualizowanie indeksu
W tej sekcji zaktualizujesz indeks wyszukiwania, aby uwzględnić konfigurację semantyczną. Kod pobiera definicję indeksu z usługi wyszukiwania i dodaje konfigurację semantyczną.
Otwórz plik semantic-search-quickstart.ipynb w programie Visual Studio Code lub utwórz nowy plik.
Podaj zmienne używane w rozwiązaniu.
# 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")
Utwórz element SearchIndexClient i pobierz istniejący plik hotels-sample-index.
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}")
Uruchom kod.
Dane wyjściowe to nazwa indeksu, lista pól i instrukcja wskazująca, czy istnieje konfiguracja semantyczna. Na potrzeby tego przewodnika Szybki Start komunikat powinien brzmieć: "Dla tego indeksu nie istnieje żadna konfiguracja semantyczna".
Dodaj konfigurację semantyczną do istniejącego indeksu hotels-sample-index w usłudze wyszukiwania. Ta operacja nie usuwa dokumentów wyszukiwania, a indeks nadal działa po dodaniu konfiguracji.
# 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}")
Uruchom kod.
Dane wyjściowe to właśnie dodana konfiguracja semantyczna.
Uruchamianie zapytań semantycznych
Gdy indeks ma konfigurację semantyczną, można uruchamiać zapytania zawierające parametry semantyczne.
Utwórz element SearchClient i żądanie zapytania, które zawiera typ zapytania semantycznego i konfigurację semantyczną. Jest to minimalne wymaganie dotyczące wywoływania semantycznego rankingu.
# 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']}")
Uruchom kod.
Dane wyjściowe powinny składać się z 13 dokumentów uporządkowanych przez element
"@search.reranker_score"
.
Przywracanie napisów
Opcjonalnie możesz dodać podpisy, aby wyodrębnić fragmenty tekstu i zastosować wyróżnianie trafień do ważnych terminów i fraz. To zapytanie SQL dodaje podpisy.
Dodaj
captions
do zapytania.# 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")
Uruchom kod.
Dane wyjściowe powinny zawierać nowy element nagłówka obok pola wyszukiwania. Nagłówki są najbardziej istotnymi fragmentami wewnątrz wyniku. Jeśli indeks zawiera większe fragmenty tekstu, podpisy mogą być pomocne do wyodrębnienia najbardziej interesujących zdań.
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.
Zwracanie odpowiedzi semantycznych
W tym ostatnim zapytaniu zwróć semantyczne odpowiedzi.
Semantyczny ranker może wygenerować odpowiedź na ciąg zapytaniowy, który wykazuje cechy pytania. Wygenerowana odpowiedź jest wyodrębniona z zawartości, więc nie będzie zawierać zawartości skomponowanej, takiej jak to, czego można oczekiwać od modelu ukończenia czatu. Jeśli semantyczna odpowiedź nie jest przydatna w danym scenariuszu, możesz pominąć semantic_answers
ze swojego kodu.
Aby utworzyć semantyczną odpowiedź, pytanie i odpowiedź muszą być ściśle dopasowane, a model musi znaleźć zawartość, która wyraźnie odpowiada na pytanie. Jeśli potencjalne odpowiedzi nie spełniają progu ufności, model nie zwraca odpowiedzi. W celach demonstracyjnych pytanie w tym przykładzie zostało zaprojektowane tak, aby uzyskać odpowiedź, aby zobaczyć składnię.
Dodaj
answers
do zapytania.# 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")
Uruchom kod.
Dane wyjściowe powinny wyglądać podobnie do poniższego przykładu, gdzie najlepsza odpowiedź na pytanie jest pobierana z jednego z wyników.
Pamiętaj, że odpowiedzi są dosłowną zawartością pobraną z indeksu i mogą brakować fraz, które użytkownik spodziewa się zobaczyć. Aby uzyskać złożone odpowiedzi wygenerowane przez model dopełnienia czatu, rozważ użycie wzorca RAG lub agentowego pobierania.
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. ...
Z tego przewodnika Szybki start dowiesz się, jak dodać klasyfikację semantyczną do istniejącego indeksu. Możesz użyć pliku hotels-sample-index lub własnego.
W usłudze Azure AI Search semantyczna klasyfikacja to funkcja po stronie zapytania, która wykorzystuje zrozumienie odczytu maszynowego od firmy Microsoft w celu ponownego podkreślenia wyników wyszukiwania, promując najbardziej semantycznie istotne dopasowania na początku listy. W zależności od zawartości i zapytania semantyczny ranking może znacznie poprawić istotność wyszukiwania przy minimalnym wysiłku dewelopera.
Możesz dodać konfigurację semantyczną do istniejącego indeksu bez konieczności ponownego kompilowania. Ranking semantyczny jest najbardziej skuteczny w tekście, który jest informacyjny lub opisowy.
W tym przewodniku Szybki start zawarto informacje na temat wykonywania następujących czynności:
- Dodawanie konfiguracji semantycznej do indeksu wyszukiwania
- Dodawanie parametrów semantycznych do zapytania
Wymagania wstępne
Konto platformy Azure z aktywną subskrypcją. Utwórz konto bezpłatnie.
Usługa Azure AI Search w warstwie Podstawowa lub nowsza z włączonym semantycznym rankerem.
Nowy lub istniejący indeks z opisowymi lub rozbudowanymi polami tekstowymi, oznaczony jako możliwy do pobrania w indeksie. W tym przewodniku Szybki start zakłada się hotels-sample-index.
Konfigurowanie dostępu
Możesz nawiązać połączenie z usługą Azure AI Search przy użyciu kluczy API lub identyfikatora Microsoft Entra ID z przypisanymi rolami. Klucze są łatwiejsze do rozpoczęcia od, ale role są bezpieczniejsze.
Aby skonfigurować dostęp oparty na rolach:
Zaloguj się do witryny Azure Portal i wybierz usługę wyszukiwania.
W okienku po lewej stronie wybierz Ustawienia>Klucze.
W obszarze Kontrola dostępu do interfejsu API wybierz pozycję Oba.
Ta opcja umożliwia zarówno uwierzytelnianie oparte na kluczach, jak i bez klucza. Po przypisaniu ról możesz wrócić do tego kroku i wybrać pozycję Kontrola dostępu oparta na rolach.
W okienku po lewej stronie wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami).
Wybierz Dodaj>Dodaj przypisanie roli.
Przypisz te role do konta użytkownika:
Współautor usługi wyszukiwania
Współautor danych indeksu wyszukiwania
Aby uzyskać więcej informacji, zobacz Nawiązywanie połączenia z usługą Azure AI Search przy użyciu ról.
Rozpoczynanie od indeksu
Ten przewodnik szybkiego startu zakłada, że istnieje indeks, który został zmodyfikowany w celu uwzględnienia konfiguracji semantycznej. Zalecamy hotels-sample-index, który można utworzyć w ciągu kilku minut za pomocą kreatora portalu Azure.
Zaloguj się do witryny Azure Portal i znajdź usługę wyszukiwania.
Pod zarządzanie wyszukiwaniem>Indeksy otwórz hotels-sample-index. Upewnij się, że indeks nie ma konfiguracji semantycznej.
Aby sprawdzić, czy indeks działa, uruchom zapytanie. W Eksploratorze wyszukiwania wprowadź ten ciąg wyszukiwania "odległość spaceru od muzyki na żywo" , aby można było wyświetlić odpowiedź przed zastosowaniem semantycznego rankingu.
Odpowiedź powinna być podobna do poniższego przykładu, jak w przypadku domyślnego klasyfikatora BM25 L1 na potrzeby wyszukiwania pełnotekstowego. Aby uzyskać czytelność, przykład wybiera tylko pola "HotelName" "HotelId" i "Description".
To zapytanie jest wyszukiwaniem słów kluczowych. Wyniki zawierają dosłowne dopasowania dotyczące terminów zapytania (spacer, odległość, live, muzyka) lub wariant językowy (spacer, życie).
"@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." } ]
Później możesz spróbować ponownie wykonać to zapytanie po skonfigurowaniu klasyfikacji semantycznej, aby zobaczyć, jak zmienia się odpowiedź.
Wskazówka
Konfigurację semantyczną można dodać w witrynie Azure Portal. Jeśli jednak chcesz dowiedzieć się, jak programowo dodać konfigurację semantyczną, postępuj zgodnie z instrukcjami w tym przewodniku Szybki start.
Konfigurowanie klienta
W tym przewodniku szybkiego startu korzystasz z klienta REST i interfejsów API REST usługi Azure AI Search do konfiguracji i używania rankera semantycznego.
Zalecamy użycie Visual Studio Code z zainstalowanym rozszerzeniem klienta REST do tej szybkiej konfiguracji.
Wskazówka
Możesz pobrać kod źródłowy, aby rozpocząć od ukończonego projektu lub wykonać następujące kroki, aby utworzyć własny.
Uruchom program Visual Studio Code i otwórz plik semantic-search-index-update.rest lub utwórz nowy plik.
U góry ustaw zmienne środowiskowe dla usługi wyszukiwania, autoryzacji i nazwy indeksu.
W polu @searchURLzaloguj się do witryny Azure Portal i skopiuj adres URL ze strony Przegląd usługi wyszukiwania.
W przypadku @personalAccessToken, postępuj zgodnie z instrukcjami w temacie Łączenie bez kluczy, aby uzyskać osobisty token dostępu.
Aby przetestować połączenie, wyślij pierwsze żądanie.
### 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}}
Wybierz pozycję Wysłane żądanie.
Dane wyjściowe dla tego żądania GET zwracają listę istniejących indeksów. Powinien zostać wyświetlony kod stanu powodzenia HTTP 200 oraz lista indeksów, w tym hotels-sample-index używana w tym przewodniku Szybki start.
Aktualizowanie indeksu
Aby zaktualizować indeks przy użyciu interfejsu API REST, należy podać cały schemat oraz modyfikacje, które chcesz wprowadzić. To żądanie zawiera schemat hotels-sample-index oraz konfigurację semantyczną. Modyfikacja składa się z następującego kodu JSON.
"semantic": {
"configurations": [
{
"name": "semantic-config",
"flightingOptIn": false,
"rankingOrder": "BoostedRerankerScore",
"prioritizedFields": {
"titleField": { "fieldName": "HotelName" },
"prioritizedContentFields": [{ "fieldName": "Description" }],
"prioritizedKeywordsFields": [{ "fieldName": "Tags" }]
}
}
]
}
Sformułuj żądanie POST określające nazwę indeksu, operację i pełny schemat JSON. Wszystkie wymagane elementy schematu muszą być obecne. To żądanie zawiera pełny schemat dla hotels-sample-index oraz konfigurację semantyczną.
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" } ] } } ] } }
Wybierz pozycję Wysłane żądanie.
Dane wyjściowe dla tego żądania POST to komunikat o stanie powodzenia HTTP 200.
Uruchamianie zapytań semantycznych
Wymagane parametry semantyczne obejmują query_type
i semantic_configuration_name
. Oto przykład podstawowego zapytania semantycznego używającego minimalnych parametrów.
Otwórz plik semantic-search-query.rest lub utwórz nowy plik.
Na górze pliku ustaw zmienne środowiskowe dla usługi wyszukiwania, autoryzacji i nazwy indeksu.
W polu @searchURLzaloguj się do witryny Azure Portal i skopiuj adres URL ze strony Przegląd usługi wyszukiwania.
W przypadku @personalAccessToken, postępuj zgodnie z instrukcjami w temacie Łączenie bez kluczy, aby uzyskać osobisty token dostępu.
Przetestuj połączenie za pomocą żądania GET, które zwraca hotels-sample-index.
GET {{searchUrl}}/indexes/hotels-sample-index?api-version=2025-05-01-preview HTTP/1.1 Authorization: Bearer {{personalAccessToken}}
Wyślij zapytanie zawierające semantyczne typ zapytania i nazwę konfiguracji.
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" }
Dane wyjściowe składają się z wyników wyszukiwania w formacie JSON. Trzynaście hoteli pasuje do zapytania. Pierwsze siedem znajduje się w tym przykładzie.
{ "@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." } ] }
Przywracanie napisów
Opcjonalnie możesz dodać podpisy, aby wyodrębnić fragmenty tekstu i zastosować wyróżnianie trafień do ważnych terminów i fraz. To zapytanie dodaje etykiety, które zawierają podświetlanie wyników wyszukiwania.
captions
Dodaj parametr i wyślij żądanie.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" }
Dane wyjściowe składają się z tych samych wyników, z dodatkiem
"@search.captions"
. Oto kod JSON pojedynczego dokumentu. Każde dopasowanie obejmuje wyniki wyszukiwania, podpisy w postaci zwykłego tekstu, formatowanie wyróżnienia oraz wybrane pola.{ "@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." }
Zwracanie odpowiedzi semantycznych
W tym ostatnim zapytaniu zwróć semantyczne odpowiedzi.
Semantyczny ranker może wygenerować odpowiedź na ciąg zapytaniowy, który wykazuje cechy pytania. Wygenerowana odpowiedź jest wyodrębniona z zawartości, więc nie będzie zawierać zawartości skomponowanej, takiej jak to, czego można oczekiwać od modelu ukończenia czatu. Jeśli semantyczna odpowiedź nie jest przydatna w danym scenariuszu, możesz pominąć semantic_answers
ze swojego kodu.
Aby utworzyć semantyczną odpowiedź, pytanie i odpowiedź muszą być ściśle dopasowane, a model musi znaleźć zawartość, która wyraźnie odpowiada na pytanie. Jeśli potencjalne odpowiedzi nie spełniają progu ufności, model nie zwraca odpowiedzi. W celach demonstracyjnych pytanie w tym przykładzie zostało zaprojektowane tak, aby uzyskać odpowiedź, aby zobaczyć składnię.
Sformułuj żądanie przy użyciu ciągu wyszukiwania, który zadaje pytanie.
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" }
Dane wyjściowe składają się z 41 wyników dla nowego zapytania z "@search.odpowiedzi" dla pytania w zapytaniu dotyczącym hoteli dla osób, które lubią czytać.
Pamiętaj, że odpowiedzi są dosłowną zawartością pobraną z indeksu i mogą brakować fraz, które użytkownik spodziewa się zobaczyć. Aby uzyskać złożone odpowiedzi wygenerowane przez model dopełnienia czatu, rozważ użycie wzorca RAG lub agentowego wyszukiwania.
W tym przykładzie odpowiedź jest uznawana za dobrze dopasowaną do pytania.
{ "@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." } ] }
Czyszczenie zasobów
Jeśli pracujesz w ramach własnej subskrypcji, dobrym pomysłem po zakończeniu projektu jest sprawdzenie, czy dalej potrzebujesz utworzonych zasobów. Uruchomione zasoby mogą generować koszty. Zasoby możesz usuwać pojedynczo lub jako grupę zasobów, usuwając cały zestaw zasobów.
Zasoby można znaleźć w witrynie Azure Portal i zarządzać nimi, korzystając z linku Wszystkie zasoby lub Grupy zasobów w okienku nawigacji po lewej stronie.
Treści powiązane
W tym przewodniku Szybki start przedstawiono sposób wywoływania klasyfikacji semantycznej w istniejącym indeksie. Zalecamy wypróbowanie klasyfikacji semantycznej na własnych indeksach jako następnego kroku. Poniższe artykuły mogą pomóc w rozpoczęciu pracy.