En este tutorial se describe cómo migrar datos de una base de datos de vectores de terceros a AlloyDB para PostgreSQL mediante un VectorStore de LangChain. En este tutorial se da por hecho que los datos de las bases de datos de vectores de terceros se han creado mediante una integración de VectorStore de LangChain. Si introduces información en una de las siguientes bases de datos sin usar LangChain, es posible que tengas que editar las secuencias de comandos que se proporcionan a continuación para que coincidan con el esquema de tus datos. Se admiten las siguientes bases de datos vectoriales:
En este tutorial se da por supuesto que tienes conocimientos sobre Google CloudAlloyDB y programación asíncrona en Python.
Objetivos
En este tutorial te explicamos cómo hacer lo siguiente:
- Extraer datos de una base de datos vectorial.
- Conéctate a AlloyDB.
- Inicializa la tabla de AlloyDB.
- Inicializa un objeto de almacén vectorial.
- Ejecuta la secuencia de comandos de migración para insertar los datos.
Costes
En este documento, se utilizan los siguientes componentes facturables de Google Cloud:
You might be eligible for a free trial cluster. For more information, see AlloyDB free trial clusters overview.
Para generar una estimación de costes basada en el uso previsto,
utiliza la calculadora de precios.
Cuando termines las tareas que se describen en este documento, puedes evitar que se te siga facturando eliminando los recursos que has creado. Para obtener más información, consulta la sección Limpiar.
Antes de empezar
Asegúrate de que tienes uno de los siguientes almacenes de vectores de bases de datos de terceros de LangChain:
Habilitar la facturación y las APIs necesarias
En la Google Cloud consolaGoogle Cloud , en la página del selector de proyectos, selecciona o crea un proyecto.
Asegúrate de que la facturación esté habilitada en tu Google Cloud proyecto.
Habilita las APIs de Cloud necesarias para crear una instancia de AlloyDB para PostgreSQL y conectarte a ella.
- En el paso Confirmar proyecto, haz clic en Siguiente para confirmar el nombre del proyecto que vas a modificar.
En el paso Habilitar APIs, haz clic en Habilitar para habilitar lo siguiente:
- API de AlloyDB
- API de Compute Engine
- API Service Networking
Roles obligatorios
Para obtener los permisos que necesitas para completar las tareas de este tutorial, debes tener los siguientes roles de gestión de identidades y accesos (IAM), que permiten crear tablas e insertar datos:
- Propietario (
roles/owner
) o editor (roles/editor
) Si el usuario no es propietario ni editor, debe tener los siguientes roles de gestión de identidades y accesos y privilegios de PostgreSQL:
- Cliente de instancia de AlloyDB (
roles/alloydb.client
) - Administrador de AlloyDB en Cloud (
roles/alloydb.admin
) - Usuario de red de Compute (
roles/compute.networkUser
)
- Cliente de instancia de AlloyDB (
Si quieres autenticarte en tu base de datos mediante la autenticación de IAM en lugar de usar la autenticación integrada de este tutorial, utiliza el cuaderno que muestra cómo usar AlloyDB para PostgreSQL para almacenar inserciones de vectores con la clase AlloyDBVectorStore
.
Crear un clúster y un usuario de AlloyDB
- Crea un clúster y una instancia de AlloyDB.
- Habilita la IP pública para ejecutar este tutorial desde cualquier lugar. Si usas una IP privada, debes seguir este tutorial desde tu VPC.
- Crea o selecciona un usuario de base de datos de AlloyDB.
- Cuando creas la instancia, se crea un usuario
postgres
con una contraseña. Este usuario tiene permisos de superusuario. - En este tutorial se usa la autenticación integrada para reducir la fricción de autenticación. La autenticación de IAM es posible con AlloyDBEngine.
- Cuando creas la instancia, se crea un usuario
Obtener el código de ejemplo
Copia el código de ejemplo de GitHub clonando el repositorio:
git clone https://github.com/googleapis/langchain-google-alloydb-pg-python.git
Ve al directorio
migrations
:cd langchain-google-alloydb-pg-python/samples/migrations
Extraer datos de una base de datos de vectores
Crea un cliente.
Pinecone
Weaviate
Croma
Qdrant
Milvus
Obtiene todos los datos de la base de datos.
Pinecone
Recupera los IDs de los vectores del índice de Pinecone:
A continuación, obtén los registros por ID del índice de Pinecone:
Weaviate
Croma
Qdrant
Milvus
Inicializar la tabla de AlloyDB
Define el servicio de inserción.
La interfaz VectorStore requiere un servicio de inserción. Este flujo de trabajo no genera nuevas inserciones, por lo que se usa la clase
FakeEmbeddings
para evitar costes.Pinecone
Weaviate
Croma
Qdrant
Milvus
Prepara la tabla de AlloyDB.
Conéctate a AlloyDB mediante una conexión de IP pública. Para obtener más información, consulta Especificar el tipo de dirección IP.
Pinecone
Weaviate
Croma
Qdrant
Milvus
Crea una tabla en la que copiar los datos, si aún no existe.
Pinecone
Weaviate
Croma
Qdrant
Milvus
Inicializar un objeto de almacén vectorial
Este código añade metadatos de inserción de vector adicionales a la columna langchain_metadata
en formato JSON.
Para que el filtrado sea más eficiente, organiza estos metadatos en columnas independientes.
Para obtener más información, consulta Crear un almacén de vectores personalizado.
Para inicializar un objeto de almacén de vectores, ejecuta el siguiente comando:
Pinecone
Weaviate
Croma
Qdrant
Milvus
Inserta datos en la tabla de AlloyDB:
Pinecone
Weaviate
Croma
Qdrant
Milvus
Ejecutar la secuencia de comandos de migración
Instala las dependencias de ejemplo:
pip install -r requirements.txt
Ejecuta la migración de ejemplo.
Pinecone
python migrate_pinecone_vectorstore_to_alloydb.py
Haz las siguientes sustituciones antes de ejecutar el ejemplo:
PINECONE_API_KEY
: la clave de API de Pinecone.PINECONE_NAMESPACE
: el espacio de nombres de Pinecone.PINECONE_INDEX_NAME
: el nombre del índice de Pinecone.PROJECT_ID
: el ID del proyecto.REGION
: la región en la que se ha desplegado el clúster de AlloyDB.CLUSTER
: el nombre del clúster.INSTANCE
: el nombre de la instancia.DB_NAME
: el nombre de la base de datos.DB_USER
: el nombre del usuario de la base de datos.DB_PWD
: la contraseña secreta de la base de datos.
Weaviate
python migrate_weaviate_vectorstore_to_alloydb.py
Haz las siguientes sustituciones antes de ejecutar el ejemplo:
WEAVIATE_API_KEY
: la clave de API de Weaviate.WEAVIATE_CLUSTER_URL
: URL del clúster de Weaviate.WEAVIATE_COLLECTION_NAME
: el nombre de la colección de Weaviate.PROJECT_ID
: el ID del proyecto.REGION
: la región en la que se ha desplegado el clúster de AlloyDB.CLUSTER
: el nombre del clúster.INSTANCE
: el nombre de la instancia.DB_NAME
: el nombre de la base de datos.DB_USER
: el nombre del usuario de la base de datos.DB_PWD
: la contraseña secreta de la base de datos.
Croma
python migrate_chromadb_vectorstore_to_alloydb.py
Haz las siguientes sustituciones antes de ejecutar el ejemplo:
CHROMADB_PATH
: la ruta de la base de datos de Chroma.CHROMADB_COLLECTION_NAME
: el nombre de la colección de la base de datos de Chroma.PROJECT_ID
: el ID del proyecto.REGION
: la región en la que se ha desplegado el clúster de AlloyDB.CLUSTER
: el nombre del clúster.INSTANCE
: el nombre de la instancia.DB_NAME
: el nombre de la base de datos.DB_USER
: el nombre del usuario de la base de datos.DB_PWD
: la contraseña secreta de la base de datos.
Qdrant
python migrate_qdrant_vectorstore_to_alloydb.py
Haz las siguientes sustituciones antes de ejecutar el ejemplo:
QDRANT_PATH
: la ruta de la base de datos de Qdrant.QDRANT_COLLECTION_NAME
: el nombre de la colección de Qdrant.PROJECT_ID
: el ID del proyecto.REGION
: la región en la que se ha desplegado el clúster de AlloyDB.CLUSTER
: el nombre del clúster.INSTANCE
: el nombre de la instancia.DB_NAME
: el nombre de la base de datos.DB_USER
: el nombre del usuario de la base de datos.DB_PWD
: la contraseña secreta de la base de datos.
Milvus
python migrate_milvus_vectorstore_to_alloydb.py
Haz las siguientes sustituciones antes de ejecutar el ejemplo:
MILVUS_URI
: el URI de Milvus.MILVUS_COLLECTION_NAME
: el nombre de la colección de Milvus.PROJECT_ID
: el ID del proyecto.REGION
: la región en la que se ha desplegado el clúster de AlloyDB.CLUSTER
: el nombre del clúster.INSTANCE
: el nombre de la instancia.DB_NAME
: el nombre de la base de datos.DB_USER
: el nombre del usuario de la base de datos.DB_PWD
: la contraseña secreta de la base de datos.
Si la migración se realiza correctamente, se mostrarán registros similares a los siguientes sin errores:
Migration completed, inserted all the batches of data to AlloyDB
Abre AlloyDB Studio para ver los datos migrados. Para obtener más información, consulta Gestionar tus datos con AlloyDB Studio.
Limpieza
Para evitar que los recursos utilizados en este tutorial se cobren en tu cuenta de Google Cloud, elimina el proyecto que contiene los recursos o conserva el proyecto y elimina los recursos.
En la Google Cloud consola, ve a la página Clusters.
En la columna Nombre del recurso, haz clic en el nombre del clúster que has creado.
Haz clic en delete Eliminar clúster.
En Eliminar clúster, introduce el nombre del clúster para confirmar que quieres eliminarlo.
Haz clic en Eliminar.
Si has creado una conexión privada al crear un clúster, elimina la conexión privada:
Ve a la Google Cloud consola página Redes y haz clic en Eliminar red de VPC.