Auswählen eines Azure-Diensts für die Vektorsuche
Die Vektorsuche ist eine Methode zum Suchen von Informationen, die in einer Datenbank in Form von Vektoren gespeichert sind. Vektoren sind Zahlengruppen, die Funktionen oder Merkmale von Medien darstellen, z. B. Text oder Bilder. Vektoren sind ein bedeutender Fortschritt gegenüber herkömmlichen Schlüsselwort-basierten Suchmethoden. Sie bieten schnellere, genauere Ergebnisse, indem sie die semantischen Beziehungen innerhalb der Informationen verstehen.
Azure bietet mehrere Möglichkeiten zum Speichern und Durchsuchen von vektorisierten Daten. In diesem Artikel erfahren Architekten und Entwickler, wie sie den richtigen Azure-Dienst für die Vektorsuche für ihre Anwendung finden und auswählen.
Es werden die folgenden Dienste auf Basis ihrer Vektorsuchfunktionen verglichen:
- Azure KI Cognitive Search
- Azure Cosmos DB for NoSQL
- Azure Cosmos DB for MongoDB (vCore)
- Azure Cosmos DB for PostgreSQL
- Azure-Datenbank für PostgreSQL
- Azure SQL-Datenbank
Architekten und Entwickler sollten die verfügbaren Dienste aus der Sicht der Systemanforderungen unter Auswählen eines Kandidatendiensts und in der Funktionsmatrix vergleichen.
Auswählen eines Kandidatendiensts
In diesem Abschnitt können Sie die in Frage kommenden Dienste für Ihre Anforderungen auswählen. Um die Auswahl einzugrenzen, sollten Sie zunächst die Systemanforderungen berücksichtigen.
Schlüsselanfoderungen
Berücksichtigen Sie bei der Entscheidung, ob Sie eine herkömmliche Datenbanklösung oder die Azure KI-Suche verwenden möchten, Ihre Anforderungen und ob Sie eine Live- oder echtzeitbasierte Vektorsuche für Ihre Daten durchführen können. Eine herkömmliche relationale oder NoSQL-Datenbank eignet sich am besten für Ihr Szenario, wenn Sie Werte in vektorisierten Feldern häufig ändern und die Änderungen in Echtzeit oder in in Quasi-Echtzeit durchsuchbar sein müssen. Ebenso kann die Verwendung Ihrer vorhandenen Datenbank die beste Lösung sein, um Ihre Leistungsziele zu erfüllen. Wenn Ihre Workload andererseits keine Echtzeit- oder in Quasi-Echtzeit-Vektorsuchbarkeit erfordert und Sie die Verwaltung eines Indexes von Vektoren akzeptieren, kann die KI-Suche eine überzeugende Wahl sein.
Wenn Sie sich für eine herkömmliche Datenbanklösung entscheiden, hängt die Art des Datenbankdienstes, den Sie verwenden möchten, hauptsächlich von den Fähigkeiten Ihres Teams und den derzeit verwendeten Datenbanken ab. Wenn Sie beispielsweise bereits einen bestimmten Datenbanktyp wie MongoDB verwenden, kann dieser Datenbanktyp die einfachste Lösung für Ihr Szenario sein. Wie im Abschnitt Funktionsmatrix gezeigt, verfügt jeder Datenbankdienst über einige eindeutige Funktionen und Einschränkungen für die Vektorsuche. Überprüfen Sie diese Informationen, um sicherzustellen, dass Ihr bevorzugter Datenbanktyp die benötigten Funktionen unterstützt.
Wenn Kostenaspekte eine Rolle spielen, ist die Beibehaltung Ihres vorhandenen Designs wahrscheinlich die beste Lösung für Ihr Szenario, da die Einführung neuer Dienste oder anderer Instanzen eines Datenbankdienstes neue Kosten und Komplexität verursachen kann. Die Verwendung Ihrer aktuellen Datenbanken für die Vektorsuche wirkt sich wahrscheinlich auf Ihre Kosten weniger aus als ein dedizierter Dienst.
Wenn Sie eine herkömmliche Datenbank anstelle von KI-Suche verwenden, sind einige erweiterte Suchfunktionen standardmäßig nicht verfügbar. Möchten Sie beispielsweise die Neuanordnungs- oder Hybridsuche durchführen, aktivieren Sie diese Funktionalität über Transact-SQL (T-SQL) oder andere Codierungen.
Funktionsmatrix
In den Tabellen dieses Abschnitts sind die Hauptunterschiede der Funktionen zusammengefasst:
Grundlegende Funktionen
Manchmal unterscheidet sich die native Unterstützung für Vektordatentypen, ANN-Vektorindizes (Approximate Nearest Neighbor, ungefährer nächster Nachbar), Vektordimensionslimits, mehrere Vektorfelder und mehrere Vektorindizes zwischen den Diensten. Ihre Workloadanforderungen erfordern möglicherweise einige dieser spezifischen Features. Verstehen der grundlegenden Vektorfunktionen der einzelnen Azure-Dienste, wie in der folgenden Tabelle dargestellt.
Funktion | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB for MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure KI Cognitive Search | Azure SQL-Datenbank |
---|---|---|---|---|---|---|
Integrierte Vektorsuche | Ja 1 | Ja | Ja 2 | Ja 1 | Ja 3 | Ja 4 |
Vektordatentyp | Ja | Ja | Ja | Ja | Ja | Ja 9 |
Dimensionslimits 6 | 16.000 7 oder 2.000 | 505 8 oder 4096 | 2\.000 | 16.000 7 oder 2.000 | 3\.072 | 1998 (Vorschauversion)5 |
Mehrere Vektorfelder | Ja | Ja | No | Ja | Ja | Ja |
Mehrere Vektorindizes | Ja | Ja | No | Ja | Ja | Ja |
- 'pgvector' unterstützt die Vektorsuche, und ist eine Erweiterung von PostgreSQL.
- Verwenden der Vektorsuche für Einbettungen in Azure Cosmos DB for MongoDB vCore
- Vektoren in Azure KI-Suche
- Die native Vektorsuche ist mit Azure SQL-Datenbank Early Adopter Preview verfügbar
- Vektoren können in einer VARBINARY(8000)-Spalte oder Variable gespeichert werden.
- Einbetten von Modellen aus OpenAI, 1536 für text-embedding-ada-002 und text-embedding-3-small und 3072 für text-embedding-3-large. Für multimodale Azure KI Vision-Einbettungsmodelle, 1024 für Bild und Text.
- Vektoren können bis zu 16.000 Dimensionen aufweisen. Der Index mit „IVFFlat“ und „HNSW“ unterstützt jedoch Vektoren mit bis zu 2.000 Dimensionen.
- Vektoren, die mit dem flachen Indextyp indiziert sind, können höchstens 505 Dimensionen umfassen. Vektoren, die mit dem Indextyp quantizedFlat oder DiskANN indiziert sind, können höchstens 4.096 Dimensionen umfassen.
- SQL-Datenbank Vektordatentyp
Suchmethoden
Workloads müssen die Vektorsuche häufig mit der Volltextsuche oder sogar einer Hybridsuche (Volltextsuche oder semantische Suche plus Vektorsuche) kombinieren. Die Kombination aus Hybridsuche und Neuanordnung erreicht eine hohe Genauigkeit für Workloads. Sie können die Hybridsuche manuell implementieren und mit Ihrem eigenen Code neu anordnen, oder Sie können überlegen, wie Ihr Vektorspeicher diese Workloadanforderung unterstützt.
Suche | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB for MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure KI Cognitive Search | Azure SQL-Datenbank |
---|---|---|---|---|---|---|
Volltextsuche | Ja 1 | No | Ja 2 | Ja 1 | Ja 3 | Ja 4 |
Hybridsuche | Ja 5 | No | No | Ja 5 | Ja 6 | Ja7 |
Integrierte Neuanordnung | No | No | No | No | Ja 8 | No |
- PostgreSQL Volltextsuche
- Suchen und Abfragen mit Textindizes in Azure Cosmos DB for MongoDB vCore
- Erste Schritte mit der Volltextsuche
- Vektordaten auf SQL Server
- Wird nicht als erstklassiges Feature bereitgestellt, jedoch werden Beispielcodes bereitgestellt.
- Die Hybridsuche (Kombination aus Volltextsuche, Vektorsuche und semantischer Rangfolge) wird als erstklassiges Feature bereitgestellt.
- Beispiel für die Hybridsuche für Azure SQL-Datenbank und SQL Server.
- Die Neuanordnung, die als Semantische Anordnung bezeichnet wird, ist ein erstklassiges Feature zum Neuanordnen eines Ergebnisses aus der Volltext- und/oder Vektorsuche.
Vektordaten-Indizierungsalgorithmen
Die Vektordatenindizierung ist die Möglichkeit, Vektoren effizient zu speichern und abzurufen. Diese Funktion ist wichtig, da die Indizierung die Geschwindigkeit und Genauigkeit von Ähnlichkeitssuchen und nächstgelegenen benachbarten Abfragen in Datenquellen beeinflusst.
Indizes basieren in der Regel auf einem Exhaustive K-nearest Neighbor (Ek-NN)- oder einem ANN-Algorithmus. Ek-NN führt eine vollständige Suche nach allen Datenpunkten einzeln durch und gibt den genauen K-nächsten Nachbarn zurück. Ek-NN funktioniert in Millisekunden mit einer geringen Menge von Daten, kann jedoch zu Latenzen für große Datenmengen führen.
DiskANN, HNSW und IVFFlat sind ANN-Algorithmusindizes. Die Auswahl der geeigneten Indizierungsstrategie umfasst eine sorgfältige Prüfung verschiedener Faktoren, z. B. die Art des Datasets, die spezifischen Anforderungen der Abfragen und die verfügbaren Ressourcen. DiskANN kann sich Änderungen im Dataset anpassen und Rechenressourcen sparen. HNSW eignet sich hervorragend für Systeme, die schnelle Abfrageantworten erfordern und sich an Änderungen im Dataset anpassen können. IVFFlat ist in Umgebungen wirksam, in denen Hardwareressourcen begrenzt oder Abfragevolumen nicht hoch sind.
Anhand der folgenden Tabelle können Sie nachvollziehen, welche Arten von Vektordatenindizierung bereitgestellt werden.
Indizierungsansatz | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB for MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure KI Cognitive Search | Azure SQL-Datenbank |
---|---|---|---|---|---|---|
DiskANN | No | Ja | No | No | No | No |
Vollständiger K-nächster Nachbar (EKNN) | Ja | Ja | Ja | Ja | Ja | Ja |
Hierarchical Navigable Small World (HNSW) | Ja | No | Ja (Vorschau)1 | Ja | Ja | No |
IVFflat | Ja | No | Ja | Ja | No | No |
Andere | - | flat, quantizedFlat2 | Vektorfeldeinschränkung 3 Vektorindexbeschränkung 4 |
- | - | Externe Bibliotheken sind verfügbar5 |
- Azure Cosmos DB für MongoDB – Übersicht über die Vektorsuche
- Vektorindizierungsrichtlinien
- Pro Container ist nur ein Vektorfeld verfügbar.
- Pro Container ist nur ein Vektorindex verfügbar.
- Der Index kann mithilfe externer Bibliotheken wie Scikit Learn oder FAISS erstellt werden
Ähnlichkeits- und Abstandsberechnungsfunktionen
Es gibt die folgenden -Berechnungsmethoden für die Vektorsuche: Kosinusähnlichkeit, Skalarprodukt und Euklidischer Abstand. Diese Methoden werden verwendet, um die Ähnlichkeit zwischen zwei Vektoren oder den Abstand zwischen zwei Vektoren zu berechnen.
Vorläufige Datenanalysen profitieren sowohl von Metriken als auch von Euklidischen Abständen, die die Extraktion verschiedener Erkenntnisse über die Datenstruktur ermöglichen, während die Textklassifizierung im Allgemeinen unter Euklidischen Abständen besser funktioniert. Der Abruf der am ehesten ähnlichen Texte mit einem bestimmten Text funktioniert in der Regel besser mit Kosinusähnlichkeit.
Azure OpenAI Service-Einbettungen nutzen Kosinusähnlichkeit, um die Ähnlichkeit zwischen Dokumenten und einer Abfrage zu berechnen.
Integrierte Vektorvergleichsberechnung | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB for MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure KI Cognitive Search | Azure SQL-Datenbank |
---|---|---|---|---|---|---|
Kosinusähnlichkeit | Ja | Ja1 | Ja | Ja | Ja | Ja 2 |
Euklidischer Abstand (L2-Abstand) | Ja | Ja1 | Ja | Ja | Ja | Ja 2 |
Skalarprodukt | Ja | Ja1 | Ja | Ja | Ja | Ja 2 |
- Vektorabstandsberechnung für Azure Cosmos DB für NoSQL.
- Beispiele für die Abstandsberechnung für Azure SQL-Datenbank und SQL Server.
Integration in Azure OpenAI und andere Komponenten
Bei der Implementierung der Vektorsuche können Sie auch eine Verknüpfung mit anderen Microsoft-Komponenten in Betracht ziehen. Der Azure OpenAI Service hilft Ihnen beispielsweise beim Erstellen von Vektoren für Ihre Daten und Eingabeabfragen für die Vektorähnlichkeitssuche.
Funktion | Azure Cosmos DB for PostgreSQL | Azure Cosmos DB for NoSQL | Azure Cosmos DB for MongoDB (vCore) | Azure Database for PostgreSQL (Flex) | Azure KI Cognitive Search | Azure SQL-Datenbank |
---|---|---|---|---|---|---|
Hinzufügen Ihrer eigenen Daten mit Azure OpenAI Service | No | No | Ja 1 | No | Ja 2 | No |
Einbetten von Vektoren mit Azure OpenAI | No | No | No | Ja 3 | Ja 4 | Ja 5 |
Integration mit prompt flow | No | No | No | No | Ja 6 | No |
Integration mit semantischem Kernel | Ja7 | Ja8 | Ja9 | Ja7 | Ja 10 | Ja 11 |
- Azure Cosmos DB für MongoDB (vCore) wird als Datenquelle für Azure OpenAI für Ihre Daten unterstützt.
- Azure KI-Suche wird als Datenquelle für Azure OpenAI für Ihre Daten unterstützt.
- Azure AI-Erweiterung (Vorschauversion) ist verfügbar.
- Azure KI-Suche bietet eine Fähigkeit zum Vektorisieren des segmentierten Texts.
- Sie können ein gespeichertes Verfahren für die Bereitstellung des Einbettungsmodells erstellen erstellen.
- Wird als Vektordatenbank im Vector DB Lookup-Tool unterstützt.
- Wird als Speicherconnector und als Vektordatenbankconnector (C#) unterstützt.
- Wird als Speicherconnector und als Vektordatenbankconnector (C#, Python) unterstützt.
- Wird als Vektordatenbankconnector (C#, Python) unterstützt.
- Wird als Speicherconnector und als Vektordatenbankconnector (C#, Python) unterstützt.
- Wird als Speicherconnector unterstützt.
Beitragende
Dieser Artikel wird von Microsoft gepflegt. Er wurde ursprünglich von folgenden Mitwirkenden geschrieben:
Hauptautoren:
- Keita Onabuta | Senior Customer Engineer
- Gary Lee | Senior Customer Engineer
Andere Mitwirkende:
- Kruti Mehta | Customer Engineer
Melden Sie sich bei LinkedIn an, um nicht öffentliche LinkedIn-Profile anzuzeigen.
Nächster Schritt
Implementieren der Wissensgewinnung („Knowledge Mining“) mit Azure KI-Suche. Dieser Lernpfad untersucht, wie Azure KI-Suche verwendet wird.
Zugehörige Ressourcen
- Grundlegendes zu Datenspeichermodellen
- Technologieoptionen für Azure-Lösungen
- Ankündigung von EAP für die Vektorunterstützung in Azure SQL Database
- Native Vector-Unterstützung in Azure SQL und SQL Server
- Vektordatenbank in Azure Cosmos DB
- Einführung in Vektordatenbankfunktionen in Azure Cosmos DB for NoSQL
- Vektorsuche in Azure Cosmos DB for NoSQL
- Azure Vector-Datenbankbeispiele