Vektordatenbank
GILT FÜR: NoSQL
MongoDB-vCore
PostgreSQL
Vektordatenbanken werden in zahlreichen Bereichen und Situationen über analytische und generative KI hinweg verwendet, einschließlich linguistischer Datenverarbeitung, Video- und Bilderkennung, Empfehlungssysteme, Suche usw.
Im Jahr 2023 war ein bemerkenswerter Trend in der Software die Integration von KI-Erweiterungen, die oft durch die Einbindung spezialisierter, eigenständiger Vektordatenbanken in bestehende Technologiestapel erreicht wurde. In diesem Artikel wird erläutert, was Vektordatenbanken sind, und eine alternative Architektur vorgestellt, die Sie in Erwägung ziehen können: die Verwendung einer integrierten Vektordatenbank in der NoSQL- oder relationalen Datenbank, die Sie bereits verwenden, insbesondere wenn Sie mit multimodalen Daten arbeiten. Mit diesem Ansatz können Sie nicht nur die Kosten senken, sondern auch eine höhere Datenkonsistenz, Skalierbarkeit und Leistung erreichen.
Tipp
Datenkonsistenz, Skalierbarkeit und Leistung sind für datenintensive Anwendungen von entscheidender Bedeutung. Aus diesem Grund hat sich OpenAI entschieden, den ChatGPT-Dienst auf Azure Cosmos DB aufzubauen. Profitieren auch Sie von der integrierten Vektordatenbank, den Reaktionszeiten im einstelligen Millisekundenbereich, der automatischen und sofortigen Skalierbarkeit und der garantierten Geschwindigkeit in jedem Maßstab. Sehen Sie sich Implementierungsbeispiele an, und testen Sie sie kostenlos.
Was ist eine Vektordatenbank?
Eine Vektordatenbank ist eine Datenbank zum Speichern und Verwalten von Vektoreinbettungen, bei denen es sich um mathematische Darstellungen von Daten in einem hochdimensionalen Raum handelt. In diesem Raum entspricht jede Dimension einem Merkmal der Daten, und zehntausende Dimensionen können verwendet werden, um komplexe Daten darzustellen. Die Position eines Vektors in diesem Raum stellt seine Merkmale dar. Wörter, Ausdrücke oder ganze Dokumente sowie Bilder, Audioinhalte und andere Datentypen können vektorisiert werden. Diese Vektoreinbettungen werden bei der Ähnlichkeitssuche, der multimodalen Suche, Empfehlungs-Engines, großen Sprachenmodellen (LLMs) usw. verwendet.
In einer Vektordatenbank werden Einbettungen basierend auf Vektorabstand oder Ähnlichkeit indiziert und über Vektorsuchalgorithmen abgefragt. Ein robuster Mechanismus ist erforderlich, um die relevantesten Daten zu identifizieren. Zu den bekannten Vektorsuchalgorithmen zählen unter anderem Hierarchical Navigable Small World (HNSW) und Inverted File (IVF), DiskANN usw.
Integrierte Vektordatenbank im Vergleich zur reinen Vektordatenbank
Es gibt zwei gängige Typen von Vektordatenbankimplementierungen: reine Vektordatenbank und integrierte Vektordatenbank in einer NoSQL-Datenbank oder einer relationalen Datenbank.
Eine reine Vektordatenbank wurde entwickelt, um Vektoreinbettungen zusammen mit einer kleinen Menge an Metadaten effizient zu speichern und zu verwalten. Sie ist von der Datenquelle getrennt, von der die Einbettungen abgeleitet werden.
Eine Vektordatenbank, die in eine hochleistungsfähige NoSQL-Datenbank oder relationale Datenbank integriert ist, bietet zusätzliche Funktionen. Die integrierte Vektordatenbank in einer NoSQL-Datenbank oder relationalen Datenbank kann zusammen mit den entsprechenden Originaldaten Einbettungen speichern, indizieren und abfragen. So vermeiden Sie zusätzliche Kosten für die Replikation der Daten in einer separaten reinen Vektordatenbank. Außerdem bleiben Ihre Vektoreinbettungen und Ihre Originaldaten zusammen, was multimodale Datenvorgänge erleichtert und eine höhere Datenkonsistenz, Skalierbarkeit und Leistung ermöglicht. Eine leistungsstarke Datenbank mit Schemaflexibilität und integrierter Vektordatenbank eignet sich besonders gut für KI-Agents.
Anwendungsfälle für Vektordatenbanken
Vektordatenbanken werden in zahlreichen Bereichen und Situationen über analytische und generative KI hinweg verwendet, einschließlich natürlicher Sprachverarbeitung, Video- und Bilderkennung, Empfehlungssystem, Suche usw. Eine Vektordatenbank kann beispielsweise für Folgendes verwendet werden:
- Identifizieren ähnlicher Bilder, Dokumente und Songs auf der Grundlage von Inhalt, Thema, Stimmung und Stil
- Identifizieren ähnlicher Produkte basierend auf Merkmalen, Features und Benutzergruppen
- Empfehlen von Inhalten, Produkten oder Diensten basierend auf den Vorlieben von Einzelpersonen
- Empfehlen von Inhalten, Produkten oder Diensten basierend auf den Ähnlichkeiten bei Benutzergruppen
- Identifizieren der besten potenziellen Optionen aus einem großen Pool, um komplexe Anforderungen zu erfüllen
- Identifizieren von Datenanomalien oder betrügerischen Aktivitäten, die sich von vorherrschenden oder normalen Mustern unterscheiden
- Implementieren von PMEM für KI-Agents
Tipp
Neben diesen typischen Anwendungsfällen für Vektordatenbanken ist unsere integrierte Vektordatenbank dank ihrer geringen Wartezeit, hohen Skalierbarkeit und Hochverfügbarkeit auch eine ideale Lösung für LLM-Caching auf Produktionsebene.
Besonders beliebter ist die Verwendung von Vektordatenbanken zum Ermöglichen von Retrieval Augmented Generation (RAG), die LLMs und benutzerdefinierte Daten oder domänenspezifische Informationen nutzt. Dieser Ansatz ermöglicht Folgendes:
- Generieren kontextbezogener und präziser Antworten auf Benutzeraufforderungen aus KI-Modellen
- Überwinden der Einschränkungen von LLM-Token
- Reduzieren der Kosten durch häufige Feinabstimmung bei aktualisierten Daten
Dieser Prozess umfasst das Extrahieren relevanter Informationen aus einer benutzerdefinierten Datenquelle und das Integrieren dieser Informationen in die Modellanforderung per Prompt Engineering. Vor dem Senden einer Anforderung an das LLM wird die Benutzereingabe/-abfrage/-anforderung ebenfalls in eine Einbettung transformiert, und mithilfe von Vektorsuchverfahren werden die ähnlichsten Einbettungen in der Datenbank gesucht. Diese Technik ermöglicht die Identifizierung der relevantesten Datensätze in der Datenbank. Diese abgerufenen Datensätze werden dann mithilfe von Prompt Engineering als Eingabe an die LLM-Anforderung übermittelt.
Vektordatenbankbezogene Konzepte
Einbettungen
Eine Einbettung ist ein spezielles Format der Datendarstellung, das problemlos von Machine Learning-Modellen und -Algorithmen genutzt werden kann. Die Einbettung ist eine verdichtete Informationsdarstellung der semantischen Bedeutung eines Textteils. Jede Einbettung ist ein Vektor aus Gleitkommazahlen. Der Abstand zwischen zwei Einbettungen im Vektorraum korreliert mit der semantischen Nähe zwischen zwei Eingaben im Originalformat. Wenn beispielsweise zwei Texte semantisch sehr ähnlich sind, sollten auch ihre Vektordarstellungen nahe zueinander liegen. Eine Vektordatenbankerweiterung, mit der Sie Ihre Einbettungen zusammen mit Ihren Originaldaten speichern können, gewährleistet Datenkonsistenz, Skalierbarkeit und Leistung. [Zurück]
Vektorsuche
Die Vektorsuche ist eine Methode, mit der Sie ähnliche Elemente basierend auf ihren Datenmerkmalen und nicht auf exakten Übereinstimmungen in einem Eigenschaftenfeld finden können. Diese Technik ist nützlich für Anwendungsfälle wie die Suche nach ähnlichem Text, das Suchen ähnlicher Bilder, das Abgeben von Empfehlungen oder sogar das Erkennen von Anomalien. Hierfür werden die Vektordarstellungen (Zahlenlisten) Ihrer Daten verwendet, die Sie mit einem Machine Learning-Modell unter Verwendung einer Einbettungs-API wie Azure OpenAI Embeddings oder Hugging Face on Azure erstellt haben. Anschließend wird der Abstand zwischen den Datenvektoren und Ihrem Abfragevektor gemessen. Die Datenvektoren, die Ihrem Abfragevektor am nächsten liegen, sind semantisch am ähnlichsten. Die Verwendung des nativen Vektorsuchfeature bietet eine effiziente Möglichkeit, hochdimensionale Vektordaten direkt zusammen mit anderen Anwendungsdaten zu speichern, zu indexieren und zu durchsuchen. Mit diesem Ansatz entfällt die Notwendigkeit, Ihre Daten in teurere alternative Vektordatenbanken zu migrieren, und Sie erhalten eine nahtlose Integration Ihrer KI-gesteuerten Anwendungen. [Zurück]
Äußerungen und Prompt Engineering
Eine Äußerung (Prompt) ist ein bestimmter Text oder eine bestimmte Information, der/die als Anweisung für ein LLM dienen oder Kontextdaten liefern kann, auf denen das LLM aufbauen kann. Eine Äußerung kann verschiedene Formen annehmen, z. B. eine Frage, eine Anweisung oder sogar einen Codeschnipsel. Äußerungen können zu Folgendem dienen:
- Anweisungen instruieren das LLM.
- Primäre Inhalte liefern dem LLM Informationen, die verarbeitet werden sollen.
- Beispiele: hilft bei der Konditionierung des Modells für eine bestimmte Aufgabe oder einen bestimmten Prozess
- Hinweise lenken die Ausgabe des LLM in die richtige Richtung
- Unterstützende Inhalte: stellen dem LLM ergänzende Informationen zur Verfügung, die dieses zum Generieren der Ausgabe verwenden kann
Der Prozess, mit dem gute Äußerungen für ein Szenario erstellt werden, wird als Prompt Engineering bezeichnet. Weitere Informationen zu Prompts und Best Practices für das Prompt Engineering finden Sie unter Azure OpenAI Service Prompt Engineering-Techniken. [Zurück]
Token
Token sind kleine Textblöcke, die durch Aufteilen des Eingabetexts in kleinere Segmente generiert werden. Diese Segmente können entweder Wörter oder Gruppen von Zeichen sein, wobei die Länge von einem einzelnen Zeichen bis zu einem ganzen Wort variiert. Beispielsweise würde das Wort „Hamburger“ in die Token „Ham“, „bur“ und „ger“ aufgeteilt, während ein kurzes, gängiges Wort wie „Birne“ als einzelnes Token betrachtet würde. LLMs wie ChatGPT, GPT-3.5 oder GPT-4 zerlegen Wörter zur Verarbeitung in Token. [Zurück]
Retrieval Augmented Generation (RAG)
Retrieval Augmentated Generation (RAG) ist eine Architektur, die die Fähigkeiten von LLMs wie ChatGPT, GPT-3.5 oder GPT-4 erweitert, indem sie ein Informationsabfragesystem wie die Vektorsuche hinzufügt, das Basisdaten liefert, wie sie beispielsweise in einer Vektordatenbank gespeichert sind. Mit diesem Ansatz kann Ihr LLM kontextbezogene und genaue Antworten auf der Grundlage Ihrer benutzerdefinierten Daten generieren, die aus vektorisierten Dokumenten, Bildern, Audio, Video usw. stammen.
Ein einfaches RAG-Muster mit Azure Cosmos DB for NoSQL könnte wie folgt aussehen:
- Registrieren in der Vorschau des Azure Cosmos DB NoSQL Vector Index
- Richten Sie eine Datenbank und einen Container mit einer Containervektorrichtlinie und einem Vektorindex ein.
- Einfügen von Daten in eine Azure Cosmos DB for NoSQL-Datenbank und -Container
- Erstellen von Einbettungen aus einer Dateneigenschaft mithilfe von Azure OpenAI Embeddings
- Verlinken Sie Azure Cosmos DB for NoSQL.
- Erstellen eines Vektorindexes für die Einbettungseigenschaften
- Erstellen einer Funktion, die eine Vektorähnlichkeitssuche basierend auf Benutzer-Prompts ausführt.
- Mithilfe eines Azure OpenAI Completions-Modells werden anhand der Daten Fragen beantwortet.
Das RAG-Muster mit Prompt Engineering dient dem Zweck, die Antwortqualität zu verbessern, indem es dem Modell mehr kontextbezogene Informationen bietet. RAG ermöglicht es dem Modell, eine umfassendere Wissensbasis anzuwenden, indem relevante externe Quellen in den Generierungsprozess integriert werden, was zu umfassenderen und fundierteren Antworten führt. Weitere Informationen zum „Erden“ von LLMs finden Sie unter Erdungs-LLMs. [Zurück]
Im Folgenden finden Sie mehrere Möglichkeiten zum Implementieren von RAG für Ihre Daten mithilfe unserer integrierten Vektordatenbankfunktionen.
Implementieren von integrierten Vektordatenbankfunktionen
Sie können integrierte Vektordatenbankfunktionen für die folgenden Azure Cosmos DB-APIs implementieren:
NoSQL-API
Azure Cosmos DB for NoSQL ist die weltweit erste serverlose NoSQL-Vektordatenbank. Speichern Sie Ihre Vektoren und Daten zusammen in Azure Cosmos DB for NoSQL mit integrierten Vektordatenbankfunktionen, in denen Sie einen Vektorindex basierend auf DiskANNerstellen können, einer Suite von Algorithmen mit hoher Leistung, die von Microsoft Research entwickelt wurden.
DiskANN ermöglicht es Ihnen, hochgenaue, niedrige Latenzabfragen in beliebiger Größenordnung durchzuführen und dabei alle Vorteile von Azure Cosmos DB for NoSQL wie 99,999% SLA (mit HA-aktiviert), Georeplikation, nahtloser Übergang von Serverless zu bereitgestelltem Durchsatz (RU) in einem einzigen Datenspeicher zu nutzen.
Links und Beispiele
- Was ist die Datenbank hinter ChatGPT? - Microsoft Mechanics
- Vektorindizierung in Azure Cosmos DB for NoSQL
- NoSQL-Abfragen der VectorDistance-Systemfunktion
- Einrichten von Vektordatenbankfunktionen in Azure Cosmos DB NoSQL
- Python: Notebook-Tutorial
- C#: Erstellen eines eigenen Copilot Complete Solution Accelerator mit AKS und Semantic Kernel
- C#: Erstellen einer eigenen Copilot-Beispiel-App mit Praxislab
- Python: Film-Chatbot
Azure Cosmos DB for MongoDB
Verwenden Sie die nativ integrierte Vektordatenbank in Azure Cosmos DB for MongoDB (vCore-Architektur), die eine effiziente Möglichkeit bietet, hochdimensionale Vektordaten direkt neben anderen Anwendungsdaten zu speichern, zu indizieren und zu durchsuchen. Mit diesem Ansatz entfällt die Notwendigkeit, Ihre Daten in teurere alternative Vektordatenbanken zu migrieren, und Sie erhalten eine nahtlose Integration Ihrer KI-gesteuerten Anwendungen.
Codebeispiele
- Erstellen eines eigenen Copilot für Azure Cosmos DB for MongoDB in C# mit Semantic Kernel
- .NET-Tutorial: Chatbot für Rezepte
- C#-RAG-Muster: Integrieren von OpenAI Services mit Cosmos
- Python RAG-Muster: Azure-Produktchatbot
- Tutorial für Python-Notebook: Integration einer Vektordatenbank über LangChain
- Tutorial für Python-Notebook: LLM-Zwischenspeicherintegration über LangChain
- Python – Llamaindex-Integration
- Python – Integration des semantischen Kernelspeichers
- Python-Notebook: Film-Chatbot
API für PostgreSQL
Verwenden Sie die nativ integrierte Vektordatenbank im virtuelle Kern von Azure Cosmos DB for PostgreSQL, die eine effiziente Möglichkeit bietet, hochdimensionale Vektordaten direkt neben anderen Anwendungsdaten zu speichern, zu indizieren und zu durchsuchen. Mit diesem Ansatz entfällt die Notwendigkeit, Ihre Daten in teurere alternative Vektordatenbanken zu migrieren, und Sie erhalten eine nahtlose Integration Ihrer KI-gesteuerten Anwendungen.
Codebeispiel
Nächster Schritt
30-tägige kostenlose Testversion ohne Azure-Abonnement
90-tägige kostenlose Testversion und bis zu 6.000 USD Durchsatzguthaben mit Azure KI Advantage
Weitere Vektordatenbanklösungen
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Tickets als Feedbackmechanismus für Inhalte auslaufen lassen und es durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unter:Einreichen und Feedback anzeigen für