Was sind Vektoreinbettungen und die Vektorsuche in Azure Cache for Redis

Die Vektorähnlichkeitssuche (Vector Similarity Search, VSS) ist zu einer beliebten Technologie für KI-gestützte intelligente Anwendungen geworden. Azure Cache for Redis kann als Vektordatenbank verwendet werden, indem Modelle wie Azure OpenAI für KI-Szenarien mit RAG (Retrieval-Augmented Generation) und Analysen kombiniert werden. Dieser Artikel enthält eine allgemeine Einführung in das Konzept der Vektoreinbettungen und der Vektorähnlichkeitssuche. Außerdem wird allgemein erläutert, wie Redis als Vektordatenbank zur Unterstützung von intelligenten Anwendungen verwendet werden kann.

Tutorials und Beispielanwendungen zur Verwendung von Azure Cache for Redis und Azure OpenAI zum Ausführen einer Vektorähnlichkeitssuche finden Sie hier:

Umfang der Verfügbarkeit

Vektorsuchfunktionen in Redis erfordern Redis Stack und insbesondere das RediSearch-Modul. Diese Funktion ist nur in den Enterprise-Tarifen von Azure Cache for Redis verfügbar.

Diese Tabelle enthält die Informationen für die Verfügbarkeit der Vektorähnlichkeitssuche auf verschiedenen Ebenen.

Tarif Basic/Standard Premium Enterprise Enterprise Flash
Verfügbar Nein Nein Ja Ja (Vorschau)

Was sind Vektoreinbettungen?

Konzept

Vektoreinbettungen sind ein grundlegendes Konzept des maschinellen Lernens und der linguistischen Datenverarbeitung. Sie ermöglichen die Darstellung von Daten wie Wörtern, Dokumenten oder Bildern als numerische Vektoren in einem hochdimensionalen Vektorraum. Die Grundidee der Vektoreinbettungen besteht darin, die zugrunde liegenden Beziehungen und die Semantik der Daten zu erfassen, indem die Daten Punkten in diesem Vektorraum zugeordnet werden. Dies bedeutet, dass Sie Ihren Text oder Ihre Bilder in eine Sequenz von Zahlen konvertieren, die die Daten darstellt, und dann die verschiedenen Zahlensequenzen vergleichen. Dadurch können komplexe Daten mathematisch bearbeitet und analysiert werden, was die Durchführung von Aufgaben wie Ähnlichkeitsvergleich, Empfehlung und Klassifizierung erleichtert.

Jedes Machine Learning-Modell verwendet einen anderen Ansatz, um Daten zu klassifizieren und den Vektor zu erzeugen. Darüber hinaus ist es in der Regel nicht möglich, die semantische Bedeutung der einzelnen Vektordimensionen genau zu bestimmen. Da das Modell zwischen jedem Eingabedatenblock konsistent ist, weisen ähnliche Wörter, Dokumente oder Bilder jedoch Vektoren auf, die ebenfalls ähnlich sind. Die Verbindung zwischen den Einbettungsvektoren der Wörter basketball und baseball ist beispielsweise viel enger als die mit einem Wort wie rainforest.

Vektorvergleich

Vektoren können mithilfe verschiedener Metriken verglichen werden. Die gängigste Methode zum Vergleichen von Vektoren ist die Verwendung der Kosinusähnlichkeit, die den Kosinus des Winkels zwischen zwei Vektoren in einem mehrdimensionalen Raum misst. Je näher die Vektoren beieinander liegen, desto kleiner ist der Winkel. Weitere gängige Entfernungsmetriken sind die euklidische Entfernung und das innere Produkt.

Generieren von Einbettungen

Viele Machine Learning-Modelle unterstützen Einbettungs-APIs. Ein Beispiel zum Erstellen von Vektoreinbettungen mithilfe von Azure OpenAI Service finden Sie unter Generieren von Einbettungen mit Azure OpenAI.

Was ist eine Vektordatenbank?

Eine Vektordatenbank ist eine Datenbank, die Vektoren speichern, verwalten, abrufen und vergleichen kann. Vektordatenbanken müssen in der Lage sein, einen hochdimensionalen Vektor effizient zu speichern und mit minimaler Wartezeit und hohem Durchsatz abzurufen. Nicht relationale Datenspeicher werden am häufigsten als Vektordatenbanken verwendet, obwohl es möglich ist, relationale Datenbanken wie etwa PostgreSQL mit der pgvector-Erweiterung zu verwenden.

Index- und Suchmethode

Vektordatenbanken müssen Daten indizieren, um schnelle Such- und Abrufvorgänge zu ermöglichen. Darüber hinaus sollte eine Vektordatenbank integrierte Suchabfragen für vereinfachte Programmiererfahrungen unterstützen.

Es gibt mehrere Indizierungsmethoden, z. B.:

  • FLAT – Brute-Force-Index
  • HNSW – Effiziente und robuste Suche nach dem ungefähren nächsten Nachbarn mit HVSW-Graphen (Hierarchical Navigable Small World)

Es gibt mehrere gängige Suchmethoden, wie z. B.:

  • K-Nearest Neighbors (KNN): Eine umfassende Methode, die die höchste Genauigkeit bietet, aber einen höheren Rechenaufwand erfordert.
  • Approximate Nearest Neighbors (ANN): Eine effizientere Methode, die eine geringere Genauigkeit, dafür aber eine höhere Geschwindigkeit und einen geringeren Verarbeitungsaufwand bietet.

Suchfunktionen

