En este instructivo, se describe cómo migrar datos de una base de datos vectorial de terceros a AlloyDB para PostgreSQL con los almacenes de vectores de LangChain. Se admiten las siguientes bases de datos vectoriales:
En este instructivo, se da por sentado que conoces Google Cloud, AlloyDB y la programación asíncrona de Python.
Objetivos
En este instructivo, se muestra cómo realizar lo siguiente:
- Extraer datos de una base de datos de vectores existente
- Conéctate a AlloyDB.
- Inicializa la tabla de AlloyDB.
- Inicializa un objeto de tienda de vectores.
- Ejecuta la secuencia de comandos de migración para insertar los datos.
Costos
En este documento, usarás los siguientes componentes facturables de Google Cloud:
Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios.
Cuando finalices las tareas que se describen en este documento, puedes borrar los recursos que creaste para evitar que continúe la facturación. Para obtener más información, consulta Cómo realizar una limpieza.
Antes de comenzar
Asegúrate de tener uno de los siguientes almacenes de vectores de bases de datos de terceros de LangChain:
Habilita la facturación y las APIs necesarias
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto deGoogle Cloud .
Asegúrate de tener habilitada la facturación para tu Google Cloud proyecto.
Habilita las API de Cloud necesarias para crear AlloyDB para PostgreSQL y conectarte a él.
- En el paso Confirmar proyecto, haz clic en Siguiente para confirmar el nombre del proyecto en el que realizarás cambios.
En el paso Habilitar APIs, haz clic en Habilitar para habilitar lo siguiente:
- API de AlloyDB
- API de Compute Engine
- API de Service Networking
Roles obligatorios
Para obtener los permisos que necesitas para completar las tareas de este instructivo, debes tener los siguientes roles de Identity and Access Management (IAM) que permiten la creación de tablas y la inserción de datos:
- Propietario (
roles/owner
) o editor (roles/editor
) Si el usuario no es propietario ni editor, se requieren los siguientes roles de IAM y privilegios de PostgreSQL:
- Cliente de instancias de AlloyDB (
roles/alloydb.client
) - Administrador de Cloud AlloyDB (
roles/alloydb.admin
) - Usuario de la red de Compute (
roles/compute.networkUser
)
- Cliente de instancias de AlloyDB (
Si deseas autenticarte en tu base de datos con la autenticación de IAM en lugar de usar la autenticación integrada en este instructivo, usa el notebook que muestra cómo usar AlloyDB para PostgreSQL para almacenar incorporaciones vectoriales con la clase AlloyDBVectorStore
.
Crea 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 instructivo desde cualquier lugar. Si usas IP privada, debes ejecutar este instructivo desde tu VPC.
- Crea o selecciona un usuario de la 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 instructivo, se usa la autenticación integrada para reducir cualquier inconveniente de autenticación. La autenticación de IAM es posible con AlloyDBEngine.
- Cuando creas la instancia, se crea un usuario
Recupera la muestra de código
Clona el repositorio para copiar la muestra de código de GitHub:
git clone https://github.com/googleapis/langchain-google-alloydb-pg-python.git
Navega al directorio
migrations
:cd langchain-google-alloydb-pg-python/samples/migrations
Extrae datos de una base de datos de vectores existente
Crea un cliente.
Pinecone
Weaviate
Croma
Qdrant
Milvus
Obtén todos los datos de la base de datos.
Pinecone
Recupera los IDs de vectores del índice de Pinecone:
Luego, recupera registros por ID del índice de Pinecone:
Weaviate
Croma
Qdrant
Milvus
Inicializa la tabla de AlloyDB
Define el servicio de incorporación.
La interfaz de VectorStore requiere un servicio de incorporación. Este flujo de trabajo no genera incorporaciones nuevas, por lo que se usa la clase
FakeEmbeddings
para evitar cualquier costo.Pinecone
Weaviate
Croma
Qdrant
Milvus
Prepara la tabla de AlloyDB.
Conéctate a AlloyDB con una conexión de IP pública. Para obtener más información, consulta Especifica 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
Cómo inicializar un objeto de tienda de vectores
Este código agrega metadatos de incorporación de vectores adicionales a la columna langchain_metadata
en formato JSON.
Para que el filtrado sea más eficiente, organiza estos metadatos en columnas separadas.
Para obtener más información, consulta Cómo crear una tienda de vectores personalizada.
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
Ejecuta la secuencia de comandos de migración
Instala las dependencias de muestra:
pip install -r requirements.txt
Ejecuta la migración de ejemplo.
Pinecone
python migrate_pinecone_vectorstore_to_alloydb.py
Realiza los siguientes reemplazos antes de ejecutar la muestra:
PINECONE_API_KEY
: La clave de API de Pinecone.PINECONE_NAMESPACE
: Es el espacio de nombres de Pinecone.PINECONE_INDEX_NAME
: Es el nombre del índice Pinecone.PROJECT_ID
: El ID del proyecto.REGION
: Es la región en la que se implementa el clúster de AlloyDB.CLUSTER
: el nombre del clústerINSTANCE
: El nombre de la instancia.DB_NAME
: Es el nombre de la base de datos.DB_USER
: Es 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
Realiza los siguientes reemplazos antes de ejecutar la muestra:
WEAVIATE_API_KEY
: La clave de API de Weaviate.WEAVIATE_CLUSTER_URL
: La URL del clúster de Weaviate.WEAVIATE_COLLECTION_NAME
: Es el nombre de la colección de Weaviate.PROJECT_ID
: El ID del proyecto.REGION
: Es la región en la que se implementa el clúster de AlloyDB.CLUSTER
: el nombre del clústerINSTANCE
: El nombre de la instancia.DB_NAME
: Es el nombre de la base de datos.DB_USER
: Es 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
Realiza los siguientes reemplazos antes de ejecutar la muestra:
CHROMADB_PATH
: Es la ruta de acceso de la base de datos de Chroma.CHROMADB_COLLECTION_NAME
: Es el nombre de la colección de la base de datos de Chroma.PROJECT_ID
: El ID del proyecto.REGION
: Es la región en la que se implementa el clúster de AlloyDB.CLUSTER
: el nombre del clústerINSTANCE
: El nombre de la instancia.DB_NAME
: Es el nombre de la base de datos.DB_USER
: Es 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
Realiza los siguientes reemplazos antes de ejecutar la muestra:
QDRANT_PATH
: Es la ruta de acceso de la base de datos de Qdrant.QDRANT_COLLECTION_NAME
: Es el nombre de la colección de Qdrant.PROJECT_ID
: El ID del proyecto.REGION
: Es la región en la que se implementa el clúster de AlloyDB.CLUSTER
: el nombre del clústerINSTANCE
: El nombre de la instancia.DB_NAME
: Es el nombre de la base de datos.DB_USER
: Es 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
Realiza los siguientes reemplazos antes de ejecutar la muestra:
MILVUS_URI
: Es el URI de Milvus.MILVUS_COLLECTION_NAME
: Es el nombre de la colección de Milvus.PROJECT_ID
: El ID del proyecto.REGION
: Es la región en la que se implementa el clúster de AlloyDB.CLUSTER
: el nombre del clústerINSTANCE
: El nombre de la instancia.DB_NAME
: Es el nombre de la base de datos.DB_USER
: Es el nombre del usuario de la base de datos.DB_PWD
: La contraseña secreta de la base de datos.
Una migración correcta imprime registros similares a los siguientes sin errores:
Migration completed, inserted all the batches of data to AlloyDB
Abre AlloyDB Studio para ver tus datos migrados. Para obtener más información, consulta Administra tus datos con AlloyDB Studio.
Limpia
Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.
En la consola de Google Cloud, ve a la página Clústeres.
En la columna Nombre del recurso, haz clic en el nombre del clúster que creaste.
Haz clic en delete Borrar clúster.
En Borrar clúster, ingresa el nombre de tu clúster para confirmar que quieres borrarlo.
Haz clic en Borrar.
Si creaste una conexión privada cuando creaste un clúster, bórrala:
Ve a la página Redes de la consola de Google Cloud y haz clic en Borrar red de VPC.
¿Qué sigue?
- Comienza a usar las incorporaciones vectoriales con la IA de AlloyDB.
- Aprende a compilar aplicaciones de IA generativa con AlloyDB AI.
- Crea un índice ScaNN.
- Ajusta tus índices de ScaNN.
- Obtén información para crear un asistente de compras inteligente con AlloyDB, pgvector y la administración de extremos de modelos.