Was sind Vektor-Einbettungen und Vektorsuche in Azure Managed Redis?

Die Vektorähnlichkeitssuche (VSS) ist eine gängige Funktion in KI-gestützten intelligenten Anwendungen. Sie können Azure Managed Redis als Vektordatenbank mit geringer Latenz verwenden, wenn Sie sie mit Embedding-Modellen wie Azure OpenAI kombinieren, für Retrieval-Augmented Generation (RAG), semantisches Caching, Empfehlung, Suche und andere KI-Szenarien.

Dieser Artikel führt in Vektoreinbettungen, Vektorähnlichkeitssuche und die Frage ein, wie Azure Managed Redis mithilfe des RediSearch-Moduls Vektoren speichern und durchsuchen kann.

Für Tutorials und Beispielanwendungen, die Azure Managed Redis mit Azure OpenAI verwenden, siehe die folgenden Ressourcen:

Umfang der Verfügbarkeit

Vektorsuchfunktionen in Redis erfordern Redis Stack und insbesondere das Modul RediSearch. In Azure Managed Redis ist RediSearch als verwaltetes Modul verfügbar, das Sie beim Erstellen des Caches aktivieren müssen.

Die folgende Tabelle zeigt die RediSearch-Verfügbarkeit für Azure Managed Redis-Stufen.

Tarif für Azure Managed Redis RediSearch-Unterstützung
Memory Optimized Ja
Balanced Ja
Compute Optimized Ja
Flash Optimized Nein

Important

Man kann keine Module mehr zu einer Azure Managed Redis Instanz hinzufügen, nachdem sie erstellt wurde. Wenn du vorhast, Vektorsuche zu verwenden, aktiviere das RediSearch-Modul während der Bereitstellung.

Bevor Sie eine Azure Managed Redis Instanz für die Vektorsuche erstellen, planen Sie die Cache-Konfiguration und das Datenmodell. Sie müssen während der Bereitstellung einige Optionen wählen, darunter Module und Clustering-Richtlinien.

Für Vektorsuch-Workloads:

  • Aktiviere das RediSearch-Modul, wenn du die Azure Managed Redis Instanz erstellst.
  • Verwenden Sie die Enterprise-Clustering-Richtlinie . RediSearch benötigt eine Enterprise-Clustering-Richtlinie.
  • Verwenden Sie die NoEviction Räumungsrichtlinie, wenn RediSearch aktiviert ist.
  • Wählen Sie eine unterstützte In-Memory-Stufe: Speicheroptimiert,Symmetrisch oder Rechenoptimiert.
  • Dimensionieren Sie den Cache sowohl für Vektordaten als auch für den Index-Overhead.
  • Speichern Sie Metadaten mit Vektoren wie Dokument-ID, Titel, Quell-URL, Kategorie, Zeitstempel, Mieter-ID oder Zugriffskontrollfeldern, damit Abfragen Ergebnisse filtern und Quellinformationen zurückgeben können.
  • Nutzen Sie TLS für Client-Verbindungen und berücksichtigen Sie die Microsoft Entra-Authentifizierung, wo Ihr Client sie unterstützt.
  • Für Produktionsworkloads sollten Sie Private Link, hohe Verfügbarkeit und Diagnostik in Betracht ziehen.

Azure Managed Redis verwaltet die verfügbaren Modulversionen für den Service. Du kannst Module nicht manuell laden oder Modulversionen manuell aktualisieren.

Weitere Informationen finden Sie unter Use Redis modules with Azure Managed Redis, Azure Managed Redis architecture und Quickstart: Create an Azure Managed Redis Instance.

Was sind Vektoreinbettungen?

Vektoreinbettungen sind numerische Darstellungen von Daten, wie Wörtern, Dokumenten, Bildern oder Produkten, in einem hochdimensionalen Vektorraum. Embeddings erfassen semantische Beziehungen so, dass Anwendungen Daten mathematisch vergleichen können.

Zum Beispiel haben die Wörter basketball und baseball typischerweise Einbettungen, die näher beieinander liegen als eines der beiden Wörter zu rainforestist, weil das Modell semantisch verwandte Konzepte nahe beieinander im Vektorraum platziert.

