Vektoren in Azure KI-Suche
Die Vektorsuche ist ein Ansatz beim Abrufen von Informationen, der die Indizierung und Abfrageausführung über numerische Darstellungen von Inhalten unterstützt. Da der Inhalt numerisch statt nur Text ist, basiert der Abgleich auf Vektoren, die dem Abfragevektor am ähnlichsten sind, was den Abgleich ermöglicht:
- semantische oder konzeptionelle Ähnlichkeit („Hund“ und „Canidae“, konzeptionell ähnlich, aber sprachlich unterschiedlich)
- mehrsprachige Inhalte („dog“ auf Englisch und „Hund“ auf Deutsch)
- mehrere Inhaltstypen („Hund“ in Nur-Text und ein Foto eines Hundes in einer Bilddatei)
Dieser Artikel enthält eine allgemeine Einführung in Vektoren in Azure KI-Suche. Außerdem werden hier die Integration in andere Azure-Dienste sowie die Terminologie und Konzepte im Zusammenhang mit der Vektorsuchentwicklung behandelt.
Es wird empfohlen, diesen Artikel zu lesen, um Hintergrundinformationen zu erhalten. Falls Sie aber direkt loslegen möchten, können Sie die folgenden Schritte ausführen:
- Bereitstellen von Einbettungen für den Index oder Generieren von Einbettungen in einer Indexerpipeline
- Erstellen eines Vektorindexes
- Ausführen von Vektorabfragen
Sie können auch mit dem Schnellstart zu Vektoren oder mit den Codebeispielen auf GitHub beginnen.
Welche Szenarien kann die Vektorsuche unterstützen?
Die Vektorsuche kann in folgenden Szenarien verwendet werden:
Ähnlichkeitssuche. Codieren Sie Text mithilfe von Einbettungsmodellen wie OpenAI-Einbettungen oder mithilfe von Open Source-Modellen wie SBERT, und rufen Sie Dokumente mit Abfragen ab, die ebenfalls als Vektoren codiert sind.
Suche über verschiedene Inhaltstypen hinweg (multimodal). Codieren Sie Bilder und Text mithilfe multimodaler Einbettungen (z. B. mit OpenAI CLIP oder GPT-4 Turbo mit Vision in Azure OpenAI) und fragen Sie einen einbettenden Raum ab, der aus Vektoren beider Inhaltstypen besteht.
Hybridsuche: In der Azure KI-Suche bezieht sich der Begriff Hybridsuche auf die Ausführung einer Vektor- und einer Schlüsselwortabfrage in derselben Anforderung. Die Vektorunterstützung wird auf Feldebene implementiert, wobei ein Index sowohl Vektorfelder als auch durchsuchbare Textfelder enthält. Die Abfragen werden parallel ausgeführt und die Ergebnisse zu einer einzelnen Antwort zusammengeführt. Fügen Sie optional eine semantische Rangfolge hinzu, um die Genauigkeit mithilfe einer L2-Neuanordnung unter Verwendung der gleichen Sprachmodelle, die auch bei Bing Verwendung finden, noch mehr zu erhöhen.
Mehrsprachige Suche. Die Bereitstellung einer Sucherfahrung in der Sprache der Benutzer ist durch das Einbetten von Modellen und Chatmodellen möglich, die in mehreren Sprachen trainiert wurden. Wenn Sie mehr Kontrolle über die Übersetzung benötigen, können Sie ergänzend die Mehrsprachenfunktionen verwenden, die die Azure KI-Suche für Nicht-Vektorinhalte in Hybridsuchszenarien unterstützt.
Gefilterte Vektorsuche: Eine Abfrageanforderung kann eine Vektorabfrage und einen Filterausdruck enthalten. Filter gelten für Text- und für numerische Felder und sind für Metadatenfilter hilfreich. Zudem ermöglichen sie das Ein- oder Ausschließen von Suchergebnissen basierend auf Filterkriterien. Ein Vektorfeld kann zwar nicht selbst gefiltert werden, Sie können aber ein filterbares Textfeld oder ein filterbares numerisches Feld einrichten. Die Suchmaschine kann den Filter vor oder nach Ausführung der Vektorabfrage verarbeiten.
Vektordatenbank: Die Azure KI-Suche speichert die Daten, die Sie abfragen. Verwenden Sie sie als reinen Vektorspeicher, wann immer Sie einen langfristigen Speicher, eine Wissensbasis oder Groundingdaten für eine Retrieval Augmented Generation-Architektur (RAG) oder eine beliebige App, die Vektoren verwendet, benötigen.
Funktionsweise der Vektorsuche in der Azure KI-Suche
Die Vektorunterstützung umfasst die Indizierung, Speicherung und Abfrage von Vektoreinbettungen aus einem Suchindex.
Das folgende Diagramm zeigt die Indizierungs- und Abfrageworkflows für die Vektorsuche.
Auf der Indizierungsseite verwendet die Azure KI-Suche Vektoreinbettungen und einen Nächste-Nachbarn-Algorithmus, um ähnliche Vektoren in einem Index nahe beieinander zu platzieren. Intern erstellt die Suche Vektorindizes für jedes Vektorfeld.
Wie Sie Einbettungen aus Ihrem Quellinhalt in Azure KI-Suche abrufen, hängt davon ab, ob Sie die Arbeit innerhalb einer Indizierungspipeline in Azure KI-Suche oder extern ausführen möchten. Azure KI-Suche bietet integrierte Datensegmentierung und Vektorisierung in einer Indexerpipeline. Sie stellen weiterhin die Ressourcen (Endpunkte und Verbindungsinformationen für Azure OpenAI) bereit, die Azure KI-Suche führt jedoch alle Aufrufe durch und kümmert sich um die Übergänge. Für diesen Ansatz benötigen Sie einen Indexer, eine unterstützte Datenquelle und ein Skillset, das die Segmentierung und Einbettung steuert. Andernfalls können Sie die gesamte Vektorisierung separat verarbeiten und anschließend vorvektorisierte Inhalte an Vektorfelder in einem Vektorspeicher pushen.
Auf der Abfrageseite erfassen Sie in Ihrer Clientanwendung die Abfrageeingabe eines Benutzers. Dies geschieht in der Regel durch einen Promptworkflow. Sie können dann einen Codierungsschritt hinzufügen, der die Eingabe in einen Vektor konvertiert, und dann die Vektorabfrage an Ihren Index in der Azure KI-Suche senden, um eine Ähnlichkeitssuche durchzuführen. Wie bei der Indizierung können Sie die integrierte Vektorisierung bereitstellen, um die Frage in einen Vektor zu konvertieren. Bei beiden Ansätzen gibt die Azure KI-Suche in den Ergebnissen Dokumente mit den angeforderten k
nächsten Nachbarn (k Nearest Neighbors, kNN) zurück.
Die Azure KI-Suche unterstützt Hybridszenarien, in denen eine Vektor- und eine Schlüsselwortsuche parallel ausgeführt werden. Dadurch wird ein einheitliches Resultset zurückgegeben, das häufig bessere Ergebnisse liefert als eine reine Vektor- oder Stichwortsuche. Für Abfragen, die parallel ausgeführt werden, werden Hybrid-, Vektor- und Nicht-Vektorinhalte im selben Index erfasst.
Verfügbarkeit und Preismodell
Die Vektorsuche ist als Teil aller Azure KI Search-Ebenen in allen Regionen kostenlos verfügbar.
Neuere Dienste, die nach dem 3. April 2024 erstellt wurden, unterstützen höhere Kontingente für Vektorindizes.
Die Vektorsuche ist in folgenden Diensten verfügbar:
- Azure-Portal: Assistent zum Importieren und Vektorisieren von Daten
- Azure-REST-APIs
- Azure SDKs für .NET, Python und JavaScript
- Andere Azure-Angebote wie Azure KI Studio.
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.
Azure-Integration und zugehörige Dienste
Die Azure KI-Suche ist tief in die Azure KI-Plattform integriert. Die folgende Tabelle umfasst mehrere Dienste, die in Vektorworkloads nützlich sind.
Produkt | Integration |
---|---|
Azure KI Studio | Im Chat mit Ihrem Daten-Playground verwendet Eigene Daten hinzufügen die Azure KI-Suche für Groundingdaten und unterhaltungsbezogene Suchen. Dies ist der einfachste und schnellste Ansatz zum Chatten mit Ihren Daten. |
Azure OpenAI | Azure OpenAI bietet Einbettungs- und Chatmodelle. Demos und Beispiele sind auf das text-embedding-ada-002-Modell ausgerichtet. Azure OpenAI wird zum Generieren von Einbettungen für Text empfohlen. |
Azure KI-Services | Die API „Bild vektorisieren“ (Vorschau) zum Abrufen von Bildern unterstützt die Vektorisierung von Bildinhalten. Diese API wird zum Generieren von Einbettungen für Bilder empfohlen. |
Azure-Datenplattformen: Azure Blob Storage, Azure Cosmos DB | Sie können Indexer verwenden, um die Datenerfassung zu automatisieren, und dann die integrierte Vektorisierung nutzen, um Einbettungen zu generieren. Azure KI Search kann automatisch Vektordaten aus zwei Datenquellen indizieren: Azure-Blobindexer und Azure Cosmos DB for NoSQL-Indexer. Weitere Informationen finden Sie unter Hinzufügen von Vektorfeldern zu einem Suchindex. |
Sie wird auch häufig in Open-Source-Frameworks wie LangChain verwendet.
Konzepte der Vektorsuche
Für den Fall, dass Sie noch keine Erfahrung mit Vektoren haben, werden in diesem Abschnitt einige zentrale Konzepte erläutert.
Informationen zur Vektorsuche
Die Vektorsuche ist eine Methode zum Abrufen von Informationen, bei der Dokumente und Abfragen nicht als Nur-Text, sondern als Vektoren dargestellt werden. Bei der Vektorsuche generieren Machine Learning-Modelle die Vektordarstellungen von Quelleingaben. Hierbei kann es sich um Text-, Bild- oder sonstige Inhalte handeln. Eine mathematische Darstellung von Inhalten bietet eine allgemeine Grundlage für Suchszenarien. Wenn alles in Vektorform vorliegt, kann eine Abfrage eine Übereinstimmung im Vektorraum finden, auch wenn der zugehörige ursprüngliche Inhalt in Form anderer Medien oder in einer anderen Sprache als die Abfrage vorliegt.
Gründe für die Verwendung der Vektorsuche
Wenn durchsuchbare Inhalte als Vektoren dargestellt werden, kann eine Abfrage enge Übereinstimmungen in ähnlichen Inhalten finden. Das für die Vektorgenerierung verwendete Einbettungsmodell weiß, welche Wörter und Konzepte ähnlich sind, und platziert die resultierenden Vektoren nahe zusammen im Einbettungsraums. So werden beispielsweise vektorisierte Quelldokumente über „Wolken“ und „Nebel“ mit höherer Wahrscheinlichkeit bei einer Abfrage zu „Nebel“ angezeigt, da sie semantisch ähnlich sind, auch wenn sie lexikalisch nicht übereinstimmen.
Einbettungen und Vektorisierung
Einbettungen sind eine bestimmte Art von Vektordarstellung eines Inhalts oder einer Abfrage. Sie werden von Machine Learning-Modellen erstellt, die die semantische Bedeutung von Text oder Darstellungen anderer Inhalte (z. B. Bilder) erfassen. Machine Learning-Modelle für natürliche Sprache werden mit großen Datenmengen trainiert, um Muster und Beziehungen zwischen Wörtern zu identifizieren. So lernen sie, beliebige Eingaben als Vektor realer Zahlen darzustellen. Dieser Zwischenschritt wird als Encoder bezeichnet. Nach Abschluss des Trainings können diese Sprachmodelle geändert werden, sodass die zwischengeschaltete Vektordarstellung zur Ausgabe des Modells wird. Die resultierenden Einbettungen sind hochdimensionale Vektoren. Das bedeutet, dass Wörter mit ähnlicher Bedeutung im Vektorraum näher beisammen sind, wie in Grundlegendes zu Einbettungen in Azure OpenAI Service erläutert.
Wie effektiv die Vektorsuche beim Abrufen relevanter Informationen ist, hängt davon ab, wie effektiv das Einbettungsmodell die Bedeutung von Dokumenten und Abfragen in den resultierenden Vektor ableitet. Die besten Modelle wurden ausführlich mit den Datentypen trainiert, die sie darstellen. Sie können vorhandene Modelle wie „text-embedding-ada-002“ von Azure OpenAI evaluieren, Ihr eigenes Modell verwenden, das direkt für den Aufgabenbereich trainiert wurde, oder ein universelles Modell optimieren. Azure KI Search lässt Ihnen bei der Wahl des Modells freie Hand, damit Sie das am besten geeignete Modell für Ihre Daten auswählen können.
Um effektive Einbettungen für die Vektorsuche zu erstellen, ist es wichtig, Einschränkungen bei der Eingabegröße zu berücksichtigen. Es empfiehlt sich, vor dem Generieren von Einbettungen die Richtlinien für die Datenblockerstellung zu befolgen. Dadurch wird sichergestellt, dass die Einbettungen die relevanten Informationen korrekt erfassen und eine effizientere Vektorsuche ermöglichen.
Was ist der Einbettungsraum?
Der Einbettungsraum ist der Korpus für Vektorabfragen. Innerhalb eines Suchindex umfasst ein Einbettungsmodell alle Vektorfelder, die mit Einbettungen aus dem gleichen Einbettungsmodell aufgefüllt wurden. Machine Learning-Modelle erstellen den Einbettungsraum, indem sie einzelne Wörter, Ausdrücke oder Dokumente (für die linguistische Datenverarbeitung), Bilder oder andere Arten von Daten einer Darstellung zuordnen, die aus einem Vektor realer Zahlen besteht, der eine Koordinate in einem hochdimensionalen Raum darstellt. In diesem Einbettungsraum befinden sich ähnliche Elemente nah beieinander, und unterschiedliche Elemente befinden sich weiter auseinander.
So werden beispielsweise Dokumente, in denen es um verschiedene Hundearten geht, im Einbettungsraum nah beieinander gruppiert. Dokumente über Katzen wären ebenfalls nah beieinander, aber weiter vom Hundecluster entfernt, und immer noch in der Nachbarschaft für Tiere. Unterschiedliche Konzepte wie Cloud Computing wären viel weiter entfernt. In der Praxis sind diese Einbettungsräume abstrakt und haben keine klar definierten, von Menschen interpretierbaren Bedeutungen. Die Kernidee bleibt allerdings gleich.
Suche nach nächsten Nachbarn
In der Vektorsuche durchsucht die Suchmaschine Vektoren im Einbettungsraum, um Vektoren zu identifizieren, die dem Abfragevektor am nächsten sind. Diese Technik wird Suche nach nächsten Nachbarn genannt. Nächste Nachbarn helfen dabei, die Ähnlichkeit zwischen Elementen zu quantifizieren. Ein hoher Grad an Vektorähnlichkeit deutet darauf hin, dass die ursprünglichen Daten ebenfalls ähnlich waren. Um eine schnelle Suche nach nächsten Nachbarn zu ermöglichen, führt die Suchmaschine Optimierungen durch oder verwendet Datenstrukturen und Datenpartitionierung, um den Suchraum zu verkleinern. Jeder Vektorsuchalgorithmus löst die Nächster-Nachbar-Probleme auf unterschiedliche Weise, da er auf minimale Latenz und maximalen Durchsatz, Rückruf und Arbeitsspeicher optimiert. Für die Berechnung der Ähnlichkeit werden Ähnlichkeitsmetriken verwendet, um die Entfernung zu berechnen.
Azure KI Search unterstützt derzeit folgende Algorithmen:
Hierarchical Navigable Small World (HNSW): HNSW ist ein führender ANN-Algorithmus, der für Anwendungen mit hohem Abrufvolumen und geringer Wartezeit optimiert ist, bei denen die Datenverteilung unbekannt ist oder sich häufig ändern kann. Er strukturiert hochdimensionale Datenpunkte in einer hierarchischen Graphstruktur, die eine schnelle und skalierbare Ähnlichkeitssuche ermöglicht und gleichzeitig einen anpassbaren Kompromiss zwischen Suchgenauigkeit und Rechenkosten bietet. Da sich bei dem Algorithmus alle Datenpunkte im Arbeitsspeicher befinden müssen, um schnellen wahlfreien Zugriff zu ermöglichen, wird von diesem Algorithmus das Kontingent Vektorindexgröße beansprucht.
Umfassende KNN (K Nearest Neighbors): Berechnet die Abstände zwischen dem Abfragevektor und allen Datenpunkten. Dieser rechenintensive Algorithmus eignet sich am besten für kleinere Datasets. Da der Algorithmus keinen schnellen wahlfreien Zugriff auf Datenpunkte erfordert, beansprucht er kein Kontingent für die Vektorindexgröße. Dieser Algorithmus liefert jedoch die globale Gruppe der nächsten Nachbarn.
Wenn Sie diese Algorithmen verwenden möchten, finden Sie unter Erstellen eines Vektorfelds Informationen zum Angeben des Algorithmus, der Vektorprofile und der Profilzuweisung.
Algorithmusparameter, die während der Indexerstellung zum Initialisieren des Index verwendet werden, sind unveränderlich und können nach der Indexerstellung nicht mehr geändert werden. Parameter, die sich auf die Merkmale zur Abfragezeit auswirken (efSearch
), können allerdings geändert werden.
Darüber hinaus unterstützen Felder, für die der HNSW-Algorithmus angeben ist, auch die umfassende KNN-Suche unter Verwendung des Parameters "exhaustive": true
der Abfrageanforderung. Umgekehrt ist dies jedoch nicht der Fall. Wenn ein Feld für exhaustiveKnn
indiziert ist, können Sie HNSW nicht in der Abfrage verwenden, da die zusätzlichen Datenstrukturen, die eine effiziente Suche ermöglichen, nicht vorhanden sind.
Approximate Nearest Neighbors (ungefähre nächste Nachbarn)
Bei der ANN-Suche (Approximate Nearest Neighbors, ungefähre nächste Nachbarn) handelt es sich um eine Klasse von Algorithmen für die Suche nach Übereinstimmungen im Vektorraum. Diese Klasse von Algorithmen verwendet verschiedene Datenstrukturen oder Datenpartitionierungsmethoden, um den Suchraum erheblich zu verkleinern und so die Abfrageverarbeitung zu beschleunigen.
ANN-Algorithmen sind etwas weniger genau, bieten aber skalierbare und schnellere Abrufe nächster Nachbarn. Dadurch eignen sie sich perfekt, um in modernen Informationsabrufanwendungen ein ausgewogenes Verhältnis zwischen Genauigkeit und Effizienz zu erzielen. Sie können die Parameter Ihres Algorithmus anpassen, um die Abruf-, Wartezeit-, Arbeitsspeicher- und Speicherbedarfsanforderungen Ihrer Suchanwendung zu optimieren.
Azure KI Search verwendet HNSW als ANN-Algorithmus.