Vektordatenbanken führen Vektorsuchen mithilfe der ausgewählten Vektorvergleichsmethode aus, um die ähnlichsten Vektoren zurückzugeben. Einige Vektordatenbanken können auch Hybridsuchen durchführen, indem sie die Ergebnisse vor der Vektorsuche zuerst basierend auf Merkmalen oder Metadaten eingrenzen, die ebenfalls in der Datenbank gespeichert sind. Dies ist eine Möglichkeit zum Verbessern der Effektivität und Anpassbarkeit der Vektorsuche. Beispielsweise kann eine Vektorsuche nur auf Vektoren mit einem bestimmten Tag in der Datenbank oder auf Vektoren mit Geolocationdaten in einer bestimmten Region beschränkt werden.

Wichtige Szenarien für die Vektorsuche

Die Vektorähnlichkeitssuche kann in mehreren Anwendungen verwendet werden. Einige häufige Anwendungsfälle sind:

  • Semantik Q&A. Erstellen Sie einen Chatbot, der Fragen zu Ihren Daten beantworten kann, z. B. einen Chatbot, der Fragen von Mitarbeitenden zu ihrer Krankenversicherung beantworten kann. Hunderte von Seiten einer umfangreichen Dokumentation zur Krankenversicherung können in Blöcke aufgeteilt, in Einbettungsvektoren konvertiert und basierend auf der Vektorähnlichkeit durchsucht werden. Die resultierenden Dokumente können dann für Mitarbeitende mithilfe eines anderen großen Sprachmodells (Large Language Model, LLM) zusammengefasst werden. Beispiel für Semantik Q&A
  • Dokumentabruf. Verwenden Sie das tiefere semantische Textverständnis von LLMs, um eine umfassendere Dokumentsuche bereitzustellen, die die herkömmliche schlüsselwortbasierte Suche nicht bieten kann. Beispiel für den Dokumentabruf
  • Produktempfehlung. Suchen Sie nach ähnlichen Produkten oder Diensten, die Sie basierend auf früheren Benutzeraktivitäten empfehlen können, z. B. auf Grundlage des Suchverlaufs oder vorheriger Käufe. Beispiel für Produktempfehlungen
  • Visuelle Suche. Suchen Sie nach Produkten, die einem Bild ähneln, das von Benutzer*innen aufgenommen wurde, oder einem Bild eines anderen Produkts. Beispiel für die visuelle Suche
  • Semantische Zwischenspeicherung. Reduzieren Sie die Kosten und die Wartezeit von LLMs, indem Sie LLM-Vervollständigungen zwischenspeichern. LLM-Abfragen werden anhand der Vektorähnlichkeit verglichen. Wenn eine neue Abfrage einer zuvor zwischengespeicherten Abfrage ähnelt, wird die zwischengespeicherte Abfrage zurückgegeben. Beispiel für die semantische Zwischenspeicherung mit LangChain
  • LLM-Konversationsspeicher. Speichern Sie den Konversationsverlauf mit einem LLM als Einbettungen in einer Vektordatenbank. Ihre Anwendung kann die Vektorsuche verwenden, um den relevanten Verlauf oder „Erinnerungen“ in die Antwort des LLM zu pullen. Beispiel für den LLM-Konversationsspeicher

Warum Sie Azure Cache for Redis zum Speichern von Vektoren und zur Vektorsuche verwenden sollten

Azure Cache for Redis kann effektiv als Vektordatenbank verwendet werden, um Einbettungsvektoren zu speichern und Vektorähnlichkeitssuchen durchzuführen. Unterstützung für Vektorspeicher und Vektorsuche ist in vielen wichtigen Machine Learning-Frameworks verfügbar, wie:

Diese Frameworks bieten umfassende Integrationen mit Redis. Von der Redis-LangChain-Integration wird beispielsweise automatisch ein Indexschema für Metadaten generiert, das bei der Verwendung von Redis als Vektorspeicher übergeben wird. Dies erleichtert das Filtern von Ergebnissen anhand von Metadaten erheblich.

Redis bietet über das in der Enterprise-Ebene von Azure Cache for Redis verfügbare RediSearch-Modul eine Vielzahl von Suchfunktionen. Dazu gehören:

  • Mehrere Entfernungsmetriken, einschließlich Euclidean, Cosine und Internal Product
  • Unterstützung für die KNN-Indizierungsmethode (mit FLAT) und die ANN-Indizierungsmethode (mit HNSW)
  • Vektorspeicher in Hash- oder JSON-Datenstrukturen
  • Abfragen der relevantesten 1.000 Ergebnisse
  • Vektorbereichsabfragen (d. h. Suche nach allen Elementen innerhalb eines bestimmten Vektorabstands)
  • Hybridsuche mit leistungsstarken Abfragefeatures, z. B.:
    • Räumliche Filterung (Geofilterung)
    • Numerische Filter und Textfilter
    • Präfix- und Fuzzyübereinstimmung
    • Phonetischer Abgleich
    • Boolesche Abfragen

Zudem ist Redis oftmals eine aus wirtschaftlicher Hinsicht sinnvolle Wahl, da es bereits so häufig für Zwischenspeicherungs- oder Sitzungsspeicheranwendungen verwendet wird. In diesen Szenarien kann Redis eine Doppelrolle übernehmen, indem es die übliche Zwischenspeicherung durchführt und gleichzeitig Vektorsuchanwendungen unterstützt.

Welche anderen Optionen stehen mir für das Speichern von Vektoren und Suchen nach Vektoren zur Verfügung?

In Azure sind mehrere andere Lösungen für Vektorspeicher und -suche verfügbar. Andere Lösungen umfassen z. B.:

Am besten steigen Sie in die Verwendung von Einbettungen und der Vektorsuche ein, indem Sie es einfach ausprobieren.