Teilen über


Erstellen Sie einen Index in Azure AI Search

In diesem Artikel lernen Sie die Schritte zum Definieren eines Schemas für einen Suchindex und zum Pushen dieses Index an einen Suchdienst kennen. Durch die Erstellung eines Indexes werden die physischen Datenstrukturen Ihres Suchdienstes festgelegt. Wenn er vorhanden ist, laden Sie den Index in einer separaten Aufgabe.

Voraussetzungen

  • Schreibberechtigungen als Suchdienstmitwirkender oder einen Administrator-API-Schlüssel für die schlüsselbasierte Authentifizierung.

  • Ein Verständnis der Daten, die Sie indizieren möchten. Ein Suchindex basiert auf externen Inhalten, die durchsuchbar gemacht werden sollen. Durchsuchbare Inhalte werden als Felder in einem Index gespeichert. Sie sollten eine klare Vorstellung davon haben, welche Quellfelder durchsuchbar, abrufbar, filterbar, facettierbar und sortierbar sein sollen (einen Leitfaden dazu finden Sie in der Schemaprüfliste).

  • Sie müssen auch ein eindeutiges Feld in den Quelldaten haben, das als Dokumentenschlüssel (oder ID) im Index verwendet werden kann.

  • Eine stabile Indexposition. Das Verschieben eines vorhandenen Index zu einem anderen Suchdienst wird nicht sofort unterstützt. Sehen Sie sich die Anwendungsanforderungen erneut an, und vergewissern Sie sich, dass Ihr vorhandener Suchdienst (Kapazität und Speicherort) für Ihre Anforderungen ausreichend sind.

  • Schließlich verfügen alle Dienstebenen über Indexgrenzwerte für die Anzahl von Objekten, die Sie erstellen können. Wenn Sie z. B. mit der kostenlosen Version experimentieren, können Sie immer nur drei Indizes gleichzeitig haben. Innerhalb des Index selbst gibt es Grenzwerte für Vektoren und Indexgrenzwerte für die Anzahl einfacher und komplexer Felder.

Dokumentschlüssel

Für einen Suchindex gelten zwei Anforderungen: Er muss einen Namen und einen Dokumentschlüssel aufweisen.

Ein Dokumentschlüssel ist der eindeutige Bezeichner eines Suchdokuments, und ein Suchdokument ist eine Sammlung von Feldern, die etwas vollständig beschreiben. Wenn Sie beispielsweise einen Filmdatensatzindizieren, enthält ein Suchdokument den Titel, das Genre und die Dauer der einzelnen Filme.

In Azure KI Suche muss der Dokumentschlüssel eine Zeichenfolge sein, die aus eindeutigen Werten in der Datenquelle stammt, die den zu indizierenden Inhalt bereitstellt. Ein Suchdienst generiert keine Schlüsselwerte, aber in einigen Szenarien (wie dem Azure-Tabellenindexer) synthetisiert er vorhandene Werte, um einen eindeutigen Schlüssel für die zu indizierenden Dokumente zu erstellen.

Bei der inkrementellen Indizierung, bei der neue und aktualisierte Inhalte indiziert werden, werden eingehende Dokumente mit neuen Schlüsseln hinzugefügt, während eingehende Dokumente mit vorhandenen Schlüsseln entweder zusammengeführt oder überschrieben werden, je nachdem, ob Indexfelder leer oder gefüllt sind.

Schemaprüfliste

