Index létrehozása több nyelvhez az Azure AI Searchben

Ha több nyelven is rendelkezik sztringekkel, csatolhat olyan nyelvelemzőket , amelyek egy adott nyelv nyelvi szabályaival elemzik a sztringeket az indexelés és a lekérdezés végrehajtása során. A nyelvelemzővel jobban kezelhetők a karaktervariációk, az írásjelek és a szógyökerű űrlapok.

Az Azure AI Search támogatja a Microsoft és a Lucene elemzőit. Alapértelmezés szerint a keresőmotor a Standard Lucene-t használja, amely nyelvi agnosztikus. Ha a tesztelés azt jelzi, hogy az alapértelmezett elemző nem megfelelő, cserélje le egy nyelvelemzőre.

Az Azure AI Searchben a több nyelv támogatásának két mintája a következő:

  • Olyan nyelvspecifikus indexeket hozhat létre, amelyekben az alfanumerikus tartalom ugyanazon a nyelven található, és az összes kereshető sztringmező ugyanazt a nyelvelemzőt használja.

  • Hozzon létre egy kevert indexet az egyes mezők nyelvspecifikus verzióival (például description_en, description_fr, description_ko), majd a teljes szöveges keresést csak ezekre a mezőkre korlátozza lekérdezéskor. Ez a megközelítés olyan helyzetekben hasznos, ahol a nyelvi változatokra csak néhány mezőben van szükség, például egy leírásra.

Ez a cikk a nyelvspecifikus mezők vegyes indexben való konfigurálásának és lekérdezésének lépéseit és ajánlott eljárásait ismerteti:

  • Adjon meg egy sztringmezőt az egyes nyelvi változatokhoz.
  • Állítson be egy nyelvelemzőt az egyes mezőkre.
  • A lekérdezési kérelemben állítsa a searchFields paramétert adott mezőkre, majd csak azokat a mezőket adja select vissza, amelyek kompatibilis tartalommal rendelkeznek.

Feljegyzés

Ha nagy nyelvi modelleket használ a lekéréses bővített generált (RAG) mintában, megtervezheti a lefordított sztringek visszaadására vonatkozó kérést. Ez a forgatókönyv a cikk hatókörén kívül esik.

Előfeltételek

A nyelvelemzés olyan típusú Edm.String mezőkre vonatkozik, amelyek searchablehonosított szöveget tartalmaznak. Ha szövegfordításra is szüksége van, tekintse át a következő szakaszt, és ellenőrizze, hogy az AI-bővítés megfelel-e az igényeinek.

A nem sztringmezők és a nem kereshető sztringmezők nem esnek át lexikális elemzésen, és nem jogkivonatosak. Ehelyett a rendszer tárolja őket, és szó szerint visszaadja őket.

Szövegfordítás hozzáadása

Ez a cikk feltételezi, hogy a lefordított sztringek már léteznek. Ha ez nem így van, csatolhatja az Azure AI-szolgáltatásokat egy bővítési folyamathoz, és szöveges fordítást invoktálhat az indexelés során. A szövegfordítás függ az indexelő szolgáltatástól és az Azure AI-szolgáltatásoktól, de a beállítás az Azure AI Searchben történik.

Szövegfordítás hozzáadásához kövesse az alábbi lépéseket:

  1. Ellenőrizze, hogy a tartalom támogatott adatforrás-e.

  2. Hozzon létre egy olyan adatforrást , amely a tartalomra mutat.

  3. Hozzon létre egy olyan készségkészletet , amely tartalmazza a szövegfordítási készséget.

    A szövegfordítási képesség egyetlen sztringet vesz fel bemenetként. Ha több mezővel rendelkezik, létrehozhat egy készségkészletet, amely többször is meghívja a szövegfordítást, mindegyik mezőhöz egyszer. Másik lehetőségként használhatja a Szövegegyesítés képességet több mező tartalmának egyetlen hosszú sztringbe való összevonására.

  4. Hozzon létre egy indexet, amely a lefordított sztringek mezőit tartalmazza. A cikk nagy része a többnyelvű tartalmak indexelésével és lekérdezésével kapcsolatos indextervezést és meződefiníciókat ismerteti.

  5. Csatoljon egy többrégiós Azure AI-szolgáltatási erőforrást a készségkészlethez.

  6. Hozza létre és futtassa az indexelőt, majd az ebben a cikkben szereplő útmutatást alkalmazva csak az érdeklődési köröket kérdezheti le.

Tipp.

A szövegfordítás be van építve az Adatok importálása varázslóba. Ha támogatott adatforrással rendelkezik a lefordítandó szöveggel, a kód írása előtt kipróbálhatja a nyelvészlelési és fordítási funkciókat a varázslóban.

Különböző nyelvű tartalmak mezőinek definiálása

