Megosztás a következőn keresztül:


Rövid útmutató: Szemantikai rangsorolás .NET-tel vagy Pythonnal

Az Azure AI Searchben a szemantikai rangsoroló olyan lekérdezésoldali funkció, amely a Microsoft gépi olvasási szövegértését használja a keresési eredmények újbóli kiírásához, így a legszemlén relevánsabb találatok a lista elejére kerülnek. A tartalomtól és a lekérdezéstől függően a szemantikai rangsorolás jelentősen javíthatja a keresés relevanciáját, és minimális munkát igényel a fejlesztő számára.

Ez a rövid útmutató végigvezeti a szemantikai rangsorolót meghívó index- és lekérdezésmódosításokon.

Feljegyzés

Azure AI Search-megoldást keres ChatGPT-interakcióval? A részletekért tekintse meg ezt a bemutatót vagy a gyorsítót .

Előfeltételek

  • Egy Azure-fiók, aktív előfizetéssel. Fiók ingyenes létrehozása.

  • Az Azure AI Search alapszintű vagy magasabb szinten, a szemantikai rangsoroló engedélyezve van.

  • API-kulcs és keresési szolgáltatásvégpont. Jelentkezzen be az Azure Portalra , és keresse meg a keresési szolgáltatást.

    Az Áttekintésben másolja ki az URL-címet, és mentse a Jegyzettömbbe egy későbbi lépésben. A végpontok például a következőképpen nézhetnek ki: https://mydemo.search.windows.net.

    A Kulcsok területen másolja és mentse a rendszergazdai kulcsot az objektumok létrehozásához és törléséhez szükséges teljes jogosultságok érdekében. Két felcserélhető elsődleges és másodlagos kulcs van. Válasszon egyet.

    HTTP-végpont és hozzáférési kulcs lekérése

Szemantikai rangsorolás hozzáadása

A szemantikai rangsoroló használatához adjon hozzá szemantikai konfigurációt egy keresési indexhez, és adjon hozzá paramétereket egy lekérdezéshez. Ha rendelkezik meglévő indexel, ezeket a módosításokat anélkül végezheti el, hogy újra kellene indexelnie a tartalmat, mert nincs hatással a kereshető tartalom szerkezetére.

  • A szemantikai konfiguráció prioritási sorrendet állít be azokhoz a mezőkhöz, amelyek címmel, kulcsszavakval és a szemantikai újraküldés során használt tartalommal járulnak hozzá. A mező rangsorolása gyorsabb feldolgozást tesz lehetővé.

  • A szemantikai rangsorolót meghívó lekérdezések tartalmazzák a lekérdezéstípus paramétereit, valamint azt, hogy a rendszer visszaadja-e a feliratok és válaszok értékét. Ezeket a paramétereket hozzáadhatja a meglévő lekérdezési logikához. Nincs ütközés más paraméterekkel.

Hozzon létre egy konzolalkalmazást az Azure.Search.Documents ügyfélkódtár használatával, hogy szemantikai rangsorolást adjon hozzá egy meglévő keresési indexhez.

Másik lehetőségként letöltheti a forráskódot, hogy egy kész projekttel kezdjen, vagy kövesse az alábbi lépéseket a saját létrehozásához.

Saját környezet beállítása

  1. Indítsa el a Visual Studiót, és hozzon létre egy új projektet egy konzolalkalmazáshoz.

  2. A NuGet-Csomagkezelő eszközökben >válassza a Megoldáshoz készült NuGet-csomagok kezelése... lehetőséget.

  3. Válassza a Tallózás lehetőséget.

  4. Keresse meg az Azure.Search.Documents csomagot , és válassza ki a legújabb stabil verziót.

  5. Válassza a Telepítés lehetőséget a szerelvény projekthez és megoldáshoz való hozzáadásához.

Keresési ügyfél létrehozása

  1. A Program.cs adja hozzá a következő using irányelveket.

    using Azure;
    using Azure.Search.Documents;
    using Azure.Search.Documents.Indexes;
    using Azure.Search.Documents.Indexes.Models;
    using Azure.Search.Documents.Models;
    
  2. Hozzon létre két ügyfelet: a SearchIndexClient létrehozza az indexet, a SearchClient pedig betölt és lekérdez egy meglévő indexet. Mindkettőnek szüksége van a szolgáltatásvégpontra és egy rendszergazdai API-kulcsra a létrehozási/törlési jogosultságokkal való hitelesítéshez.

    Mivel a kód létrehozza az URI-t, csak a keresési szolgáltatás nevét adja meg a "serviceName" tulajdonságban.

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