Verschiedene Machine-Learning-Modelle erzeugen Embeddings unterschiedlich. Für beste Ergebnisse verwenden Sie ein Einbettungsmodell konsistent für einen gegebenen Vektorindex. Das Indexschema, die Vektordimensionen und die Distanzmetrik sollten mit dem Einbettungsmodell übereinstimmen, das zur Erzeugung der Vektoren verwendet wird.

Vektorvergleich

Du kannst Vektoren mit Distanz- oder Ähnlichkeitsmetriken vergleichen. Zu den allgemeinen Metriken gehören:

  • Kosinusähnlichkeit, die den Winkel zwischen den Vektoren vergleicht.
  • Euklidische Entfernung, die die gerade Linie im Vektorraum misst.
  • Inneres Produkt, das in einigen Embedding- und Ranking-Szenarien häufig verwendet wird.

Die korrekte Metrik hängt vom Einbettungsmodell und der Normalisierung der Vektoren ab. Für viele Texteinbettungsszenarien ist Kosinusähnlichkeit eine gängige Wahl.

Generieren von Einbettungen

Viele Machine Learning-Modelle unterstützen Einbettungs-APIs. Ein Beispiel dafür, wie man Vektor-Embeddings mit Azure OpenAI erstellt, findet sich unter Lernen, wie man Embeddings mit Azure OpenAI generiert.

Was ist eine Vektordatenbank?

Eine Vektordatenbank speichert, indexiert, ruft und vergleicht hochdimensionale Vektoren. Vektordatenbanken sind so konzipiert, dass sie ähnliche Vektoren mit geringer Latenz und hohem Durchsatz zurückgeben.

Sie können Azure Managed Redis als Vektordatenbank verwenden, indem Sie Einbettungen in Redis-Datenstrukturen speichern und diese mit RediSearch indizieren.

Vektorspeicherung und Metadaten

In Redis kann man Vektoren in Hashes oder JSON-Dokumenten speichern. Speichern nützliche Metadaten mit jedem Vektor, wie Dokument-ID, Titel, Quell-URL, Kategorie, Zeitstempel, Mieter-ID oder Zugriffskontrollfelder.

Metadaten machen die Vektorsuche nützlicher, da Anwendungen die Ergebnisse vor oder während der Vektorsuche filtern können. Für RAG-Anwendungen können Metadaten auch zusammen mit Suchergebnissen zurückgegeben werden, um Zitate und Quellenbegründung zu unterstützen.

Index und Suchmethoden

Vektordatenbanken verwenden Indizes, um die Suche effizient zu machen. RediSearch unterstützt gängige Vektorindexierungsansätze, darunter:

  • FLAT – Ein exakter Brute-Force-Index. FLAT kann für kleinere Datensätze oder Arbeitslasten nützlich sein, die eine umfassende Suche erfordern.
  • HNSW – Ein ungefährer Nächste-Nachbar-Index, der auf Hierarchical Navigable Small World-Graphen basiert. HNSW wird oft für größere Datensätze verwendet, bei denen eine geringere Latenz wichtiger ist als eine erschöpfende Präzision.

Gängige Suchmethoden sind:

  • K-nächstgelegene Nachbarn (KNN) – Gibt die obersten K ähnlichsten Vektoren zurück.
  • Approximative Nearest Neighbors (ANN) – Tauscht etwas Präzision gegen geringere Latenz und geringere Rechenkosten ein.

Suchfunktionen

Vektordatenbanken führen Suchen durch, indem sie einen Abfragevektor mit indexierten Vektoren vergleichen und die ähnlichsten Ergebnisse liefern. Viele Anwendungen verwenden auch hybride Suche, bei der Metadatenfilter die Kandidatenmenge vor oder während des Vektorvergleichs eingrenzen.

Beispielsweise könnte eine Produktempfehlungsanfrage nur Produkte aus einer bestimmten Kategorie suchen, oder eine RAG-Anwendung könnte nur Dokumente durchsuchen, auf die der aktuelle Nutzer zugreifen darf.

