Integrierte Datenblockerstellung und Einbettung in Azure KI Search

Wichtig

Dieses Feature befindet sich in der Public Preview-Phase und unterliegt zusätzlichen Nutzungsbedingungen. Dieses Feature wird von der REST-API „2023-10-01-Preview“ unterstützt.

Die integrierte Vektorisierung fügt Datenblockerstellung und Text-zu-Vektor-Einbettung für Skills in der indexerbasierten Indizierung hinzu. Außerdem fügt sie Text-zu-Vektor-Konvertierungen für Abfragen hinzu.

Diese Funktion ist eine reine Vorschaufunktion. In der allgemein verfügbaren Version der Vektorsuche und in früheren Vorschauversionen werden für die Datenblockerstellung und für die Vektorisierung entsprechende externe Komponenten verwendet, und die einzelnen Schritte müssen vom Anwendungscode behandelt und koordiniert werden. In dieser Vorschauversion sind Blockerstellung und Vektorisierung über Skills und Indexer in die Indizierung integriert. Sie können ein Skillset einrichten, das Daten mithilfe des Textaufteilungsskills in Blöcke aufteilt, und dann ein Einbettungsmodell unter Verwendung des AzureOpenAIEmbedding-Skills oder eines benutzerdefinierten Skills aufrufen. Alle Vektorisierungen, die während der Indizierung verwendet werden, können auch für Abfragen aufgerufen werden, um Text in Vektoren zu konvertieren.

Für die Indizierung benötigt die integrierte Vektorisierung Folgendes:

Für Abfragen:

  • Eine im Indexschema definierte Vektorisierung, die einem Vektorfeld zugewiesen ist und automatisch zur Abfragezeit verwendet wird, um eine Textabfrage in einen Vektor zu konvertieren.

Vektorkonvertierungen sind unidirektional. Das bedeutet, Text wird in einen Vektor konvertiert. Es gibt keine Vektor-zu-Text-Konvertierung für Abfragen oder Ergebnisse. So ist es beispielsweise nicht möglich, ein Vektorergebnis in eine für Menschen lesbare Zeichenfolge zu konvertieren.

Komponentendiagramm

Das folgende Diagramm zeigt die Komponenten der integrierten Vektorisierung.

Diagramm der Komponenten in einem integrierten Vektorisierungsworkflow.

Hier ist eine Prüfliste der Komponenten, die für die integrierte Vektorisierung zuständig sind:

  • Eine unterstützte Datenquelle für die indexerbasierte Indizierung.
  • Ein Index, der Vektorfelder angibt, und eine Vektorisierungsdefinition, die Vektorfeldern zugewiesen ist.
  • Ein Skillset, das einen Textaufteilungsskill für die Datenblockerstellung bereitstellt, und ein Skill für die Vektorisierung (entweder der AzureOpenAiEmbedding-Skill oder ein benutzerdefinierter Skill, der auf ein externes Einbettungsmodell verweist).
  • Optional: Indexprojektionen (auch in einem Skillset definiert), um in Blöcke aufgeteilte Daten an einen sekundären Index zu pushen.
  • Ein Einbettungsmodell, das in Azure OpenAI bereitgestellt wird oder über einen HTTP-Endpunkt verfügbar ist.
  • Ein Indexer zum Steuern des gesamten Prozesses. Ein Indexer gibt auch einen Zeitplan, Feldzuordnungen und Eigenschaften für die Änderungserkennung an.

Diese Prüfliste konzentriert sich auf die integrierte Vektorisierung. Ihre Lösung ist jedoch nicht auf diese Liste beschränkt. Sie können weitere Skills für die KI-Anreicherung hinzufügen, einen Wissensspeicher erstellen und eine semantische Rangfolge sowie Relevanzoptimierung und weitere Abfragefeatures hinzufügen.

Verfügbarkeit und Preismodell

Die Verfügbarkeit der integrierten Vektorisierung basiert auf dem Einbettungsmodell. Überprüfen Sie bei Verwendung von Azure OpenAI die regionale Verfügbarkeit.

