Freigeben über


Codebeispiele für den semantischen Kernelvektorspeicher (Vorschau)

Warnung

Die Funktionalität des Semantic Kernel Vector Store befindet sich in der Vorschau. Verbesserungen, die tiefgreifende Änderungen erfordern, können unter bestimmten Bedingungen noch vor der Veröffentlichung vorgenommen werden.

End-to-End-RAG-Beispiel mit Vector Stores

Dieses Beispiel ist eine eigenständige Konsolenanwendung, die RAG mithilfe des semantischen Kernels veranschaulicht. Das Beispiel weist die folgenden Merkmale auf:

  1. Ermöglicht die Auswahl von Chat- und Einbettungsdiensten
  2. Ermöglicht die Auswahl von Vektordatenbanken.
  3. Liest den Inhalt einer oder mehrerer PDF-Dateien und erstellt für jeden Abschnitt einen Block.
  4. Generiert Einbettungen für jeden Textabschnitt und führt sie in die ausgewählte Vektordatenbank ein.
  5. Registriert den Vector Store als Textsuche-Plug-In mit dem Kernel.
  6. Ruft das Plug-In auf, um die vom KI-Modell bereitgestellte Eingabeaufforderung mit mehr Kontext zu erweitern

Für zwei sehr einfache Beispiele, wie man Daten in einen Vektorspeicher aufnimmt und Vektorsuche durchführt, schauen Sie sich diese zwei Beispiele an, die Qdrant- und InMemory-Vektorspeicher nutzen, um ihre Nutzung zu zeigen.

Allgemeiner Code mit mehreren Geschäften

Vektorspeicher können sich in bestimmten Aspekten unterscheiden, z. B. im Hinblick auf die Typen ihrer Schlüssel oder die Typen von Feldern, die jeweils unterstützt werden. Dennoch ist es möglich, Code zu schreiben, der für diese Unterschiede agnostisch ist.

Ein Datenaufnahmebeispiel, das dies veranschaulicht, finden Sie unter:

Ein Vektorsuchbeispiel, das dasselbe Konzept veranschaulicht, finden Sie in den folgenden Beispielen. Jedes dieser Beispiele verweist auf denselben gemeinsamen Code und unterscheidet sich einfach vom Typ des Vektorspeichers, den sie für die Verwendung mit dem gemeinsamen Code erstellen.

Unterstützen mehrerer Vektoren im selben Datensatz

Die Vektorspeicherabstraktionen unterstützen mehrere Vektoren im selben Datensatz für Vektordatenbanken, die dies unterstützen. Im folgenden Beispiel wird gezeigt, wie Sie einige Datensätze mit mehreren Vektoren erstellen und beim Ausführen einer Vektorsuche den gewünschten Zielvektor auswählen.

Vektorsuche mit Paginierung

Wenn Sie die Vektorsuche mit den Vektorspeicherabstraktionen durchführen, können Sie top- und skip-Parameter verwenden, um paging zu unterstützen, z. B. müssen Sie einen Dienst erstellen, der mit einer kleinen Gruppe von Ergebnissen pro Anforderung antwortet.

Warnung

Nicht alle Vektordatenbanken unterstützen systemeigene Skip-Funktionalität für Vektorsuchen, daher müssen einige Connectors möglicherweise Skip + Top-Datensätze abrufen und auf der Clientseite überspringen, um dieses Verhalten zu simulieren.

Verwenden des generischen Datenmodells im Vergleich zu einem benutzerdefinierten Datenmodell

Es ist möglich, die Vektorspeicherabstraktionen zu verwenden, ohne ein Datenmodell zu definieren und stattdessen Ihr Schema über eine Datensatzdefinition zu definieren. In diesem Beispiel wird gezeigt, wie Sie einen Vektorspeicher mit einem benutzerdefinierten Modell erstellen und mithilfe des generischen Datenmodells lesen oder umgekehrt lesen können.

Tipp

Weitere Informationen zur Verwendung des generischen Datenmodells finden Sie unter Verwendung von Vector Store-Abstraktionen, ohne ihr eigenes Datenmodell zu definieren.

Verwenden von Sammlungen, die mit Langchain erstellt und integriert wurden

Es ist möglich, mithilfe der Vector Store-Abstraktionen auf Sammlungen zuzugreifen, die mit einem anderen System erstellt und aufgenommen wurden, z. B. Langchain. Es gibt mehrere Ansätze, die befolgt werden können, um die Interoperabilität ordnungsgemäß zu gestalten. Zum Beispiel.

  1. Erstellen eines Datenmodells, das dem von der Langchain-Implementierung verwendeten Speicherschema entspricht.
  2. Verwenden einer Datensatzdefinition mit speziellen Speichereigenschaftennamen für Felder.

Im folgenden Beispiel zeigen wir, wie Sie diese Ansätze verwenden, um Langchain-kompatible Vector Store-Implementierungen zu erstellen.

Für jeden Vektorspeicher gibt es eine Factoryklasse, die zeigt, wie der langchainkompatible Vector Store erstellt wird. Siehe z.B.

End-to-End-RAG-Beispiel mit Azure AI Search Vector Store

Dieses Beispiel ist eine Reihe von zwei Skripts, die erste zeigt die Grundlagen der Einrichtung des Azure AI Search Vector Store und das zweite zeigt, wie sie ein Plug-In daraus erstellen und verwenden, um RAG auszuführen.

  1. Explication des Datenmodells und einrichten von Azure AI Search für dieses Beispiel
  2. Erstellen von Datensätzen, Hinzufügen von Vektoren und Upserting von Datensätzen in Azure AI Search
  3. Verwenden Sie dasselbe Verbindungs- und Datenmodell, um benutzerdefinierte Funktionen zu erstellen, die dann mit automatischen Funktionsaufrufen für erweiterte RAG

Einfache Datenaufnahme und Vektorsuche

Darüber hinaus gibt es ein Beispiel, in dem die Grundlagen zum Erstellen der Sammlung, zum Hinzufügen von Datensätzen, zum Schluss bei der Suche gezeigt werden, dies kann mit verschiedenen Vektorspeichern gestartet werden.

Einfache Datenaufnahme und Vektorsuche

Für einfache Beispiele, wie man Daten in einen Vektorspeicher einspeist und eine Vektorsuche durchführt, schauen Sie sich diese Beispiele an, die Azure AI Search, JDBC mit PostgreSQL, Redis und In-Memory-Vektorspeicher verwenden.