Wichtige Szenarien für die Vektorsuche

Die Vektorähnlichkeitssuche kann in vielen Anwendungsmustern verwendet werden, darunter:

  • Semantik Q&A. Baue einen Chatbot, der Fragen über deine eigenen Daten beantwortet. Dokumente können in Abschnitte unterteilt, in Einbettungen umgewandelt, in Azure Managed Redis gespeichert und anhand der Vektorähnlichkeit abgerufen werden, bevor sie von einem großen Sprachmodell zusammengefasst werden.
  • Dokumentenabruf. Verwenden Sie Embeddings, um eine semantische Dokumentensuche bereitzustellen, wenn die Schlüsselwortsuche nicht ausreicht.
  • Produktempfehlung. Finden Sie ähnliche Produkte oder Dienstleistungen basierend auf Browsing-Aktivitäten, Kaufhistorie oder Produktbeschreibungen.
  • Visuelle Suche. Suchen Sie nach Produkten oder Bildern, die optisch einem eingereichten Bild ähneln.
  • Semantisches Caching. Reduzieren Sie die Kosten und Latenz von LLM, indem Sie Abschlüsse speichern und zwischengespeicherte Antworten wiederverwenden, wenn ein neuer Prompt semantisch einem vorherigen Prompt ähnelt.
  • LLM-Gesprächserinnerung. Speichere Kurzzeitgedächtnis, wie aktuelle Gesprächsrunden, und Langzeitgedächtnis, wie haltbare Zusammenfassungen, Benutzerpräferenzen oder Fakten, als Einbettungen, die Anwendungen für zukünftige Antworten abrufen können.

Warum Azure Managed Redis zum Speichern und Durchsuchen von Vektoren wählen?

Azure Managed Redis ist nützlich für Vektorsuch-Workloads, die einen latenzarmen Zugriff in der Nähe von Anwendungsdaten, Cache-Daten, Sitzungszuständen oder Konversationsspeicher benötigen. Da Redis häufig für Hochleistungsanwendungsmuster verwendet wird, kann Azure Managed Redis Vektorsuche unterstützen und gleichzeitig benachbarte Anwendungsfälle wie Caching, Rate-Limiting, Sitzungsspeicherung, semantisches Caching und Agentenspeicher bedienen.

Viele KI- und Anwendungsframeworks enthalten Redis-Integrationen, darunter:

Azure Managed Redis verwendet das RediSearch-Modul zur Unterstützung von Vektorsuchfunktionen wie:

  • Gängige Distanzmetriken, darunter L2, COSINE, und IP.
  • KNN-Suche mit FLAT und HNSW Vektorindizes.
  • Vektorspeicherung in Hash- oder JSON-Datenstrukturen.
  • Top-K-Anfragen.
  • Vektorbereichsanfragen.
  • Hybride Suche mit Abfragefunktionen wie:
    • Georäumliche Filterung.
    • Numerische und Textfilter.
    • Präfix- und unscharfer Abgleich.
    • Phonetischer Abgleich.
    • Boolesche Anfragen.

Welche anderen Optionen habe ich zum Speichern und Durchsuchen von Vektoren?

Azure bietet mehrere Dienste für Vektorspeicherung und Suche an. Die beste Wahl hängt von deiner Arbeitsbelastung ab.

Service Betrachten Sie, wann
Azure Managed Redis Du brauchst eine Vektorsuche mit niedriger Latenz in der Nähe von Anwendungscache, Sitzungszustand, semantischem Cache oder LLM-Speichermustern.
Azure KI-Suche Sie benötigen einen Search-First-Service für Dokumentenindexierung, hybride Suche, Relevanzoptimierung und Enterprise-Retrieval-Szenarien.
Azure Cosmos DB Du willst Vektorsuche neben operativen NoSQL-Daten.
Azure-Datenbank für PostgreSQL – Flexibler Server Du möchtest in PostgreSQL eine Vektorsuche mit pgvector zusammen mit relationalen Daten verwenden.

Der beste Weg, mit Embeddings und Vektorsuche zu beginnen, ist, es selbst auszuprobieren.