In dieser Anleitung wird beschrieben, wie Sie Daten aus einer Vektordatenbank eines Drittanbieters mit einem LangChain-VectorStore zu AlloyDB for PostgreSQL migrieren. In dieser Anleitung wird davon ausgegangen, dass die Daten in Vektordatenbanken von Drittanbietern mit einer LangChain VectorStore-Integration erstellt wurden. Wenn Sie Informationen in eine der folgenden Datenbanken einfügen, ohne LangChain zu verwenden, müssen Sie die unten angegebenen Skripts möglicherweise an das Schema Ihrer Daten anpassen. Die folgenden 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
- Verbindung zu AlloyDB herstellen
- Initialisieren Sie die AlloyDB-Tabelle.
- Initialisieren Sie ein Vektorspeicherobjekt.
- Führen Sie das Migrationsskript aus, um die Daten einzufügen.
Kosten
In diesem Dokument verwenden Sie die folgenden kostenpflichtigen Komponenten von Google Cloud:
You might be eligible for a free trial cluster. For more information, see AlloyDB free trial clusters overview.
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.
Hinweise
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 für die 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 einer Verbindung zu AlloyDB for PostgreSQL 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
Um die Aufgaben in dieser Anleitung ausführen zu können, benötigen Sie die folgenden IAM-Rollen (Identity and Access Management), mit denen Sie Tabellen erstellen und Daten einfügen können:
- Inhaber (
roles/owner
) oder Bearbeiter (roles/editor
) Wenn der Nutzer kein Inhaber oder Bearbeiter ist, sind die folgenden IAM-Rollen und PostgreSQL-Berechtigungen erforderlich:
- AlloyDB-Instanzclient (
roles/alloydb.client
) - Cloud AlloyDB-Administrator (
roles/alloydb.admin
) - Compute-Netzwerknutzer (
roles/compute.networkUser
)
- AlloyDB-Instanzclient (
Wenn Sie sich mit der IAM-Authentifizierung anstelle der in dieser Anleitung beschriebenen integrierten Authentifizierung bei Ihrer Datenbank authentifizieren möchten, verwenden Sie das Notebook, in dem beschrieben wird, wie Sie AlloyDB for PostgreSQL zum Speichern von Vektoreinbettungen mit der Klasse AlloyDBVectorStore
verwenden.
AlloyDB-Cluster und -Nutzer erstellen
- AlloyDB-Cluster und ‑Instanz erstellen
- Aktivieren Sie die öffentliche IP-Adresse, damit Sie dieses Tutorial von überall aus durchführen können. Wenn Sie private IP-Adressen verwenden, müssen Sie diese Anleitung in Ihrer VPC ausführen.
- AlloyDB-Datenbanknutzer erstellen oder auswählen
- 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.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Alle Daten aus der Datenbank abrufen.
Pinecone
Vektor-IDs aus dem Pinecone-Index abrufen:
Rufen Sie dann Datensätze anhand der ID aus dem Pinecone-Index ab:
Weaviate
Chroma
Qdrant
Milvus
AlloyDB-Tabelle initialisieren
Einen Einbettungsdienst definieren
Für die VectorStore-Schnittstelle ist ein Einbettungsdienst erforderlich. In diesem Workflow werden keine neuen Einbettungen generiert. Daher wird die Klasse
FakeEmbeddings
verwendet, um Kosten zu vermeiden.Pinecone
Weaviate
Chroma
Qdrant
Milvus
AlloyDB-Tabelle vorbereiten
Verbindung zu AlloyDB über eine öffentliche IP-Adresse herstellen Weitere Informationen finden Sie unter IP-Adresstyp angeben.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Erstellen Sie eine Tabelle, in die die Daten kopiert werden sollen, falls sie noch nicht vorhanden ist.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Vektorspeicherobjekt initialisieren
Mit diesem Code werden der Spalte langchain_metadata
zusätzliche Metadaten für die Vektoreinbettung im JSON-Format hinzugefügt.
Um das Filtern effizienter zu gestalten, sollten Sie diese Metadaten in separaten Spalten organisieren.
Weitere Informationen finden Sie unter Benutzerdefinierten Vektorspeicher erstellen.
Führen Sie den folgenden Befehl aus, um ein Vektorspeicherobjekt zu initialisieren:
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Fügen Sie Daten in die AlloyDB-Tabelle ein:
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Migrationsskript ausführen
Installieren Sie die Beispielabhängigkeiten:
pip install -r requirements.txt
Führen Sie die Beispielmigration aus.
Pinecone
python migrate_pinecone_vectorstore_to_alloydb.py
Nehmen Sie die folgenden Änderungen vor, bevor Sie das Beispiel ausführen:
PINECONE_API_KEY
: Der Pinecone-API-Schlüssel.PINECONE_NAMESPACE
: der 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 Secret-Passwort für die Datenbank.
Weaviate
python migrate_weaviate_vectorstore_to_alloydb.py
Nehmen Sie die folgenden Änderungen vor, bevor Sie das Beispiel ausführen:
WEAVIATE_API_KEY
: Der 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 Secret-Passwort für die Datenbank.
Chroma
python migrate_chromadb_vectorstore_to_alloydb.py
Nehmen Sie die folgenden Änderungen vor, bevor Sie das Beispiel ausführen:
CHROMADB_PATH
: Der Chroma-Datenbankpfad.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 Secret-Passwort für die Datenbank.
Qdrant
python migrate_qdrant_vectorstore_to_alloydb.py
Nehmen Sie die folgenden Änderungen vor, bevor Sie das Beispiel ausführen:
QDRANT_PATH
: Der Qdrant-Datenbankpfad.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 Secret-Passwort für die Datenbank.
Milvus
python migrate_milvus_vectorstore_to_alloydb.py
Nehmen Sie die folgenden Änderungen vor, bevor Sie das Beispiel ausführen:
MILVUS_URI
: Der 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 Secret-Passwort für die Datenbank.
Bei einer erfolgreichen Migration werden Protokolle ähnlich den folgenden ohne Fehler ausgegeben:
Migration completed, inserted all the batches of data to AlloyDB
Öffnen Sie AlloyDB Studio, um Ihre migrierten Daten anzusehen. 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 des 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 „Netzwerk“ auf und klicken Sie auf VPC-Netzwerk löschen.