Erstellen eines Index für mehrere Sprachen in Azure KI Search

Wenn Sie Zeichenfolgen in mehreren Sprachen haben, können Sie Sprachanalysetools anfügen, die Zeichenfolgen mithilfe linguistischer Regeln einer bestimmten Sprache bei der Indizierung und der Abfrageausführung analysieren. Mit einem Sprachanalysetool erhalten Sie eine bessere Behandlung von Zeichenvariationen, Satzzeichen und Wortstammformen.

Azure KI Search unterstützt Microsoft- und Lucene-Analysetools. Standardmäßig verwendet die Suchmaschine Standard Lucene, was sprachagnostisch ist. Wenn sich in Tests zeigt, dass das Standardanalysetool nicht ausreicht, ersetzen Sie es durch ein Sprachanalysetool.

In Azure KI-Suche umfassen die beiden Muster zur Unterstützung mehrerer Sprachen:

  • Erstellen Sie sprachspezifische Indizes, bei denen sich der gesamte alphanumerische Inhalt in derselben Sprache befindet, und alle durchsuchbaren Zeichenfolgenfelder der gleichen Sprachanalysezugeordnet werden.

  • Erstellen Sie einen gemischten Index mit sprachspezifischen Versionen jedes Felds (z. B. description_en, description_fr, description_ko), und beschränken Sie dann die Volltextsuche auf diese Felder zur Abfragezeit. Dieser Ansatz eignet sich für Szenarien, in denen Sprachvarianten nur für ein paar Felder benötigt werden, z. B. eine Beschreibung.

Dieser Artikel befasst sich mit Schritten und bewährten Methoden zum Konfigurieren und Abfragen von sprachspezifischen Feldern in einem gemischten Index:

  • Definieren Sie ein Zeichenfolgenfeld für jede Sprachvariante.
  • Legen Sie für jedes Feld ein Sprachanalysetool fest.
  • Legen Sie in der Abfrageanforderung den searchFields-Parameter auf bestimmte Felder fest und verwenden Sie dann select, um nur die Felder mit kompatiblem Inhalt zurückzugeben.

Hinweis

Wenn Sie große Sprachmodelle in einem RAG-Muster (Retrieval Augmented Generated) verwenden, können Sie den Prompt so erstellen, dass übersetzte Zeichenfolgen zurückgegeben werden. Dieses Szenario liegt außerhalb des Themenbereichs dieses Artikels.

Voraussetzungen

Die Sprachanalyse gilt für Felder vom Typ Edm.String, die searchable sind und lokalisierten Text enthalten. Wenn Sie auch eine Textübersetzung benötigen, lesen Sie den nächsten Abschnitt, um festzustellen, ob die KI-Anreicherung für Ihre Anforderungen geeignet ist.

Nicht-Zeichenfolgenfelder und nicht durchsuchbare Zeichenfolgenfelder werden nicht lexikalisch analysiert und nicht tokenisiert. Stattdessen werden sie gespeichert und wortwörtlich zurückgegeben.

Textübersetzung hinzufügen

In diesem Artikel wird davon ausgegangen, dass übersetzte Zeichenfolgen bereits vorliegen. Wenn das nicht der Fall ist, können Sie Azure KI Services an eine Anreicherungspipeline anfügen und die Textübersetzung während der Indizierung aufrufen. Die Textübersetzung erfordert eine Abhängigkeit von der Indexer-Funktion und Azure KI Services, aber alle Einrichtung erfolgt innerhalb Azure KI Search.

Führen Sie die folgenden Schritte aus, um Textübersetzung hinzuzufügen:

  1. Überprüfen Sie, ob sich Ihre Inhalte in einer unterstützten Datenquelle befindet.

  2. Erstellen Sie eine Datenquelle, die auf Ihren Inhalt verweist.

  3. Erstellen Sie ein Skillset, das die Fähigkeiten für die Textübersetzung enthält.

    Das Textübersetzungsskill verwendet eine einzelne Zeichenfolge als Eingabe. Wenn Sie mehrere Felder haben, können Sie ein Skillset erstellen, das die Textübersetzung mehrmals aufruft, einmal für jedes Feld. Alternativ können Sie die Textzusammenführungsskills verwenden, um den Inhalt mehrerer Felder in eine lange Zeichenfolge zu konsolidieren.

  4. Erstellen Sie einen Index, der Felder für übersetzte Zeichenfolgen enthält. In den meisten dieser Artikel werden Indexdesign- und Felddefinitionen für Indizierung und Abfrage von mehrsprachigen Inhalten behandelt.

  5. Anhängen einer Azure KI Services Multi-Bereichs-Ressource an Ihr Skillset.

  6. Erstellen und Ausführen des Indexers und wenden Sie dann die Anleitungen in diesem Artikel an, um nur die Felder von Interesse abzufragen.