Wenn Sie einen benutzerdefinierten Skill und einen Azure-Hostingmechanismus (z. B. eine Azure Functions-App, eine Azure-Web-App und Azure Kubernetes) verwenden, überprüfen Sie auf der Seite mit Produkten nach Region die Verfügbarkeit der Features.

Die Datenblockerstellung (Textaufteilungsskill) ist kostenlos und für alle Azure KI-Dienste in allen Regionen verfügbar.

Hinweis

Einige ältere Suchdienste, die vor dem 1. Januar 2019 erstellt wurden, werden in einer Infrastruktur bereitgestellt, die keine Vektorworkloads unterstützt. Wenn beim Hinzufügen eines Vektorfelds zu einem Schema ein Fehler auftritt, liegt das an veralteten Diensten. In diesem Fall müssen Sie einen neuen Suchdienst erstellen, um das Vektorfeature ausprobieren zu können.

Welche Szenarien werden von der integrierten Vektorisierung unterstützt?

  • Unterteilen Sie große Dokumente in Blöcke. Die ist sowohl in Vektor- als auch in Nichtvektorszenarien nützlich. Bei Vektoren helfen Blöcke dabei, die Eingabeeinschränkungen von Einbettungsmodellen zu erfüllen. Bei Nichtvektorszenarien verfügen Sie möglicherweise über eine Such-App im Chatstil, in der GPT Antworten aus indizierten Blöcken zusammenfügt. Sie können vektorisierte oder nicht vektorisierte Blöcke für die Suche im Chatstil verwenden.

  • Erstellen Sie einen Vektorspeicher, in dem alle Felder Vektorfelder sind und die Dokument-ID (die für einen Suchindex benötigt wird) das einzige Zeichenfolgenfeld ist. Fragen Sie den Vektorspeicher ab, um Dokument-IDs abzurufen, und senden Sie dann die Vektorfelder des Dokuments an ein anderes Modell.

  • Kombinieren Sie Vektor- und Textfelder für die Hybridsuche (mit oder ohne semantische Rangfolge). Die integrierte Vektorisierung vereinfacht alle Szenarien, die von der Vektorsuche unterstützt werden.

Mögliche Anwendungsbereiche der integrierten Vektorisierung

Wir empfehlen, die integrierte Vektorisierungsunterstützung von Azure KI Studio zu nutzen. Sollte dieser Ansatz für Ihre Anforderungen nicht geeignet sein, können Sie Indexer und Skillsets erstellen, die die integrierte Vektorisierung über die programmgesteuerten Schnittstellen von Azure KI Search aufrufen.

Verwenden der integrierten Vektorisierung

Reine Abfragevektorisierung:

  1. Fügen Sie einem Index eine Vektorisierung hinzu. Verwenden Sie dabei das gleiche Einbettungsmodell, das auch zum Generieren von Vektoren im Index verwendet wird.
  2. Weisen Sie den Vektorisierer einem Vektorprofil zu, und weisen Sie dann dem Vektorfeld ein Vektorprofil zu.
  3. Formulieren Sie eine Vektorabfrage, die die zu vektorisierende Textzeichenfolge angibt.

Ein allgemeines Szenario: Datenblockerstellung und Vektorisierung während der Indizierung:

  1. Erstellen Sie eine Datenquellenverbindung mit einer unterstützten Datenquelle für die indexerbasierte Indizierung.
  2. Erstellen Sie ein Skillset, das den Textaufteilungsskill für die Blockerstellung und AzureOpenAIEmbeddingModel oder einen benutzerdefinierten Skill zum Vektorisieren der Blöcke aufruft.
  3. Erstellen Sie einen Index, der eine Vektorisierung für die Abfragezeit angibt, und weisen Sie ihn Vektorfeldern zu.
  4. Erstellen Sie einen Indexer, um das Ganze zu steuern – vom Datenabruf über die Skillsetausführung bis hin zur Indizierung.

