In dieser Anleitung wird beschrieben, wie Sie Daten mithilfe von LangChain-Vektorspeichern aus einer Drittanbieter-Vektordatenbank zu AlloyDB for PostgreSQL migrieren. Folgende Vektordatenbanken werden unterstützt:
In dieser Anleitung wird davon ausgegangen, dass Sie mit Google Cloud, AlloyDB und der asynchronen Python-Programmierung vertraut sind.
Lernziele
In dieser Anleitung wird Folgendes beschrieben:
- Daten aus einer vorhandenen Vektordatenbank extrahieren
- Stellen Sie eine Verbindung zu AlloyDB her.
- Initialisieren Sie die AlloyDB-Tabelle.
- Initialisieren Sie ein Vector Store-Objekt.
- Führen Sie das Migrationsskript aus, um die Daten einzufügen.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen.
Nach Abschluss der in diesem Dokument beschriebenen Aufgaben können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.
Hinweis
Sie benötigen einen der folgenden LangChain-Vektorspeicher von Drittanbietern:
Abrechnung und erforderliche APIs aktivieren
Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl einGoogle Cloud -Projekt aus oder erstellen Sie eines.
Die Abrechnung für Ihr Google Cloud Projekt muss aktiviert sein.
Aktivieren Sie die Cloud APIs, die zum Erstellen von AlloyDB for PostgreSQL und zum Herstellen einer Verbindung zu dieser Instanz erforderlich sind.
- Klicken Sie im Schritt Projekt bestätigen auf Weiter, um den Namen des Projekts zu bestätigen, an dem Sie Änderungen vornehmen möchten.
Klicken Sie im Schritt APIs aktivieren auf Aktivieren, um Folgendes zu aktivieren:
- AlloyDB API
- Compute Engine API
- Service Networking API
Erforderliche Rollen
Sie benötigen die folgenden IAM-Rollen (Identity and Access Management), um die Aufgaben in dieser Anleitung ausführen zu können. Sie ermöglichen das Erstellen von Tabellen und das Einfügen von Daten:
- Inhaber (
roles/owner
) oder Mitbearbeiter (roles/editor
) Wenn der Nutzer kein Inhaber oder Bearbeiter ist, sind die folgenden IAM-Rollen und PostgreSQL-Berechtigungen erforderlich:
- AlloyDB-Instanz-Client (
roles/alloydb.client
) - Cloud AlloyDB-Administrator (
roles/alloydb.admin
) - Compute-Netzwerknutzer (
roles/compute.networkUser
)
- AlloyDB-Instanz-Client (
Wenn Sie sich mit der IAM-Authentifizierung an Ihrer Datenbank authentifizieren möchten, anstatt die integrierte Authentifizierung in dieser Anleitung zu verwenden, verwenden Sie das Notebook, in dem gezeigt wird, wie Sie mit AlloyDB for PostgreSQL Vektor-Embeddings mit der Klasse AlloyDBVectorStore
speichern.
AlloyDB-Cluster und ‑Nutzer erstellen
- Erstellen Sie einen AlloyDB-Cluster und eine Instanz.
- Aktivieren Sie die öffentliche IP-Adresse, um diese Anleitung von überall aus ausführen zu können. Wenn Sie private IP-Adressen verwenden, müssen Sie diese Anleitung in Ihrer VPC ausführen.
- Erstellen oder wählen Sie einen AlloyDB-Datenbanknutzer aus.
- Wenn Sie die Instanz erstellen, wird ein
postgres
-Nutzer mit einem Passwort erstellt. Dieser Nutzer hat Superuser-Berechtigungen. - In dieser Anleitung wird die integrierte Authentifizierung verwendet, um den Authentifizierungsaufwand zu reduzieren. Die IAM-Authentifizierung ist mit der AlloyDBEngine möglich.
- Wenn Sie die Instanz erstellen, wird ein
Codebeispiel abrufen
Kopieren Sie das Codebeispiel aus GitHub, indem Sie das Repository klonen:
git clone https://github.com/googleapis/langchain-google-alloydb-pg-python.git
Rufen Sie das Verzeichnis
migrations
auf:cd langchain-google-alloydb-pg-python/samples/migrations
Daten aus einer vorhandenen Vektordatenbank extrahieren
Client erstellen.
Kiefernzapfen
Weaviate
Chroma
Qdrant
Milvus
Alle Daten aus der Datenbank abrufen
Kiefernzapfen
Vektor-IDs aus dem Pinecone-Index abrufen:
Anschließend können Sie Einträge nach ID aus dem Pinecone-Index abrufen:
Weaviate
Chroma
Qdrant
Milvus
AlloyDB-Tabelle initialisieren
Definiere den Einbettungsservice.
Für die VectorStore-Benutzeroberfläche ist ein Einbettungsservice erforderlich. Bei diesem Workflow werden keine neuen Einbettungen generiert. Daher wird die Klasse
FakeEmbeddings
verwendet, um Kosten zu vermeiden.Kiefernzapfen
Weaviate
Chroma
Qdrant
Milvus
Bereiten Sie die AlloyDB-Tabelle vor.
Stellen Sie eine Verbindung zu AlloyDB über eine öffentliche IP-Adresse her. Weitere Informationen finden Sie unter IP-Adresstyp angeben.
Kiefernzapfen
Weaviate
Chroma
Qdrant
Milvus
Erstellen Sie eine Tabelle, in die Daten kopiert werden sollen, falls sie noch nicht vorhanden ist.
Kiefernzapfen
Weaviate
Chroma
Qdrant
Milvus
Vektorspeicherobjekt initialisieren
Mit diesem Code werden der Spalte langchain_metadata
zusätzliche Metadaten für die Vektor-Embeddings im JSON-Format hinzugefügt.
Für eine effizientere Filterung sollten Sie diese Metadaten in separaten Spalten organisieren.
Weitere Informationen finden Sie unter Benutzerdefinierten Vektor-Shop erstellen.
Führen Sie den folgenden Befehl aus, um ein Vector Store-Objekt zu initialisieren:
Kiefernzapfen
Weaviate
Chroma
Qdrant
Milvus
Fügen Sie Daten in die AlloyDB-Tabelle ein:
Kiefernzapfen
Weaviate
Chroma
Qdrant
Milvus
Migrationsskript ausführen
Installieren Sie die Beispielabhängigkeiten:
pip install -r requirements.txt
Beispielmigration ausführen
Kiefernzapfen
python migrate_pinecone_vectorstore_to_alloydb.py
Ersetzen Sie vor dem Ausführen des Beispiels die folgenden Werte:
PINECONE_API_KEY
: den Pinecone API-Schlüssel.PINECONE_NAMESPACE
: den Pinecone-Namespace.PINECONE_INDEX_NAME
: Der Name des Pinecone-Index.PROJECT_ID
: Projekt-ID.REGION
: die Region, in der der AlloyDB-Cluster bereitgestellt wird.CLUSTER
ist der Name des Clusters.INSTANCE
: der Name der Instanz.DB_NAME
: der Name der DatenbankDB_USER
: der Name des DatenbanknutzersDB_PWD
: das geheime Passwort für die Datenbank.
Weaviate
python migrate_weaviate_vectorstore_to_alloydb.py
Ersetzen Sie vor dem Ausführen des Beispiels die folgenden Werte:
WEAVIATE_API_KEY
: den Weaviate API-Schlüssel.WEAVIATE_CLUSTER_URL
: die Weaviate-Cluster-URL.WEAVIATE_COLLECTION_NAME
: der Name der Weaviate-Sammlung.PROJECT_ID
: Projekt-ID.REGION
: die Region, in der der AlloyDB-Cluster bereitgestellt wird.CLUSTER
ist der Name des Clusters.INSTANCE
: der Name der Instanz.DB_NAME
: der Name der DatenbankDB_USER
: der Name des DatenbanknutzersDB_PWD
: das geheime Passwort für die Datenbank.
Chroma
python migrate_chromadb_vectorstore_to_alloydb.py
Ersetzen Sie vor dem Ausführen des Beispiels die folgenden Werte:
CHROMADB_PATH
: Der Pfad zur Chroma-Datenbank.CHROMADB_COLLECTION_NAME
: Der Name der Chroma-Datenbanksammlung.PROJECT_ID
: Projekt-ID.REGION
: die Region, in der der AlloyDB-Cluster bereitgestellt wird.CLUSTER
ist der Name des Clusters.INSTANCE
: der Name der Instanz.DB_NAME
: der Name der DatenbankDB_USER
: der Name des DatenbanknutzersDB_PWD
: das geheime Passwort für die Datenbank.
Qdrant
python migrate_qdrant_vectorstore_to_alloydb.py
Ersetzen Sie vor dem Ausführen des Beispiels die folgenden Werte:
QDRANT_PATH
: der Pfad zur Qdrant-Datenbank.QDRANT_COLLECTION_NAME
: der Name der Qdrant-Sammlung.PROJECT_ID
: Projekt-ID.REGION
: die Region, in der der AlloyDB-Cluster bereitgestellt wird.CLUSTER
ist der Name des Clusters.INSTANCE
: der Name der Instanz.DB_NAME
: der Name der DatenbankDB_USER
: der Name des DatenbanknutzersDB_PWD
: das geheime Passwort für die Datenbank.
Milvus
python migrate_milvus_vectorstore_to_alloydb.py
Ersetzen Sie vor dem Ausführen des Beispiels die folgenden Werte:
MILVUS_URI
: den Milvus-URI.MILVUS_COLLECTION_NAME
: Der Name der Milvus-Sammlung.PROJECT_ID
: Projekt-ID.REGION
: die Region, in der der AlloyDB-Cluster bereitgestellt wird.CLUSTER
ist der Name des Clusters.INSTANCE
: der Name der Instanz.DB_NAME
: der Name der DatenbankDB_USER
: der Name des DatenbanknutzersDB_PWD
: das geheime Passwort für die Datenbank.
Bei einer erfolgreichen Migration werden Protokolle wie die folgenden ohne Fehler ausgegeben:
Migration completed, inserted all the batches of data to AlloyDB
Öffnen Sie AlloyDB Studio, um die migrierten Daten aufzurufen. Weitere Informationen finden Sie unter Daten mit AlloyDB Studio verwalten.
Bereinigen
Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder Sie behalten das Projekt und löschen die einzelnen Ressourcen.
Rufen Sie in der Google Cloud Console die Seite Cluster auf.
Klicken Sie in der Spalte Ressourcenname auf den Namen des Clusters, den Sie erstellt haben.
Klicken Sie auf delete Cluster löschen.
Geben Sie unter Cluster löschen den Namen Ihres Clusters ein, um zu bestätigen, dass Sie ihn löschen möchten.
Klicken Sie auf Löschen.
Wenn Sie beim Erstellen eines Clusters eine private Verbindung erstellt haben, löschen Sie sie:
Rufen Sie in der Google Cloud Console die Seite „Networking“ auf und klicken Sie auf VPC-Netzwerk löschen.
Nächste Schritte
- Erste Schritte mit Vektoreinbettungen mit AlloyDB AI
- Weitere Informationen zum Erstellen generativer KI-Anwendungen mit AlloyDB AI
- Erstellen Sie einen ScaNN-Index.
- Stimmen Sie Ihre ScaNN-Indexe ab.
- Informationen zum Erstellen eines intelligenten Shopping-Assistenten mit AlloyDB, pgvector und der Modellendpunktverwaltung