Tipp

Die Textübersetzung ist in den Assistenten zum Importieren von Daten integriert. Wenn Sie über eine unterstützte Datenquelle mit Text verfügen, den Sie übersetzen möchten, können Sie den Assistenten durchlaufen, um die Spracherkennungs- und Übersetzungsfunktionen zu testen, bevor Sie irgendeinen Code schreiben.

Definieren von Feldern für Inhalt in verschiedenen Sprachen

In Azure KI Search sind Abfragen auf einen einzelnen Index ausgerichtet. Entwickler, die sprachspezifische Zeichenfolgen in einer einzelnen Suchumgebung bereitstellen möchten, definieren üblicherweise dedizierte Felder, um die Werte zu speichern – also ein Feld für englische Zeichenfolgen, ein Feld für Französisch und so weiter.

Die analyzer-Eigenschaft für eine Felddefinition wird verwendet, um das Sprachanalysetool festzulegen. Sie wird sowohl für die Indizierung als auch für die Abfrageausführung verwendet.

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

Erstellen und Laden eines Index

Ein dazwischen liegender Schritt ist Build und Füllen des Index, bevor Sie eine Abfrage formulieren. Er wird daher nur der Vollständigkeit halber erwähnt. Eine Möglichkeit zum Ermitteln der Indexverfügbarkeit besteht darin, die Liste der Indizes im Portal zu überprüfen.

Einschränken der Abfrage und Ausschließen von Ergebnissen

Abfrageparameter dienen dazu, die Suche auf bestimmte Felder einzugrenzen und anschließend die Ergebnisse von Feldern auszuschließen, die für Ihr Szenario nicht relevant sind.

Parameter Zweck
searchFields Grenzt die Volltextsuche auf die Liste der angegebenen Felder ein.
select Kürzt die Antwort, sodass nur die von Ihnen angegebenen Felder berücksichtigt werden. Standardmäßig werden alle abrufbaren Felder zurückgegeben. Mit dem Parameter select können Sie auswählen, welche zurückgegeben werden sollen.

Wenn Sie die Suche also beispielsweise auf Felder mit französischen Zeichenfolgen einschränken möchten, richten Sie die Abfrage mithilfe von searchFields auf Felder aus, die Zeichenfolgen in dieser Sprache enthalten.

Die Angabe des Analysetools für eine Abfrageanforderung ist nicht erforderlich. Ein Sprachanalysetool für die Felddefinition legt die Textanalyse während der Abfrageausführung fest. Bei Abfragen, die mehrere Felder angeben, die jeweils verschiedene Sprachanalysetools aufrufen, werden die Begriffe oder Ausdrücke von den zugewiesenen Analysetools für jedes Feld gleichzeitig verarbeitet.

Standardmäßig werden bei einer Suche alle als abrufbar markierten Felder zurückgegeben. Es empfiehlt sich daher, Felder auszuschließen, die für die angestrebte sprachspezifische Sucherfahrung nicht geeignet sind. Wenn Sie die Suche auf ein Feld mit französischen Zeichenfolgen eingeschränkt haben, möchten Sie wahrscheinlich Felder mit englischen Zeichenfolgen aus Ihren Ergebnissen ausschließen. Mithilfe des Abfrageparameters select können Sie steuern, welche Felder an die aufrufende Anwendung zurückgegeben werden sollen.

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

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

Optimieren sprachspezifischer Felder

Manchmal ist die Sprache des Agents, der eine Abfrage ausgibt, nicht bekannt. In diesem Fall kann die Abfrage für alle Felder gleichzeitig ausgegeben werden. Die IA-Einstellung für Ergebnisse in einer bestimmten Sprache kann mithilfe von Bewertungsprofilen festgelegt werden. Im folgenden Beispiel erhalten die Übereinstimmungen, die in der Beschreibung in französischer Sprache gefunden werden, einen höheren Score als Übereinstimmungen in anderen Sprachen:

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

Dann würden Sie das Bewertungsprofil in die Suchanforderung einschließen:

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ächste Schritte