Skapa ett index för flera språk i Azure AI Search

Om du har strängar på flera språk kan du bifoga språkanalysverktyg som analyserar strängar med hjälp av språkregler för ett visst språk under indexering och frågekörning. Med en språkanalys får du bättre hantering av teckenvariationer, skiljetecken och ordrotsformulär.

Azure AI Search stöder Microsoft- och Lucene-analysverktyg. Som standard använder sökmotorn Standard Lucene, som är språkagnostisk. Om testningen indikerar att standardanalysen inte är tillräcklig ersätter du den med en språkanalysator.

I Azure AI Search är de två mönstren för stöd för flera språk:

  • Skapa språkspecifika index där allt alfanumeriskt innehåll finns på samma språk och alla sökbara strängfält tilldelas samma språkanalys.

  • Skapa ett blandat index med språkspecifika versioner av varje fält (till exempel description_en, description_fr, description_ko) och begränsa sedan fulltextsökningen till bara dessa fält vid frågetillfället. Den här metoden är användbar för scenarier där språkvarianter bara behövs i några få fält, till exempel en beskrivning.

Den här artikeln fokuserar på steg och metodtips för att konfigurera och fråga språkspecifika fält i ett blandat index:

  • Definiera ett strängfält för varje språkvariant.
  • Ange ett språkanalysverktyg för varje fält.
  • I frågebegäran anger du parametern searchFields till specifika fält och använder select sedan för att returnera bara de fält som har kompatibelt innehåll.

Kommentar

Om du använder stora språkmodeller i ett RAG-mönster (retrieveal augmented generated) kan du skapa uppmaningen att returnera översatta strängar. Det scenariot ligger utanför omfånget för den här artikeln.

Förutsättningar

Språkanalys gäller för fält av typen Edm.Stringsearchable, och som innehåller lokaliserad text. Om du också behöver textöversättning läser du nästa avsnitt för att se om AI-berikning uppfyller dina behov.

Icke-strängfält och icke-sökbara strängfält genomgår inte lexikal analys och tokeniseras inte. I stället lagras och returneras de ordagrant.

Lägg till textöversättning

Den här artikeln förutsätter att översatta strängar redan finns. Om så inte är fallet kan du koppla Azure AI-tjänster till en berikningspipeline och anropa textöversättning under indexeringen. Textöversättning är beroende av indexerarens funktion och Azure AI-tjänster, men all konfiguration görs i Azure AI Search.

Följ dessa steg för att lägga till textöversättning:

  1. Kontrollera att innehållet finns i en datakälla som stöds.

  2. Skapa en datakälla som pekar på ditt innehåll.

  3. Skapa en kompetensuppsättning som innehåller kunskaper om textöversättning.

    Färdigheten Textöversättning tar en enda sträng som indata. Om du har flera fält kan du skapa en kompetensuppsättning som anropar textöversättning flera gånger, en gång för varje fält. Du kan också använda färdigheten Textfusion för att konsolidera innehållet i flera fält till en lång sträng.

  4. Skapa ett index som innehåller fält för översatta strängar. Merparten av den här artikeln beskriver indexdesign och fältdefinitioner för indexering och frågor mot innehåll på flera språk.

  5. Koppla en Azure AI-tjänstresurs för flera regioner till din kompetensuppsättning.

  6. Skapa och kör indexeraren och använd sedan vägledningen i den här artikeln för att fråga bara de intressanta fälten.

Dricks

Textöversättning är inbyggd i guiden Importera data. Om du har en datakälla som stöds med text som du vill översätta kan du gå igenom guiden för att testa funktionerna för språkidentifiering och översättning innan du skriver någon kod.

Definiera fält för innehåll på olika språk

I Azure AI Search riktar sig frågor mot ett enda index. Utvecklare som vill tillhandahålla språkspecifika strängar i en enda sökupplevelse definierar vanligtvis dedikerade fält för att lagra värdena: ett fält för engelska strängar, ett för franska och så vidare.

Egenskapen analyzer för en fältdefinition används för att ange språkanalyseraren. Den används för både indexering och frågekörning.

{
  "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"
    }
  ]
}

Skapa och läsa in ett index

Ett mellanliggande steg är att skapa och fylla i indexet innan du formulerar en fråga. Vi nämner det här steget för fullständighet. Ett sätt att fastställa indextillgänglighet är genom att kontrollera indexlistan i portalen.

Begränsa fråge- och trimresultat

Parametrar i frågan används för att begränsa sökningen till specifika fält och sedan trimma resultatet av fält som inte är användbara för ditt scenario.

Parametrar Syfte
searchFields Begränsar fulltextsökning till listan över namngivna fält.
select Trimmar svaret så att det endast innehåller de fält som du anger. Som standard returneras alla hämtningsbara fält. Med select parametern kan du välja vilka som ska returneras.

Med tanke på målet att begränsa sökningen till fält som innehåller franska strängar använder searchFields du för att rikta frågan mot fält som innehåller strängar på det språket.

Det är inte nödvändigt att ange analysatorn för en frågebegäran. En språkanalys i fältdefinitionen avgör textanalys under frågekörningen. För frågor som anger flera fält bearbetas termerna eller fraserna samtidigt av de tilldelade analysverktygen för varje fält.

Som standard returnerar en sökning alla fält som har markerats som hämtningsbara. Därför kanske du vill exkludera fält som inte överensstämmer med den språkspecifika sökupplevelse som du vill ange. Mer specifikt, om du begränsat sökningen till ett fält med franska strängar, vill du förmodligen exkludera fält med engelska strängar från dina resultat. select Med frågeparametern får du kontroll över vilka fält som returneras till det anropande programmet.

Exempel i REST

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"
}

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

Öka språkspecifika fält

Ibland är språket för agenten som utfärdar en fråga inte känt, i vilket fall frågan kan utfärdas mot alla fält samtidigt. IA-inställningar för resultat på ett visst språk kan definieras med hjälp av bedömningsprofiler. I exemplet nedan poängsätts matchningar som finns i beskrivningen på franska högre i förhållande till matchningar på andra språk:

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

Du skulle sedan inkludera bedömningsprofilen i sökbegäran:

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"
}

Nästa steg