Verwenden Sie diese Prüfliste bei den Entwurfsentscheidungen für Ihren Suchindex.

  1. Überprüfen Sie die Benennungskonventionen, damit Index- und Feldnamen den Benennungsregeln entsprechen.

  2. Sehen Sie sich die unterstützten Datentypen an. Der Datentyp hat EinFlow auf die Verwendung des Feldes. Numerische Inhalte können beispielsweise gefiltert, aber nicht per Volltextsuche durchsucht werden. Der gängigste Datentyp ist Edm.String für durchsuchbaren Text, in Token umgewandelt und abgefragt mithilfe der Volltextsuchmaschine. Der gängigste Datentyp für ein Vektorfeld ist Edm.Single, Sie können jedoch auch andere Typen verwenden.

  3. Identifizieren Sie einen Dokumentschlüssel. Ein Dokumentschlüssel ist eine Anforderung für einen Index. Es handelt sich um ein einzelnes Zeichenfolgenfeld, das aus einem Quelldatenfeld mit eindeutigen Werten gespeist wird. Beispiel: Beim Indizieren über Blob Storage wird der Metadatenspeicherpfad häufig als Dokumentschlüssel verwendet, da er jeden Blob im Container eindeutig identifiziert.

  4. Identifizieren Sie die Felder in Ihrer Datenquelle, die zu durchsuchbaren Inhalten im Index beitragen.

    Durchsuchbare Nicht-Vektorinhalte sind beispielsweise kurze oder lange Zeichenfolgen, die mit dem Volltext-Suchmodul abgefragt werden. Wenn der Inhalt ausführlich ist (kleine Ausdrücke oder größere Blöcke), experimentieren Sie mit verschiedenen Analyzern, um zu sehen, wie der Text in Token umgewandelt wird.

    Durchsuchbare Vektorinhalte können Bilder oder Text (in einer beliebigen Sprache) sein, die als mathematische Darstellung vorhanden sind. Sie können schlanke Datentypen oder die Vektorkomprimierung verwenden, um Vektorfelder zu verkleinern.

    Die Zuweisung von Feldattributen bestimmt sowohl das Suchverhalten als auch die physische Darstellung Ihres Index im Suchdienst. Festzulegen, wie Felder angegeben werden sollen, ist für viele Kunden ein iterativer Prozess. Um Iterationen zu beschleunigen, beginnen Sie mit Beispieldaten, damit Sie problemlos löschen und neu erstellen können.

  5. Identifizieren Sie, welche Quellfelder als Filter verwendet werden können. Numerische Inhalte und kurze Textfelder, insbesondere solche mit sich wiederholenden Werten, sind gute Optionen. Beachten Sie beim Arbeiten mit Filtern Folgendes:

    • Filter können in Vektor- und Nicht-Vektorabfragen verwendet werden. Der Filter selbst wird aber auf alphanumerische (Nicht-Vektor-)Felder in Ihrem Index angewandt.

    • Filterbare Felder können optional in der Facettennavigation verwendet werden.

    • Filterbare Felder werden in beliebiger Reihenfolge zurückgegeben. Erwägen Sie daher, sie auch sortierbar zu machen.

  6. Geben Sie für Vektorfelder eine Konfiguration für die Vektorsuche und die Algorithmen an, die zum Erstellen von Navigationspfaden und zum Ausfüllen des Einbettungsbereichs verwendet werden. Weitere Informationen finden Sie unter Hinzufügen von Vektorfeldern.

    Vektorfelder weisen zusätzliche Eigenschaften auf, die Nicht-Vektorfelder nicht enthalten, z. B. für die zu verwendenden Algorithmen und die Vektorkomprimierung.

    Attribute, die für Vektordaten nicht erforderlich sind, z. B. für Sortierung, Filterung und Facettierung, sind in Vektorfeldern nicht enthalten.

  7. Legen Sie für Nicht-Vektorfelder fest, ob Sie das Standardanalysetool ("analyzer": null) oder ein anderes Analysetool verwenden möchten. Analysetools werden verwendet, um Textfelder während der Indizierung und Abfrageausführung mit Token zu versehen.

    Für mehrsprachige Zeichenketten wird ein Sprachanalysator verwendet.

    Für Strings mit Bindestrich oder Sonderzeichen sollten Sie spezialisierte Analysatoren in Betracht ziehen. Ein Beispiel hierfür ist ein Schlüsselwort, durch das der gesamte Inhalt eines Felds als ein einzelnes Token behandelt wird. Dieses Verhalten ist nützlich für Daten wie Postleitzahlen, IDs und einige Produktnamen. Weitere Informationen finden Sie unter Suche nach Teilausdrücken und Mustern mit Sonderzeichen (Bindestriche, Platzhalter, reguläre Ausdrücke, Muster).

Hinweis

Die Volltextsuche wird über Ausdrücke durchgeführt, die während der Indizierung mit Token versehen werden. Wenn Ihre Abfragen nicht die erwarteten Ergebnisse zurückgeben, testen Sie auf Tokenisierung, um zu überprüfen, ob die gesuchte Zeichenfolge tatsächlich vorhanden ist. Sie können verschiedene Analysetools für Zeichenfolgen ausprobieren, um zu ermitteln, wie Token für verschiedene Analysetools erstellt werden.

Erstellen eines Index

Wenn Sie bereit sind, den Index zu erstellen, verwenden Sie einen Suchclient, der die Anforderung senden kann. Für die anfängliche Entwicklung sowie für Proof of Concept-Tests empfiehlt sich die Verwendung des Azure-Portals oder der REST-APIs, andernfalls werden dazu auch die Azure-SDKs verwendet.

Planen Sie während der Entwicklung häufige Neuerstellungen ein. Da physische Strukturen im Dienst erstellt werden, ist bei vielen Änderungen das Löschen und Neuerstellen von Indizes erforderlich. Sie sollten erwägen, mit einer Teilmenge Ihrer Daten zu arbeiten, damit Neuerstellungen schneller gehen.

Bei der Indexerstellung über das Portal werden Anforderungen und Schemaregeln für bestimmte Datentypen erzwungen, z. B. das Deaktivieren von Funktionen zur Volltextsuche bei numerischen Feldern.

  1. Melden Sie sich beim Azure-Portal an.

  2. Überprüfen des Speicherplatzes. Suchdienste unterliegen maximalen Anzahl von Indizes, variierend nach Dienstebene. Stellen Sie sicher, dass Sie Platz für einen zweiten Index haben.

  3. Wählen Sie auf der Übersichtsseite des Suchdiensts eine der beiden Optionen zum Erstellen eines Suchindex aus:

    • Index hinzufügen, ein eingebetteter Editor zum Angeben eines Indexschemas
    • Import-Assistenten

    Der Assistent ist ein End-to-End-Workflow, der einen Indexer, eine Datenquelle und einen fertigen Index erstellt. Außerdem werden die Daten geladen. Wenn dies mehr ist, als Sie möchten, verwenden Sie stattdessen Index hinzufügen.

