Integrierte Datenblockerstellung und Einbettung in Azure KI Search
Die integrierte Vektorisierung ist eine Erweiterung der Indizierungs- und Abfragepipelines in Azure KI-Suche. Sie fügt die folgenden Funktionen hinzu:
- Datensegmentierung während der Indizierung
- Text-zu-Vektor-Konvertierung während der Indizierung
- Text-zu-Vektor-Konvertierung während Abfragen
Datensegmentierung ist keine zwingende Anforderung, aber sofern Ihre Rohdokumente nicht klein sind, ist eine Segmentierung erforderlich, um die Anforderungen von Einbettungsmodellen an die Tokeneingabe zu erfüllen.
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.
Die integrierte Datensegmentierung und -vektorisierung beschleunigt die Entwicklung und Wartungsaufgaben während der Datenerfassung und minimiert die Abfragezeit, da weniger externe Komponenten zum Konfigurieren und Verwalten vorhanden sind. Diese Funktionalität ist jetzt allgemein verfügbar.
Verwenden der integrierten Vektorisierung während der Indizierung
Für die Datensegmentierung und für Text-zu-Vektor-Konvertierungen richten Sie eine Abhängigkeit von folgenden Komponenten ein:
Ein Indexer, der Rohdaten aus einer unterstützten Datenquelle abruft und als Pipeline-Engine dient
Einem Vektorindex, um die segmentierten und vektorisierten Inhalte zu empfangen.
Einem Skillset, das für Folgendes konfiguriert ist:
Textaufteilungsskill zum Segmentieren der Daten
Ein Einbettungs-Skill, der verwendet wird, um Vektorarrays zu generieren, und der einer der folgenden Sein kann:
AzureOpenAIEmbedding-Skill, der an „text-embedding-ada-002“, „text-embedding-3-small“ und „text-embedding-3-large“ in Azure OpenAI angefügt wird
Benutzerdefinierter Skill, der auf ein anderes Einbettungsmodell in Azure oder auf eine andere Site verweist
Azure KI Vision-Skill (Vorschau), der auf die multimodale API für Azure KI Vision verweist
AML-Skill, der auf den Modellkatalog in Azure KI Studio verweist (Verweis auf ausgewählte Modelle im Modellkatalog)
Verwenden der integrierten Vektorisierung in Abfragen
Für die Text-zu-Vektor-Konvertierung während Abfragen richten Sie eine Abhängigkeit von folgenden Komponenten ein:
Eine Abfrage, die mindestens ein Vektorfeld angibt.
Eine Textzeichenfolge, die zur Abfragezeit in einen Vektor konvertiert wird.
Einen im Indexschema definierten Vektorisierung, der einem Vektorfeld zugewiesen ist und automatisch zur Abfragezeit verwendet wird, um eine Textabfrage in einen Vektor zu konvertieren. Die von Ihnen eingerichtete Vektorisierung muss dem Einbettungsmodell entsprechen, das zum Codieren Ihrer Inhalte verwendet wird.
Komponentendiagramm
Das folgende Diagramm zeigt die Komponenten der integrierten Vektorisierung.
Der Workflow ist eine Indexerpipeline. Indexer rufen Daten aus unterstützten Datenquellen ab und initiieren eine Datenanreicherung (oder angewendete KI), indem Azure OpenAI- oder Azure KI-Dienste oder benutzerdefinierter Code für Text-zu-Vektor-Konvertierungen oder andere Verarbeitungen aufgerufen werden.
Das Diagramm 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
Integrierte Vektorisierung ist in allen Regionen und Ebenen verfügbar. Wenn Sie jedoch Azure OpenAI- und Azure KI-Fähigkeiten und -Vektorisierer verwenden, stellen Sie sicher, dass Ihr Azure KI-Konto mit mehreren Diensten in denselben Regionen wie Azure KI-Suche verfügbar ist.
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 Azure-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 Szenarien, in denen keine Vektoren zum Einsatz kommen, nützlich. Bei Vektoren helfen Blöcke dabei, die Eingabeeinschränkungen von Einbettungsmodellen zu erfüllen. Bei Szenarien, in denen keine Vektoren verwendet werden, 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:
- Fügen Sie einem Index eine Vektorisierung hinzu. Verwenden Sie dabei das gleiche Einbettungsmodell, das auch zum Generieren von Vektoren im Index verwendet wird.
- Weisen Sie den Vektorisierer einem Vektorprofil zu, und weisen Sie dann dem Vektorfeld ein Vektorprofil zu.
- Formulieren Sie eine Vektorabfrage, die die zu vektorisierende Textzeichenfolge angibt.
Ein allgemeines Szenario: Datenblockerstellung und Vektorisierung während der Indizierung:
- Erstellen Sie eine Datenquellenverbindung mit einer unterstützten Datenquelle für die indexerbasierte Indizierung.
- Erstellen Sie ein Skillset, das den Textaufteilungsskill für die Segmentierung und AzureOpenAIEmbeddingModel oder einen anderen Einbettungsskill zum Vektorisieren der Blöcke aufruft.
- Erstellen Sie einen Index, der eine Vektorisierung für die Abfragezeit angibt, und weisen Sie ihn Vektorfeldern zu.
- Erstellen Sie einen Indexer, um das Ganze zu steuern – vom Datenabruf über die Skillsetausführung bis hin zur Indizierung. Es wird empfohlen, den Indexer nach einem Zeitplan auszuführen, um geänderte Dokumente oder Dokumente, die aufgrund der Drosselung fehlen, zu erfassen.
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.
Sichere Verbindungen mit Vektorisierern und Modellen
Wenn Ihre Architektur private Verbindungen erfordert, die das Internet umgehen, können Sie eine freigegebene private Linkverbindung mit den einbettenden Modellen erstellen, die während der Indizierung und Vektorisierer zur Abfragezeit von Fähigkeiten verwendet werden.
Gemeinsame private Links funktionieren nur für Azure-zu-Azure-Verbindungen. Wenn Sie eine Verbindung mit OpenAI oder einem anderen externen Modell herstellen, muss die Verbindung über das öffentliche Internet erfolgen.
Für Vektorisierungsszenarien können Sie Folgendes verwenden:
openai_account
zum Einbetten von Modellen, die in einer Azure OpenAI-Ressource gehostet werden.sites
zum Einbetten von Modellen, auf die als benutzerdefinierte Fähigkeiten oder benutzerdefinierte Vektorisierer zugegriffen wird. Diesites
Gruppen-ID gilt für App-Dienste und Azure-Funktionen, mit denen Sie ein Einbettungsmodell hosten können, das keines der Azure OpenAI-Einbettungsmodelle ist.
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.
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.
Batchverarbeitungs- und Wiederholungslogik ist integriert (nicht konfigurierbar). Azure KI-Suche verfügt über interne Wiederholungsrichtlinien für Drosselungsfehler, die auftreten, weil der Azure OpenAI-Endpunkt die Tokenkontingente für das Einbettungsmodell voll ausschöpft. Es wird empfohlen, einen Zeitplan (z. B. alle fünf Minuten) für den Indexer einzurichten, damit er alle Aufrufe verarbeiten kann, die trotz der Wiederholungsrichtlinien vom Azure OpenAI-Endpunkt gedrosselt wurden.
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 Apps im Frage- und Antwort- oder Chatstil vorgesehen. Der sekundäre Index enthält differenzierte Informationen für spezifischere Übereinstimmungen, aber der übergeordnete Index hat mehr Informationen und kann oft eine vollständigere Antwort liefern. Wenn eine Übereinstimmung im sekundären Index gefunden wird, gibt die Abfrage das übergeordnete Dokument aus dem primären Index zurück. Bei einem großen PDF-Dokument als Ausgangsdokument könnte der primäre Index beispielsweise grundlegende Informationen enthalten (Titel, Datum, Autor, Beschreibung), während ein sekundärer Index Blöcke des durchsuchbaren Inhalts enthält.