Erstellen Sie sekundäre Indizes (optional) für erweiterte Szenarien, in denen sich der in Blöcke aufgeteilte Inhalt in einem Index und der nicht in Blöcke aufgeteilte Inhalt in einem anderen Index befindet. In Blöcke aufgeteilte Indizes (oder sekundäre Indizes) sind für RAG-Apps nützlich.

Tipp

Testen Sie den neuen Assistenten zum Importieren und Vektorisieren von Daten im Azure-Portal, um sich mit der integrierten Vektorisierung vertraut zu machen, bevor Sie Code schreiben.

Alternativ können Sie eine Jupyter Notebook-Instanz konfigurieren, um den gleichen Workflow Zelle für Zelle auszuführen und zu sehen, wie die einzelnen Schritte funktionieren.

Begrenzungen

Machen Sie sich mit den Azure OpenAI-Kontingenten und -Grenzwerten für das Einbetten von Modellen vertraut. Azure KI Search verfügt zwar über Wiederholungsrichtlinien, aber wenn das Kontingent erschöpft ist, sind Wiederholungen nicht erfolgreich.

Azure OpenAI-Grenzwerte für Token pro Minute gelten pro Modell und Abonnement. Behalten Sie dies im Hinterkopf, wenn Sie ein Einbettungsmodell für Abfrage- und Indizierungsworkloads verwenden. Halten Sie sich nach Möglichkeit an die bewährten Methoden. Verwenden Sie ein Einbettungsmodell für jede Workload, und versuchen Sie, sie in verschiedenen Abonnements bereitzustellen.

Vergessen Sie nicht, dass in Azure KI Search Diensteinschränkungen nach Ebene und Workloads gelten.

Folgende Features werden außerdem derzeit nicht unterstützt:

Vorteile der integrierten Vektorisierung

Hier sind einige der wichtigsten Vorteile der integrierten Vektorisierung:

  • Keine separate Pipeline für die Datenblockerstellung und Vektorisierung. Code ist einfacher zu schreiben und zu verwalten.

  • Automatisierte End-to-End-Indizierung. Wenn sich Daten in der Quelle ändern (z. B. in Azure Storage, Azure SQL oder Cosmos DB), kann der Indexer diese Aktualisierungen durch die gesamte Pipeline schicken – vom Abruf über die Dokumententschlüsselung bis hin zur optionalen KI-Anreicherung, Datenblockerstellung, Vektorisierung und Indizierung.

  • Projizieren von in Blöcke aufgeteilten Inhalten in sekundäre Indizes. Sekundäre Indizes werden wie jeder andere Suchindex als Schema mit Feldern und anderen Konstrukten erstellt, aber zusammen mit einem Primärindex durch einen Indexer aufgefüllt. Inhalte aus den einzelnen Quelldokumenten fließen während der gleichen Indizierungsausführung in Felder in primären und sekundären Indizes.

    Sekundäre Indizes sind für die Datenblockerstellung für und RAG-Apps (Retrieval Augmented Generation) vorgesehen. Bei einer großen PDF-Datei als Quelldokument kann der primäre Index grundlegende Informationen (Titel, Datum, Autor, Beschreibung) und ein sekundärer Index die Inhaltsblöcke enthalten. Die Vektorisierung auf Datenabschnittsebene erleichtert die Suche nach relevanten Informationen (jeder Block ist durchsuchbar) und die Rückgabe einer relevanten Antwort, insbesondere in einer Such-App im Chatstil.

Indizes mit Blockerstellung

Bei der Blockerstellung werden Inhalte in kleinere verwaltbare Teile (Blöcke) aufgeteilt, die unabhängig voneinander verarbeitet werden können. Die Blockerstellung ist erforderlich, wenn Quelldokumente für die maximale Eingabegröße von Einbettungsmodellen oder großen Sprachmodellen zu groß sind. Sie bietet aber ggf. auch eine bessere Indexstruktur für RAG-Muster und für die Chatstil-Suche.

Das folgende Diagramm zeigt die Komponenten der Indizierung mit Blockerstellung:

Diagramm des Abschnitts- und Vektorisierungsworkflows.

Nächste Schritte