Der folgende Screenshot hebt hervor, wo Sie Index hinzufügen und Daten importieren auf der Befehlsleiste finden. Nachdem ein Index erstellt wurde, können Sie ihn auf der Registerkarte Indizes wiederfinden.

Befehl „Index hinzufügen“

Tipp

Nachdem Sie einen Index im Portal erstellt haben, können Sie die JSON-Darstellung kopieren und ihrem Anwendungscode hinzufügen.

corsOptions für ursprungsübergreifende Abfragen festlegen

Indexschemas enthalten einen Abschnitt zum Festlegen von corsOptions. Standardmäßig kann clientseitiges JavaScript keine APIs aufrufen, da die Browser alle herkunftsübergreifenden Anfragen verhindern. Um herkunftsübergreifende Abfragen an Ihren Index zu ermöglichen, aktivieren Sie CORS (Cross-Origin Resource Sharing), indem Sie das Attribut corsOptions setzen. Aus Sicherheitsgründen wird CORS nur von Abfrage-APIs unterstützt.

"corsOptions": {
  "allowedOrigins": [
    "*"
  ],
  "maxAgeInSeconds": 300

Die folgenden Eigenschaften können für CORS festgelegt werden:

  • allowedOrigins (erforderlich): Dies ist eine Liste von Herkunftsländern, die Zugriff auf Ihren Index haben. JavaScript-Code, der von diesen Ursprüngen geliefert wird, darf Ihren Index abfragen (vorausgesetzt, der Aufrufer gibt einen gültigen Schlüssel an oder verfügt über Berechtigungen). Ursprünge werden in der Regel im Format protocol://<fully-qualified-domain-name>:<port> angegeben, wobei <port> häufig weggelassen wird. Weitere Informationen finden Sie unter Ursprungsübergreifende Ressourcennutzung (Wikipedia).

    Wenn Sie den Zugriff auf alle Ursprünge zulassen möchten, beziehen Sie * als ein einzelnes Element in das Array allowedOrigins ein. Dies ist keine empfohlene Praxis für produktive Suchdienste, aber es ist oft nützlich für die Entwicklung und Fehlersuche.

  • maxAgeInSeconds (optional): Browser verwenden diesen Wert, um die Dauer (in Sekunden) für das Caching von CORS-Preflight-Antworten zu bestimmen. Dies muss eine positive ganze Zahl sein. Ein längerer Cache-Zeitraum sorgt für eine bessere Leistung, verlängert aber die Zeit, die eine CORS-Richtlinie benötigt, um wirksam zu werden. Wenn dieser Wert nicht festgelegt ist, wird eine Standarddauer von fünf Minuten verwendet.

Zulässige Updates für vorhandene Indizes

Index erstellen erstellt die physischen Datenstrukturen (Dateien und invertierte Indizes) in Ihrem Suchdienst. Nachdem der Index erstellt wurde, hängt die Möglichkeit, Änderungen mithilfe von Index erstellen oder aktualisieren vorzunehmen, davon ab, ob diese physischen Strukturen durch Ihre Änderungen ungültig werden. Die meisten Feldattribute können nicht mehr geändert werden, nachdem das Feld in Ihrem Index erstellt wurde.

Alternativ können Sie einen Indexalias erstellen, der als stabiler Verweis im Anwendungscode dient. Anstatt Ihren Code zu aktualisieren, können Sie einen Indexalias aktualisieren, um auf neuere Indexversionen zu zeigen.

Um die Änderungsrate im Entwurfsprozess zu minimieren, wird in der folgenden Tabelle beschrieben, welche Elemente im Schema fest und welche flexibel sind. Das Ändern eines festen Elements erfordert eine Indexneuerstellung, während flexible Elemente jederzeit ohne Beeinträchtigung der physischen Implementierung geändert werden können.

Element Kann aktualisiert werden?
Name Nein
Schlüssel Nein
Feldnamen und -typen Nein
Feldattribute (durchsuchbar, filterbar, facettierbar, sortierbar) Nein
Feldattribut (abrufbar) Ja
Gespeichert (gilt für Vektoren) No
Analyzer Sie können benutzerdefinierte Analyzer im Index hinzufügen und ändern. Was die Analysator-Zuweisungen für String-Felder betrifft, können Sie nur searchAnalyzer ändern. Alle anderen Zuweisungen und Änderungen erfordern eine Neuerstellung.
Bewertungsprofile Ja
Vorschläge No
Ressourcenfreigabe zwischen verschiedenen Ursprüngen (Cross-Origin Resource Sharing, CORS) Ja
Verschlüsselung Ja

Nächste Schritte

Verwenden Sie die folgenden Links, um sich mit dem Laden eines Indexes mit Daten oder dem Erweitern eines Indexes mit einer Synonymzuordnung vertraut zu machen.