Az Azure AI Searchben a lekérdezések egyetlen indexet céloznak meg. Azok a fejlesztők, akik nyelvspecifikus sztringeket szeretnének megadni egyetlen keresési felületen, általában dedikált mezőket definiálnak az értékek tárolásához: egy mező angol sztringekhez, egy francia és így tovább.

A analyzer meződefiníció tulajdonsága a nyelvelemző beállítására szolgál. Az indexeléshez és a lekérdezések végrehajtásához is használható.

{
  "name": "hotels-sample-index",
  "fields": [
    {
      "name": "Description",
      "type": "Edm.String",
      "retrievable": true,
      "searchable": true,
      "analyzer": "en.microsoft"
    },
    {
      "name": "Description_fr",
      "type": "Edm.String",
      "retrievable": true,
      "searchable": true,
      "analyzer": "fr.microsoft"
    }
  ]
}

Index létrehozása és betöltése

Egy köztes lépés az index létrehozása és feltöltése lekérdezés létrehozása előtt. Ezt a lépést itt említjük a teljesség érdekében. Az indexek elérhetőségének meghatározásához az indexek listáját a portálon kell ellenőrizni.

A lekérdezés és a vágás eredményeinek korlátozása

A lekérdezés paramétereivel meghatározott mezőkre korlátozhatja a keresést, majd levághatja a forgatókönyvnek nem megfelelő mezők eredményeit.

Paraméterek Cél
searchFields A teljes szöveges keresés korlátozása az elnevezett mezők listájára.
select Levágja a választ, hogy csak a megadott mezőket tartalmazza. Alapértelmezés szerint az összes beolvasható mező vissza lesz adva. A select paraméter segítségével kiválaszthatja, hogy melyeket adja vissza.

A francia sztringeket tartalmazó mezőkre való keresés korlátozásának célja, hogy searchFields a lekérdezést az adott nyelven sztringeket tartalmazó mezőkre célozza.

Nem szükséges megadni az elemzőt egy lekérdezési kérelemben. A meződefiníció nyelvelemzője határozza meg a szövegelemzést a lekérdezés végrehajtása során. Több mezőt megjelölő lekérdezések esetén a különböző nyelvelemzőket használó lekérdezések esetében a kifejezéseket és kifejezéseket a hozzárendelt elemzők egyszerre dolgozzák fel az egyes mezőkhöz.

Alapértelmezés szerint a keresés az összes beolvashatóként megjelölt mezőt visszaadja. Ezért érdemes lehet kizárni azokat a mezőket, amelyek nem felelnek meg a megadni kívánt nyelvspecifikus keresési felületnek. Pontosabban, ha egy francia sztringet tartalmazó mezőre korlátozta a keresést, valószínűleg ki szeretné zárni az angol sztringeket tartalmazó mezőket az eredményekből. A lekérdezési select paraméter használatával szabályozhatja, hogy mely mezők legyenek visszaadva a hívó alkalmazásnak.

Példa a REST-ben

POST https://[service name].search.windows.net/indexes/hotels-sample-index/docs/search?api-version=2020-06-30
{
    "search": "animaux acceptés",
    "searchFields": "Tags, Description_fr",
    "select": "HotelName, Description_fr, Address/City, Address/StateProvince, Tags",
    "count": "true"
}

Példa a C-ben#

private static void RunQueries(SearchClient srchclient)
{
    SearchOptions options;
    SearchResults<Hotel> response;

    options = new SearchOptions()
    {
        IncludeTotalCount = true,
        Filter = "",
        OrderBy = { "" }
    };

    options.Select.Add("HotelId");
    options.Select.Add("HotelName");
    options.Select.Add("Description_fr");
    options.SearchFields.Add("Tags");
    options.SearchFields.Add("Description_fr");

    response = srchclient.Search<Hotel>("*", options);
    WriteDocuments(response);
}

Nyelvspecifikus mezők kiemelése

Előfordulhat, hogy a lekérdezést kibocsátó ügynök nyelve nem ismert, ebben az esetben a lekérdezés egyszerre minden mezőre kibocsátható. Az eredmények IA-preferenciája egy adott nyelven pontozási profilokkal határozható meg. Az alábbi példában a leírásban szereplő francia nyelvű találatok a más nyelvekben lévő egyezéshez képest magasabb pontszámot kapnak:

  "scoringProfiles": [
    {
      "name": "frenchFirst",
      "text": {
        "weights": { "description_fr": 2 }
      }
    }
  ]

Ezután a keresési kérelembe belefoglalja a pontozási profilt:

POST /indexes/hotels/docs/search?api-version=2023-11-01
{
  "search": "pets allowed",
  "searchFields": "Tags, Description_fr",
  "select": "HotelName, Tags, Description_fr",
  "scoringProfile": "frenchFirst",
  "count": "true"
}

Következő lépések