Index létrehozása

Hozzon létre vagy frissítsen egy indexsémát egy SemanticConfiguration. Meglévő index frissítésekor ez a módosítás nem igényel újraindexelést, mert a dokumentumok szerkezete nem változik.

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

    FieldBuilder fieldBuilder = new FieldBuilder();
    var searchFields = fieldBuilder.Build(typeof(Hotel));

    var definition = new SearchIndex(indexName, searchFields);
    var suggester = new SearchSuggester("sg", new[] { "HotelName", "Category", "Address/City", "Address/StateProvince" });
    definition.Suggesters.Add(suggester);
    definition.SemanticSearch = new SemanticSearch
    {
        Configurations =
        {
            new SemanticConfiguration("my-semantic-config", new()
            {
                TitleField = new SemanticField("HotelName"),
                ContentFields =
                {
                    new SemanticField("Description"),
                    new SemanticField("Description_fr")
                },
                KeywordsFields =
                {
                    new SemanticField("Tags"),
                    new SemanticField("Category")
                }
            })
        }
    };

    adminClient.CreateOrUpdateIndex(definition);
}

A következő kód létrehozza az indexet a keresési szolgáltatásban:

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

SearchClient ingesterClient = adminClient.GetSearchClient(indexName);

Dokumentumok betöltése

Az Azure AI Search a szolgáltatásban tárolt tartalmakon keres. A dokumentumok feltöltésének kódja megegyezik a teljes szöveges keresés C# rövid útmutatójával, így itt nem kell duplikálni. Négy hotelnek kell lennie névvel, címmel és leírással. A megoldásnak a Szállodák és címek típusokkal kell rendelkeznie.

Keresés az indexekben

Az alábbi lekérdezés a szemantikai rangsorolót hívja meg a paraméterek megadására szolgáló keresési lehetőségekkel:

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

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

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

Összehasonlításként az alábbi eredmények egy olyan lekérdezés eredményei, amelyek a kifejezés gyakorisága és közelsége alapján az alapértelmezett BM25 rangsorolást használják. A "melyik szálloda rendelkezik jó étteremmel a helyszínen", a BM25 rangsorolási algoritmus az alábbi képernyőképen látható sorrendben adja vissza a találatokat:

A BM25 által rangsorolt egyezéseket ábrázoló képernyőkép.

Ezzel szemben, ha a szemantikai rangsorolást ugyanarra a lekérdezésre alkalmazzák ("melyik szálloda rendelkezik egy jó étteremmel a helyszínen"), az eredmények a lekérdezés szemantikai relevanciája alapján lesznek újraformázva. Ezúttal a legjobb eredmény a szálloda és az étterem, amely jobban igazodik a felhasználói elvárásokhoz.

Képernyőkép a szemantikai rangsor alapján rangsorolt egyezésről.

A program futtatása

Nyomja le az F5 billentyűt az alkalmazás újraépítéséhez és a program teljes futtatásához.

A kimenet tartalmazza a Console.WriteLine üzeneteit, a lekérdezési információk és eredmények hozzáadásával.

Az erőforrások eltávolítása

Ha a saját előfizetésében dolgozik, érdemes az egyes projektek végén eldöntenie, hogy szüksége lesz-e még a létrehozott erőforrásokra. A továbbra is futó erőforrások költségekkel járhatnak. Az erőforrásokat törölheti egyesével, vagy az erőforráscsoport törlésével eltávolíthatja a benne lévő összes erőforrást is.

A portálon a bal oldali navigációs panel Minden erőforrás vagy Erőforráscsoport hivatkozásával kereshet és kezelhet erőforrásokat.

Következő lépések

Ebben a rövid útmutatóban megtanulta, hogyan hívhatja meg a szemantikai rangsorolót egy meglévő indexen. Javasoljuk, hogy a következő lépésként próbálja ki a szemantikai rangsorolót a saját indexeken. Ha azonban folytatni szeretné a bemutatókat, látogasson el az alábbi hivatkozásra.