Generieren von Einbettungen für Suchabfragen und Dokumente

Azure KI Search hostet keine Vektorisierungsmodelle. Daher besteht eine Ihrer Herausforderungen darin, Einbettungen für Abfrageeingaben und -ausgaben zu erstellen. Sie können jedes unterstützte Einbettungsmodell verwenden, in diesem Artikel wird jedoch davon ausgegangen, dass für die Schritte Azure OpenAI-Einbettungsmodelle verwendet werden.

Es wird empfohlen, die integrierte Vektorisierung zu verwenden, die integrierte Datensegmentierung und Vektorisierung bereitstellt. Die integrierte Vektorisierung ist von Indexern, Skillsets und integrierten oder benutzerdefinierten Skills abhängig, die auf ein außerhalb von Azure KI-Suche ausgeführtes Modell verweisen.

Wenn Sie die Datensegmentierung und Vektorisierung selbst durchführen möchten, stehen Ihnen Demos im Beispielrepository zur Verfügung, die zeigen, wie Sie andere Communitylösungen integrieren.

Verwendung von Einbettungsmodellen in Vektorabfragen

  • Abfrageeingaben sind entweder Vektoren oder Text oder Bilder, die während der Abfrageverarbeitung in Vektoren konvertiert werden. Die integrierte Lösung in Azure KI-Suche besteht darin, eine Vektorisierung zu verwenden.

    Alternativ können Sie die Konvertierung auch selbst durchführen, indem Sie die Abfrageeingabe an ein Einbettungsmodell Ihrer Wahl übergeben. Zur Vermeidung einer Ratenbegrenzung können Sie Wiederholungslogik in Ihrer Workload implementieren. Für die Python-Demo wurde tenacity verwendet.

  • Abfrageausgaben sind alle übereinstimmenden Dokumente, die in einem Suchindex gefunden werden. Ihr Suchindex muss zuvor mit Dokumenten geladen worden sein, die über mindestens ein Vektorfeld mit Einbettungen verfügen. Verwenden Sie für Abfragen das gleiche Einbettungsmodell wie für die Indizierung (unabhängig davon, welches Modell Sie verwendet haben).

Erstellen von Ressourcen in der gleichen Region

Für die integrierte Vektorisierung müssen sich die Ressourcen in derselben Region befinden:

  1. Überprüfen Sie die verfügbaren Regionen für ein Texteinbettungsmodell.

  2. Suchen Sie nach der gleichen Region für Azure KI-Suche.

  3. Wenn Sie Hybridabfragen mit semantischer Rangfolge unterstützen oder die Integration eines Machine Learning-Modells mit einem benutzerdefinierten Skill in einer KI-Anreicherungspipeline ausprobieren möchten, wählen Sie eine Region aus, in der Azure KI-Suche diese Features bereitstellt.

Generieren einer Einbettung für eine improvisierte Abfrage

Der folgende Python-Code erzeugt eine Einbettung, die Sie in die Eigenschaft „Werte“ einer Vektorabfrage einfügen können.

!pip install openai

import openai

openai.api_type = "azure"
openai.api_key = "YOUR-API-KEY"
openai.api_base = "https://YOUR-OPENAI-RESOURCE.openai.azure.com"
openai.api_version = "2024-02-01"

response = openai.Embedding.create(
    input="How do I use Python in VSCode?",
    engine="text-embedding-ada-002"
)
embeddings = response['data'][0]['embedding']
print(embeddings)

Die Ausgabe ist ein Vektorarray von 1.536 Dimensionen.

Tipps und Empfehlungen für die Einbettungsmodellintegration

  • Identifizieren von Anwendungsfällen: Bewerten Sie die spezifischen Anwendungsfälle, in denen die Einbettungsmodellintegration für Vektorsuchfeatures einen Mehrwert für Ihre Suchlösung generiert. Beispiele wären etwa multimodale Modelle oder der Abgleich von Bildinhalten mit Textinhalten, sprachübergreifende Suchvorgänge oder die Ähnlichkeitssuche.

  • Entwerfen einer Segmentierungsstrategie: Die Anzahl von Token, die Einbettungsmodelle akzeptieren können, ist begrenzt. Für große Dateien ist daher eine Datensegmentierung erforderlich. Weitere Informationen finden Sie unter Durchführen der Blockerstellung für große Dokumente für Vektorsuchlösungen.

  • Optimieren der Kosten und der Leistung: Die Vektorsuche kann ressourcenintensiv sein, und es gelten Obergrenzen. Vektorisieren Sie daher nur Felder mit semantischer Bedeutung. Reduzieren Sie die Vektorgröße, damit Sie zum gleichen Preis mehr Vektoren speichern können.

  • Auswählen des richtigen Einbettungsmodells: Wählen Sie ein geeignetes Modell für Ihren spezifischen Anwendungsfall aus, z. B. Worteinbettungen für textbasierte Suchvorgänge oder Bildeinbettungen für visuelle Suchvorgänge. Nutzen Sie ggf. vortrainierte Modelle wie text-embedding-ada-002 aus OpenAI oder die Bildabruf-REST-API aus Maschinelles Sehen von Azure KI.

  • Normalisieren von Vektorlängen: Normalisieren Sie die Vektorlängen vor der Speicherung im Suchindex, um die Genauigkeit und Leistung der Ähnlichkeitssuche zu verbessern. Die meisten vortrainierten Modelle sind bereits normalisiert (aber nicht alle).

  • Optimieren des Modells: Optimieren Sie bei Bedarf das ausgewählte Modell mit Ihren domänenspezifischen Daten, um die Leistung und Relevanz ihrer Suchanwendung zu verbessern.

  • Testen und Durchlaufen: Testen und optimieren Sie ihre Einbindungsmodellintegration kontinuierlich, um die gewünschte Suchleistung und Benutzerzufriedenheit zu erzielen.

Nächste Schritte