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 diakritikák, a karaktervariánsok, 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 összes olvasható tartalom ugyanabban 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 adjaselect
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 searchable
honosí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:
Hozzon létre egy olyan adatforrást , amely a tartalomra mutat.
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.
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.
Csatoljon egy többrégiós Azure AI-szolgáltatási erőforrást a készségkészlethez.
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=2024-07-01
{
"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=2024-07-01
{
"search": "pets allowed",
"searchFields": "Tags, Description_fr",
"select": "HotelName, Tags, Description_fr",
"scoringProfile": "frenchFirst",
"count": "true"
}