Este tutorial descreve como migrar dados de uma base de dados vetorial de terceiros para o AlloyDB for PostgreSQL através de um VectorStore do LangChain. Este tutorial pressupõe que os dados em bases de dados vetoriais de terceiros foram criados com uma integração do LangChain VectorStore. Se introduzir informações numa das seguintes bases de dados sem usar o LangChain, pode ter de editar os scripts fornecidos abaixo para corresponderem ao esquema dos seus dados. As seguintes bases de dados vetoriais são suportadas:
Este tutorial pressupõe que tem conhecimentos de Google Cloud, AlloyDB e programação Python assíncrona.
Objetivos
Este tutorial mostra como fazer o seguinte:
- Extrair dados de uma base de dados vetorial existente.
- Associe-a ao AlloyDB.
- Inicialize a tabela do AlloyDB.
- Inicialize um objeto de banco de dados vetorial.
- Execute o script de migração para inserir os dados.
Custos
Neste documento, usa os seguintes componentes faturáveis do Google Cloud:
You might be eligible for a free trial cluster. For more information, see AlloyDB free trial clusters overview.
Para gerar uma estimativa de custos com base na sua utilização projetada,
use a calculadora de preços.
Quando terminar as tarefas descritas neste documento, pode evitar a faturação contínua eliminando os recursos que criou. Para mais informações, consulte o artigo Limpe.
Antes de começar
Certifique-se de que tem uma das seguintes lojas de vetores de base de dados de terceiros do LangChain:
Ative a faturação e as APIs necessárias
Na Google Cloud consola, na página do seletor de projetos, selecione ou crie um Google Cloud projeto.
Certifique-se de que a faturação está ativada para o seu Google Cloud projeto.
Ative as APIs Cloud necessárias para criar e estabelecer ligação ao AlloyDB para PostgreSQL.
- No passo Confirmar projeto, clique em Seguinte para confirmar o nome do projeto ao qual vai fazer alterações.
No passo Ativar APIs, clique em Ativar para ativar o seguinte:
- API AlloyDB
- API Compute Engine
- API de rede de serviços
Funções necessárias
Para receber as autorizações necessárias para concluir as tarefas neste tutorial, tem de ter as seguintes funções de gestão de identidade e acesso (IAM), que permitem a criação de tabelas e a inserção de dados:
- Proprietário (
roles/owner
) ou editor (roles/editor
) Se o utilizador não for proprietário nem editor, são necessárias as seguintes funções de IAM e privilégios do PostgreSQL:
- Cliente da instância do AlloyDB (
roles/alloydb.client
) - Administrador do Cloud AlloyDB (
roles/alloydb.admin
) - Utilizador de rede de Calcular (
roles/compute.networkUser
)
- Cliente da instância do AlloyDB (
Se quiser autenticar-se na sua base de dados através da autenticação do IAM, em vez de usar a autenticação incorporada neste tutorial, use o bloco de notas que mostra como usar o AlloyDB for PostgreSQL para armazenar incorporações de vetores com a classe AlloyDBVectorStore
.
Crie um cluster e um utilizador do AlloyDB
- Crie um cluster e uma instância do AlloyDB.
- Ative o IP público para executar este tutorial a partir de qualquer lugar. Se estiver a usar o IP privado, tem de executar este tutorial a partir da sua VPC.
- Crie ou selecione um utilizador da base de dados do AlloyDB.
- Quando cria a instância, é criado um utilizador
postgres
com uma palavra-passe. Este utilizador tem autorizações de superutilizador. - Este tutorial usa a autenticação incorporada para reduzir qualquer atrito de autenticação. A autenticação IAM é possível através do AlloyDBEngine.
- Quando cria a instância, é criado um utilizador
Obtenha o exemplo de código
Copie o exemplo de código do GitHub clonando o repositório:
git clone https://github.com/googleapis/langchain-google-alloydb-pg-python.git
Navegue para o diretório
migrations
:cd langchain-google-alloydb-pg-python/samples/migrations
Extraia dados de uma base de dados vetorial existente
Crie um cliente.
Pinecone
Weaviate
Croma
Qdrant
Milvus
Obter todos os dados da base de dados.
Pinecone
Obtenha IDs de vetores do índice do Pinecone:
Em seguida, obtenha os registos por ID do índice do Pinecone:
Weaviate
Croma
Qdrant
Milvus
Inicialize a tabela do AlloyDB
Defina o serviço de incorporação.
A interface VectorStore requer um serviço de incorporação. Este fluxo de trabalho não gera novas incorporações, pelo que a classe
FakeEmbeddings
é usada para evitar custos.Pinecone
Weaviate
Croma
Qdrant
Milvus
Prepare a tabela do AlloyDB.
Ligue-se ao AlloyDB através de uma ligação de IP público. Para mais informações, consulte o artigo Especificar o tipo de endereço IP.
Pinecone
Weaviate
Croma
Qdrant
Milvus
Crie uma tabela para copiar os dados, se ainda não existir.
Pinecone
Weaviate
Croma
Qdrant
Milvus
Inicialize um objeto de banco de dados vetorial
Este código adiciona metadados de incorporação de vetores adicionais à coluna num formato JSON.langchain_metadata
Para tornar a filtragem mais eficiente, organize estes metadados em colunas separadas.
Para mais informações, consulte o artigo Crie um arquivo vetorial personalizado.
Para inicializar um objeto de banco de dados vetorial, execute o seguinte comando:
Pinecone
Weaviate
Croma
Qdrant
Milvus
Insira dados na tabela do AlloyDB:
Pinecone
Weaviate
Croma
Qdrant
Milvus
Execute o script de migração
Instale as dependências de exemplo:
pip install -r requirements.txt
Execute a migração de exemplo.
Pinecone
python migrate_pinecone_vectorstore_to_alloydb.py
Faça as seguintes substituições antes de executar o exemplo:
PINECONE_API_KEY
: a chave da API Pinecone.PINECONE_NAMESPACE
: o espaço de nomes do Pinecone.PINECONE_INDEX_NAME
: o nome do índice do Pinecone.PROJECT_ID
: o ID do projeto.REGION
: a região na qual o cluster do AlloyDB está implementado.CLUSTER
: o nome do cluster.INSTANCE
: o nome da instância.DB_NAME
: o nome da base de dados.DB_USER
: o nome do utilizador da base de dados.DB_PWD
: a palavra-passe secreta da base de dados.
Weaviate
python migrate_weaviate_vectorstore_to_alloydb.py
Faça as seguintes substituições antes de executar o exemplo:
WEAVIATE_API_KEY
: a chave da API Weaviate.WEAVIATE_CLUSTER_URL
: o URL do cluster do Weaviate.WEAVIATE_COLLECTION_NAME
: o nome da coleção do Weaviate.PROJECT_ID
: o ID do projeto.REGION
: a região na qual o cluster do AlloyDB está implementado.CLUSTER
: o nome do cluster.INSTANCE
: o nome da instância.DB_NAME
: o nome da base de dados.DB_USER
: o nome do utilizador da base de dados.DB_PWD
: a palavra-passe secreta da base de dados.
Croma
python migrate_chromadb_vectorstore_to_alloydb.py
Faça as seguintes substituições antes de executar o exemplo:
CHROMADB_PATH
: o caminho da base de dados Chroma.CHROMADB_COLLECTION_NAME
: o nome da coleção da base de dados Chroma.PROJECT_ID
: o ID do projeto.REGION
: a região na qual o cluster do AlloyDB está implementado.CLUSTER
: o nome do cluster.INSTANCE
: o nome da instância.DB_NAME
: o nome da base de dados.DB_USER
: o nome do utilizador da base de dados.DB_PWD
: a palavra-passe secreta da base de dados.
Qdrant
python migrate_qdrant_vectorstore_to_alloydb.py
Faça as seguintes substituições antes de executar o exemplo:
QDRANT_PATH
: o caminho da base de dados Qdrant.QDRANT_COLLECTION_NAME
: o nome da coleção do Qdrant.PROJECT_ID
: o ID do projeto.REGION
: a região na qual o cluster do AlloyDB está implementado.CLUSTER
: o nome do cluster.INSTANCE
: o nome da instância.DB_NAME
: o nome da base de dados.DB_USER
: o nome do utilizador da base de dados.DB_PWD
: a palavra-passe secreta da base de dados.
Milvus
python migrate_milvus_vectorstore_to_alloydb.py
Faça as seguintes substituições antes de executar o exemplo:
MILVUS_URI
: o URI do Milvus.MILVUS_COLLECTION_NAME
: o nome da coleção do Milvus.PROJECT_ID
: o ID do projeto.REGION
: a região na qual o cluster do AlloyDB está implementado.CLUSTER
: o nome do cluster.INSTANCE
: o nome da instância.DB_NAME
: o nome da base de dados.DB_USER
: o nome do utilizador da base de dados.DB_PWD
: a palavra-passe secreta da base de dados.
Uma migração bem-sucedida imprime registos semelhantes aos seguintes sem erros:
Migration completed, inserted all the batches of data to AlloyDB
Abra o AlloyDB Studio para ver os dados migrados. Para mais informações, consulte o artigo Faça a gestão dos seus dados com o AlloyDB Studio.
Limpar
Para evitar incorrer em custos na sua conta do Google Cloud pelos recursos usados neste tutorial, elimine o projeto que contém os recursos ou mantenha o projeto e elimine os recursos individuais.
Na Google Cloud consola, aceda à página Clusters.
Na coluna Nome do recurso, clique no nome do cluster que criou.
Clique em delete Eliminar cluster.
Em Eliminar cluster, introduza o nome do cluster para confirmar que quer eliminar o cluster.
Clique em Eliminar.
Se criou uma ligação privada quando criou um cluster, elimine a ligação privada:
Aceda à Google Cloud página Rededa consola e clique em Eliminar rede de VPC.