Neste tutorial, descrevemos como migrar dados de um banco de dados de vetores de terceiros para o AlloyDB para PostgreSQL usando um VectorStore do LangChain. Este tutorial pressupõe que os dados em bancos de dados de vetores de terceiros foram criados usando uma integração do LangChain VectorStore. Se você inserir informações em um dos bancos de dados a seguir sem usar o LangChain, talvez seja necessário editar os scripts fornecidos abaixo para corresponder ao esquema dos seus dados. Há suporte para os seguintes bancos de dados de vetores:
Neste tutorial, presumimos que você já conhece o Google Cloud, o AlloyDB e a programação assíncrona em Python.
Objetivos
Este tutorial mostra como fazer o seguinte:
- Extrair dados de um banco de dados vetorial.
- Conecte-se ao AlloyDB.
- Inicialize a tabela do AlloyDB.
- Inicialize um objeto de repositório de vetores.
- Execute o script de migração para inserir os dados.
Custos
Neste documento, você vai usar 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 custo baseada na projeção de uso deste tutorial, use a calculadora de preços.
Ao concluir as tarefas descritas neste documento, é possível evitar o faturamento contínuo excluindo os recursos criados. Saiba mais em Limpeza.
Antes de começar
Verifique se você tem um dos seguintes repositórios de vetores de banco de dados de terceiros do LangChain:
Ativar o faturamento e as APIs necessárias
No console Google Cloud , na página do seletor de projetos, selecione ou crie um projetoGoogle Cloud .
Verifique se o faturamento foi ativado para o projeto Google Cloud .
Ative as APIs do Cloud necessárias para criar e se conectar ao AlloyDB para PostgreSQL.
- Na etapa Confirmar projeto, clique em Próxima para confirmar o nome do projeto que você vai mudar.
Na etapa Ativar APIs, clique em Ativar para ativar o seguinte:
- API AlloyDB
- API Compute Engine
- API Service Networking
Funções exigidas
Para receber as permissões necessárias para concluir as tarefas neste tutorial, tenha os seguintes papéis do Identity and Access Management (IAM), que permitem a criação de tabelas e a inserção de dados:
- Proprietário (
roles/owner
) ou editor (roles/editor
) Se o usuário não for proprietário ou editor, os seguintes papéis do IAM e privilégios do PostgreSQL serão necessários:
- Cliente de instância do AlloyDB (
roles/alloydb.client
) - Administrador do Cloud AlloyDB (
roles/alloydb.admin
) - Usuário da rede do Compute (
roles/compute.networkUser
)
- Cliente de instância do AlloyDB (
Se você quiser se autenticar no banco de dados usando a autenticação do IAM em vez da autenticação integrada neste tutorial, use o notebook que mostra como usar o AlloyDB para PostgreSQL para armazenar embeddings de vetores com a classe AlloyDBVectorStore
.
Criar um cluster e um usuário do AlloyDB
- Crie um cluster e uma instância do AlloyDB.
- Ative o IP público para executar este tutorial de qualquer lugar. Se você estiver usando o IP privado, execute este tutorial na sua VPC.
- Crie ou selecione um usuário do banco de dados do AlloyDB.
- Quando você cria a instância, um usuário
postgres
é criado com uma senha. Esse usuário tem permissões de superusuário. - Este tutorial usa a autenticação integrada para reduzir qualquer atrito de autenticação. A autenticação do IAM é possível usando o AlloyDBEngine.
- Quando você cria a instância, um usuário
Recuperar a amostra 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 até o diretório
migrations
:cd langchain-google-alloydb-pg-python/samples/migrations
Extrair dados de um banco de dados de vetores
Criar um cliente.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Receba todos os dados do banco de dados.
Pinecone
Recupere os IDs de vetores do índice do Pinecone:
Em seguida, extraia os registros por ID do índice do Pinecone:
Weaviate
Chroma
Qdrant
Milvus
Inicializar a tabela do AlloyDB
Defina o serviço de embedding.
A interface VectorStore exige um serviço de incorporação. Esse fluxo de trabalho não gera novos embeddings, então a classe
FakeEmbeddings
é usada para evitar custos.Pinecone
Weaviate
Chroma
Qdrant
Milvus
Prepare a tabela do AlloyDB.
Conecte-se ao AlloyDB usando uma conexão de IP público. Para mais informações, consulte Especificar o tipo de endereço IP.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Crie uma tabela para copiar os dados, se ela ainda não existir.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Inicializar um objeto de repositório de vetores
Esse código adiciona mais metadados de incorporação de vetor à coluna langchain_metadata
em formato JSON.
Para tornar a filtragem mais eficiente, organize esses metadados em colunas separadas.
Para mais informações, consulte Criar um repositório de vetores personalizado.
Para inicializar um objeto de armazenamento de vetores, execute o seguinte comando:
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Insira dados na tabela do AlloyDB:
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Executar o script de migração
Instale as dependências de amostra:
pip install -r requirements.txt
Execute a migração de amostra.
Pinecone
python migrate_pinecone_vectorstore_to_alloydb.py
Faça as seguintes substituições antes de executar a amostra:
PINECONE_API_KEY
: a chave de API do Pinecone.PINECONE_NAMESPACE
: o namespace do Pinecone.PINECONE_INDEX_NAME
: o nome do índice do Pinecone.PROJECT_ID
: o ID do projeto;REGION
: a região em que o cluster do AlloyDB é implantado.CLUSTER
: o nome do cluster.INSTANCE
: o nome da instância.DB_NAME
: o nome do banco de dados.DB_USER
: o nome do usuário do banco de dados.DB_PWD
: a senha secreta do banco de dados.
Weaviate
python migrate_weaviate_vectorstore_to_alloydb.py
Faça as seguintes substituições antes de executar a amostra:
WEAVIATE_API_KEY
: a chave de API do 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 em que o cluster do AlloyDB é implantado.CLUSTER
: o nome do cluster.INSTANCE
: o nome da instância.DB_NAME
: o nome do banco de dados.DB_USER
: o nome do usuário do banco de dados.DB_PWD
: a senha secreta do banco de dados.
Chroma
python migrate_chromadb_vectorstore_to_alloydb.py
Faça as seguintes substituições antes de executar a amostra:
CHROMADB_PATH
: o caminho do banco de dados Chroma.CHROMADB_COLLECTION_NAME
: o nome da coleção do banco de dados Chroma.PROJECT_ID
: o ID do projeto;REGION
: a região em que o cluster do AlloyDB é implantado.CLUSTER
: o nome do cluster.INSTANCE
: o nome da instância.DB_NAME
: o nome do banco de dados.DB_USER
: o nome do usuário do banco de dados.DB_PWD
: a senha secreta do banco de dados.
Qdrant
python migrate_qdrant_vectorstore_to_alloydb.py
Faça as seguintes substituições antes de executar a amostra:
QDRANT_PATH
: o caminho do banco de dados Qdrant.QDRANT_COLLECTION_NAME
: o nome da coleção do Qdrant.PROJECT_ID
: o ID do projeto;REGION
: a região em que o cluster do AlloyDB é implantado.CLUSTER
: o nome do cluster.INSTANCE
: o nome da instância.DB_NAME
: o nome do banco de dados.DB_USER
: o nome do usuário do banco de dados.DB_PWD
: a senha secreta do banco de dados.
Milvus
python migrate_milvus_vectorstore_to_alloydb.py
Faça as seguintes substituições antes de executar a amostra:
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 em que o cluster do AlloyDB é implantado.CLUSTER
: o nome do cluster.INSTANCE
: o nome da instância.DB_NAME
: o nome do banco de dados.DB_USER
: o nome do usuário do banco de dados.DB_PWD
: a senha secreta do banco de dados.
Uma migração bem-sucedida imprime registros semelhantes aos seguintes sem erros:
Migration completed, inserted all the batches of data to AlloyDB
Abra o AlloyDB Studio para conferir os dados migrados. Para mais informações, consulte Gerenciar dados com o AlloyDB Studio.
Limpar
Para evitar cobranças na sua conta do Google Cloud pelos recursos usados no tutorial, exclua o projeto que os contém ou mantenha o projeto e exclua os recursos individuais.
No console Google Cloud , acesse a página Clusters.
Na coluna Nome do recurso, clique no nome do cluster que você criou.
Clique em delete Excluir cluster.
Em Excluir cluster, insira o nome do cluster para confirmar que você quer excluí-lo.
Clique em Excluir.
Se você criou uma conexão particular ao criar um cluster, exclua a conexão particular:
Acesse a página de rede no console Google Cloud e clique em Excluir rede VPC.
A seguir
- Comece a usar embeddings vetoriais com a IA do AlloyDB.
- Saiba como criar aplicativos de IA generativa usando a IA do AlloyDB.
- Crie um índice do ScaNN.
- Ajuste seus índices do ScaNN.
- Saiba como criar um assistente de compras inteligente com o AlloyDB, o pgvector e o gerenciamento de endpoints de modelo.