Ce tutoriel explique comment migrer des données d'une base de données vectorielle tierce vers AlloyDB pour PostgreSQL à l'aide d'un LangChain. Ce tutoriel part du principe que les données des bases de données vectorielles tierces ont été créées à l'aide d'une intégration LangChain VectorStore. Si vous saisissez des informations dans l'une des bases de données suivantes sans utiliser LangChain, vous devrez peut-être modifier les scripts fournis ci-dessous pour qu'ils correspondent au schéma de vos données. Les bases de données vectorielles suivantes sont acceptées :
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 :
- Extraire des données d'une base de données vectorielle existante
- Connectez-vous à AlloyDB.
- Initialisez la table AlloyDB.
- Initialisez un objet Vector Store.
- Exécutez le script de migration pour insérer les données.
Coûts
Dans ce document, vous utilisez les composants facturables de Google Cloudsuivants :
You might be eligible for a free trial cluster. For more information, see AlloyDB free trial clusters overview.
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, supprimez les ressources que vous avez créées pour éviter que des frais vous soient facturés. 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 LangChain tiers 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 projet Google Cloud .
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 Identity and Access Management (IAM) suivants, qui 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 ni é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 afin de stocker des embeddings vectoriels avec la classe AlloyDBVectorStore
.
Créer un cluster et un utilisateur AlloyDB
- Créez un cluster et une instance AlloyDB.
- Activez l'adresse IP publique pour exécuter ce tutoriel depuis n'importe où. Si vous utilisez une adresse IP privée, vous devez exécuter ce tutoriel depuis 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 d'autorisations de super-administrateur. - Ce tutoriel utilise l'authentification intégrée pour réduire les frictions liées à l'authentification. L'authentification IAM est possible à l'aide de AlloyDBEngine.
- 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
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Obtenez toutes les données de la base de données.
Pinecone
Récupérez les ID de vecteurs à partir de l'index Pinecone :
Récupérez ensuite 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'embedding. Ce workflow ne génère pas de nouveaux embeddings. La classe
FakeEmbeddings
est donc utilisée pour éviter tout coût.Pinecone
Weaviate
Chroma
Qdrant
Milvus
Préparez la table AlloyDB.
Connectez-vous à AlloyDB à l'aide d'une connexion par adresse IP publique. Pour en savoir plus, consultez Spécifier le type d'adresse IP.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Créez une table dans laquelle copier les données, si elle n'existe pas déjà.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Initialiser un objet de magasin de vecteurs
Ce code ajoute des métadonnées d'embedding vectoriel supplémentaires à la colonne langchain_metadata
au format JSON.
Pour filtrer plus efficacement, organisez ces métadonnées dans des colonnes distinctes.
Pour en savoir plus, consultez Créer un Vector Store personnalisé.
Pour initialiser un objet de magasin de vecteurs, exécutez la commande suivante :
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Insérez des données dans la table AlloyDB :
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Exécuter le script de migration
Installez les dépendances de l'exemple :
pip install -r requirements.txt
Exécutez la migration exemple.
Pinecone
python migrate_pinecone_vectorstore_to_alloydb.py
Avant d'exécuter l'exemple, effectuez les remplacements suivants :
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
Avant d'exécuter l'exemple, effectuez les remplacements suivants :
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
Avant d'exécuter l'exemple, effectuez les remplacements suivants :
CHROMADB_PATH
: chemin d'accès à la base de données Chroma.CHROMADB_COLLECTION_NAME
: nom de la collection de 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
Avant d'exécuter l'exemple, effectuez les remplacements suivants :
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
Avant d'exécuter l'exemple, effectuez les remplacements suivants :
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.
Si la migration réussit, des journaux semblables à ceux ci-dessous 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 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 Réseau de la console Google Cloud , puis cliquez sur Supprimer le réseau VPC.
Étapes suivantes
- Faites vos premiers pas avec les embeddings vectoriels à l'aide d'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èles.