Vytvoření indexu pro více jazyků ve službě Azure AI Vyhledávač

Poznámka:

Azure AI Vyhledávač je k dispozici prostřednictvím portálu Azure, rozhraní REST API a Sady Azure SDK. Podporuje také Foundry IQ, spravovanou znalostní vrstvu, která transformuje podnikový obsah na opakovaně použitelné znalostní báze s podporou oprávnění pro agenty na portálu Microsoft Foundry.

Pokud máte řetězce ve více jazycích, můžete pomocí vektorového vyhledávání matematicky reprezentovat vícejazyčný obsah, což je modernější přístup. Pokud nepoužíváte vektory, můžete také připojit analyzátory jazyka , které analyzují řetězce pomocí lingvistických pravidel určitého jazyka během indexování a provádění dotazů. Pomocí analyzátoru jazyka získáte lepší zpracování diakritických znamének, variant znaků, interpunkce a kořenových formulářů slov.

Azure AI Vyhledávač podporuje analyzátory Microsoftu a Lucene. Ve výchozím nastavení používá vyhledávací modul Standard Lucene, který je nezávislý na konkrétním jazyce. Pokud testování znamená, že výchozí analyzátor není dostatečný, nahraďte ho analyzátorem jazyka.

Ve službě Azure AI Vyhledávač zahrnují tyto dva vzory pro podporu více jazyků:

  • Vytvořte indexy specifické pro jazyk, ve kterých je veškerý obsah čitelný pro člověka ve stejném jazyce a všechna prohledávatelná pole řetězců jsou přiřazena k použití stejného analyzátoru jazyka.

  • Vytvořte kombinovaný index s verzemi jednotlivých polí specifických pro jazyk (například description_en, description_fr, description_ko) a pak omezte fulltextové vyhledávání jenom na tato pole v době dotazu. Tento přístup je užitečný pro scénáře, kdy jazykové varianty jsou potřeba jenom u několika polí, jako je popis.

Tento článek se zaměřuje na kroky a osvědčené postupy pro konfiguraci a dotazování polí specifických pro jazyk v kombinovaném indexu:

  • Definujte pole řetězce pro každou variantu jazyka.
  • Nastavte pro každé pole analyzátor jazyka.
  • V požadavku dotazu nastavte searchFields parametr na konkrétní pole a pak použijte select k vrácení pouze těch polí, která mají kompatibilní obsah.

Poznámka:

Pokud používáte velké jazykové modely ve vzoru RAG (Retrieval Augmented Generated), můžete navrhnout výzvu tak, aby vrátila přeložené řetězce. Tento scénář je mimo rozsah tohoto článku.

Požadavky

Analýza jazyka se vztahuje na pole typu Edm.String , která jsou searchablea obsahují lokalizovaný text. Pokud potřebujete také překlad textu, projděte si další část a zjistěte, jestli obohacení AI vyhovuje vašim potřebám.

Neřetězcová pole a pole řetězce, která nelze prohledávat, neprocházejí lexikální analýzou a nejsou tokenizovány. Místo toho jsou uloženy a vráceny přesně.

Přidání překladu textu

Tento článek předpokládá, že přeložené řetězce již existují. Pokud tomu tak není, můžete nástroje Foundry připojit k kanálu rozšiřování, který během indexování vyvolá překlad textu. Překlad textu závisí na funkci indexeru a nástrojích Foundry, ale veškeré nastavení se provádí ve službě Azure AI Vyhledávač.

Pokud chcete přidat překlad textu, postupujte takto:

  1. Ověřte, že je váš obsah v podporovaném zdroji dat.

  2. Vytvořte zdroj dat, který odkazuje na váš obsah.

  3. Vytvořte sadu dovedností, která zahrnuje dovednost překladu textu.

    Funkce překlad textu přijímá jako vstup jeden řetězec. Pokud máte více polí, můžete vytvořit sadu schopností, která volá překlad textu několikrát, jednou pro každé pole. Alternativně můžete pomocí dovednosti Sloučení textu konsolidovat obsah více polí do jednoho dlouhého řetězce.

  4. Vytvořte index, který obsahuje pole pro přeložené řetězce. Většina tohoto článku se zabývá návrhem indexu a definicemi polí pro indexování a dotazování obsahu ve více jazycích.

  5. Připojte k vaší sadě dovedností prostředek Microsoft Foundry .

  6. Vytvořte a spusťte indexer a pak použijte doprovodné materiály v tomto článku k dotazování pouze na pole zájmu.

Definování polí pro obsah v různých jazycích

Ve službě Azure AI Vyhledávač cílí dotazy na jeden index. Vývojáři, kteří chtějí poskytovat řetězce specifické pro jazyk v jednom vyhledávacím prostředí, obvykle definují jedno vyhrazené pole pro každý jazyk pro ukládání hodnot, například jedno pole pro anglické řetězce a jedno pole pro francouzské řetězce.

Vlastnost analyzer definice pole slouží k nastavení analyzátoru jazyka. Používá se k indexování i provádění dotazů.

{
  "name": "hotels-sample",
  "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"
    }
  ]
}

Sestavení a načtení indexu

Mezistupněm je vytvoření a naplnění indexu před formulací dotazu. Tento krok zde uvádíme kvůli úplnosti. Jedním ze způsobů, jak určit dostupnost indexu, je kontrola seznamu indexů na portálu.

Omezení dotazu a oříznutí výsledků

Parametry dotazu slouží k omezení vyhledávání na konkrétní pole a následné oříznutí výsledků všech polí, která nejsou pro váš scénář užitečná.

Parametry Účel
searchFields Omezuje fulltextové vyhledávání na seznam pojmenovaných polí.
select Ořízne odpověď tak, aby obsahovala pouze ta pole, která zadáte. Ve výchozím nastavení se vrátí všechna dostupná pole. Tento select parametr umožňuje vybrat, které z nich se mají vrátit.

Vzhledem k cíli omezit vyhledávání na pole obsahující francouzské řetězce byste použili searchFields k cílení dotazu na pole obsahující řetězce v daném jazyce.

Určení analyzátoru v požadavku na dotaz není nutné. Analyzátor jazyka v definici pole určuje analýzu textu během provádění dotazu. U dotazů, které určují více polí, se termíny nebo fráze zpracovávají současně pomocí různých analyzátorů přiřazených ke každému poli.

Standardně hledání vrátí všechna pole označená jako vyhledatelná. Proto můžete chtít vyloučit pole, která nevyhovují prostředí vyhledávání specifickému pro jazyk, které chcete poskytnout. Konkrétně pokud jste omezili vyhledávání na pole s francouzskými řetězci, pravděpodobně chcete z výsledků vyloučit pole s anglickými řetězci. Pomocí parametru select dotazu můžete řídit, která pole se vrátí do volající aplikace.

Příklad v REST

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

Příklad v jazyce C#

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);
}

Zvýšení jazykových polí

Někdy jazyk agenta vydávajícího dotaz není známý, v takovém případě může být dotaz vydán pro všechna pole současně. Předvolbu IA pro výsledky v určitém jazyce je možné definovat pomocí hodnoticího profilu. V následujícím příkladu mají shody nalezené v popisu ve francouzštině vyšší skóre v porovnání s shodami v jiných jazycích.

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

Pak byste do žádosti o vyhledávání zahrnuli profil bodování:

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

Další kroky