Ce tutoriel explique comment migrer des données d'une base de données vectorielle tierce vers AlloyDB pour PostgreSQL à l'aide de magasins de vecteurs LangChain. Les bases de données vectorielles suivantes sont compatibles:
Dans ce tutoriel, nous partons du principe que vous connaissez Google Cloud, AlloyDB et la programmation Python asynchrone.
Objectifs
Ce tutoriel vous explique comment effectuer les tâches suivantes :
- Extrayez des données à partir d'une base de données vectorielle existante.
- Connectez-vous à AlloyDB.
- Initialisez la table AlloyDB.
- Initialisez un objet de magasin de vecteurs.
- Exécutez le script de migration pour insérer les données.
Coûts
Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût.
Une fois que vous avez terminé les tâches décrites dans ce document, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir plus, consultez la section Effectuer un nettoyage.
Avant de commencer
Assurez-vous de disposer de l'un des magasins de vecteurs de base de données tiers LangChain suivants:
Activer la facturation et les API requises
Dans la console Google Cloud, sur la page de sélection du projet, sélectionnez ou créez un projetGoogle Cloud .
Assurez-vous que la facturation est activée pour votre Google Cloud projet.
Activez les APIs Cloud nécessaires pour créer et vous connecter à AlloyDB pour PostgreSQL.
- À l'étape Confirmer le projet, cliquez sur Suivant pour confirmer le nom du projet que vous allez modifier.
À l'étape Activer les API, cliquez sur Activer pour activer les éléments suivants:
- API AlloyDB
- API Compute Engine
- API Service Networking
Rôles requis
Pour obtenir les autorisations nécessaires pour effectuer les tâches de ce tutoriel, vous devez disposer des rôles IAM (Identity and Access Management) suivants, qui vous permettent de créer des tables et d'insérer des données:
- Propriétaire (
roles/owner
) ou éditeur (roles/editor
) Si l'utilisateur n'est pas propriétaire ou éditeur, les rôles IAM et les droits PostgreSQL suivants sont requis:
- Client d'instance AlloyDB (
roles/alloydb.client
) - Administrateur Cloud AlloyDB (
roles/alloydb.admin
) - Utilisateur de réseau Compute (
roles/compute.networkUser
)
- Client d'instance AlloyDB (
Si vous souhaitez vous authentifier auprès de votre base de données à l'aide de l'authentification IAM au lieu d'utiliser l'authentification intégrée dans ce tutoriel, utilisez le notebook qui explique comment utiliser AlloyDB pour PostgreSQL pour stocker des représentations vectorielles continues avec la classe AlloyDBVectorStore
.
Créer un cluster et un utilisateur AlloyDB
- Créez un cluster AlloyDB et une instance.
- Activez les adresses IP publiques pour exécuter ce tutoriel partout. Si vous utilisez une adresse IP privée, vous devez exécuter ce tutoriel à partir de votre VPC.
- Créez ou sélectionnez un utilisateur de base de données AlloyDB.
- Lorsque vous créez l'instance, un utilisateur
postgres
est créé avec un mot de passe. Cet utilisateur dispose des autorisations de super-utilisateur. - Ce tutoriel utilise l'authentification intégrée pour réduire les frictions d'authentification. L'authentification IAM est possible à l'aide du moteur AlloyDB.
- Lorsque vous créez l'instance, un utilisateur
Récupérer l'exemple de code
Copiez l'exemple de code depuis GitHub en clonant le dépôt:
git clone https://github.com/googleapis/langchain-google-alloydb-pg-python.git
Accédez au répertoire
migrations
:cd langchain-google-alloydb-pg-python/samples/migrations
Extraire des données d'une base de données vectorielle existante
Créer un client
Pomme de pin
Weaviate
Chroma
Qdrant
Milvus
Récupérez toutes les données de la base de données.
Pomme de pin
Récupérez les ID de vecteurs à partir de l'index Pinecone:
Puis récupérez les enregistrements par ID à partir de l'index Pinecone:
Weaviate
Chroma
Qdrant
Milvus
Initialiser la table AlloyDB
Définissez le service d'embedding.
L'interface VectorStore nécessite un service d'intégration. Ce workflow ne génère pas de nouveaux embeddings. La classe
FakeEmbeddings
est donc utilisée pour éviter tout coût.Pomme de pin
Weaviate
Chroma
Qdrant
Milvus
Préparer la table AlloyDB
Connectez-vous à AlloyDB à l'aide d'une connexion par adresse IP publique. Pour en savoir plus, consultez la section Spécifier le type d'adresse IP.
Pomme de pin
Weaviate
Chroma
Qdrant
Milvus
Créez une table dans laquelle copier les données, si elle n'existe pas déjà.
Pomme de pin
Weaviate
Chroma
Qdrant
Milvus
Initialiser un objet de magasin de vecteurs
Ce code ajoute des métadonnées d'encapsulation vectorielle supplémentaires à la colonne langchain_metadata
au format JSON.
Pour optimiser le filtrage, organisez ces métadonnées dans des colonnes distinctes.
Pour en savoir plus, consultez Créer un dépôt de vecteurs personnalisé.
Pour initialiser un objet de magasin de vecteurs, exécutez la commande suivante:
Pomme de pin
Weaviate
Chroma
Qdrant
Milvus
Insérez des données dans la table AlloyDB:
Pomme de pin
Weaviate
Chroma
Qdrant
Milvus
Exécuter le script de migration
Installez les dépendances de l'exemple:
pip install -r requirements.txt
Exécutez l'exemple de migration.
Pomme de pin
python migrate_pinecone_vectorstore_to_alloydb.py
Effectuez les remplacements suivants avant d'exécuter l'exemple:
PINECONE_API_KEY
: clé API Pinecone.PINECONE_NAMESPACE
: espace de noms Pinecone.PINECONE_INDEX_NAME
: nom de l'index Pinecone.PROJECT_ID
: ID du projet.REGION
: région dans laquelle le cluster AlloyDB est déployé.CLUSTER
: nom du cluster.INSTANCE
: nom de l'instance.DB_NAME
: nom de la base de données.DB_USER
: nom de l'utilisateur de la base de données.DB_PWD
: mot de passe secret de la base de données.
Weaviate
python migrate_weaviate_vectorstore_to_alloydb.py
Effectuez les remplacements suivants avant d'exécuter l'exemple:
WEAVIATE_API_KEY
: clé API Weaviate.WEAVIATE_CLUSTER_URL
: URL du cluster Weaviate.WEAVIATE_COLLECTION_NAME
: nom de la collection Weaviate.PROJECT_ID
: ID du projet.REGION
: région dans laquelle le cluster AlloyDB est déployé.CLUSTER
: nom du cluster.INSTANCE
: nom de l'instance.DB_NAME
: nom de la base de données.DB_USER
: nom de l'utilisateur de la base de données.DB_PWD
: mot de passe secret de la base de données.
Chroma
python migrate_chromadb_vectorstore_to_alloydb.py
Effectuez les remplacements suivants avant d'exécuter l'exemple:
CHROMADB_PATH
: chemin d'accès à la base de données Chroma.CHROMADB_COLLECTION_NAME
: nom de la collection de la base de données Chroma.PROJECT_ID
: ID du projet.REGION
: région dans laquelle le cluster AlloyDB est déployé.CLUSTER
: nom du cluster.INSTANCE
: nom de l'instance.DB_NAME
: nom de la base de données.DB_USER
: nom de l'utilisateur de la base de données.DB_PWD
: mot de passe secret de la base de données.
Qdrant
python migrate_qdrant_vectorstore_to_alloydb.py
Effectuez les remplacements suivants avant d'exécuter l'exemple:
QDRANT_PATH
: chemin d'accès à la base de données Qdrant.QDRANT_COLLECTION_NAME
: nom de la collection Qdrant.PROJECT_ID
: ID du projet.REGION
: région dans laquelle le cluster AlloyDB est déployé.CLUSTER
: nom du cluster.INSTANCE
: nom de l'instance.DB_NAME
: nom de la base de données.DB_USER
: nom de l'utilisateur de la base de données.DB_PWD
: mot de passe secret de la base de données.
Milvus
python migrate_milvus_vectorstore_to_alloydb.py
Effectuez les remplacements suivants avant d'exécuter l'exemple:
MILVUS_URI
: URI Milvus.MILVUS_COLLECTION_NAME
: nom de la collection Milvus.PROJECT_ID
: ID du projet.REGION
: région dans laquelle le cluster AlloyDB est déployé.CLUSTER
: nom du cluster.INSTANCE
: nom de l'instance.DB_NAME
: nom de la base de données.DB_USER
: nom de l'utilisateur de la base de données.DB_PWD
: mot de passe secret de la base de données.
En cas de migration réussie, des journaux semblables à ceux-ci s'affichent sans erreur:
Migration completed, inserted all the batches of data to AlloyDB
Ouvrez AlloyDB Studio pour afficher vos données migrées. Pour en savoir plus, consultez la section Gérer vos données à l'aide d'AlloyDB Studio.
Effectuer un nettoyage
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Dans la console Google Cloud, accédez à la page Clusters.
Dans la colonne Nom de la ressource, cliquez sur le nom du cluster que vous avez créé.
Cliquez sur delete Supprimer le cluster.
Dans Supprimer le cluster, saisissez le nom de votre cluster pour confirmer que vous souhaitez le supprimer.
Cliquez sur Supprimer.
Si vous avez créé une connexion privée lorsque vous avez créé un cluster, supprimez-la:
Accédez à la page Networking (Réseaux) de la console Google Cloud, puis cliquez sur Delete VPC network (Supprimer le réseau VPC).
Étape suivante
- Découvrez les embeddings vectoriels avec AlloyDB AI.
- Découvrez comment créer des applications d'IA générative à l'aide d'AlloyDB AI.
- Créez un index ScaNN.
- Ajustez vos index ScaNN.
- Découvrez comment créer un assistant d'achat intelligent avec AlloyDB, pgvector et la gestion des points de terminaison de modèle.