Este tutorial descreve como migrar dados de um banco de dados de vetores de terceiros para o AlloyDB para PostgreSQL usando as lojas de vetores LangChain. Os seguintes bancos de dados de vetores são compatíveis:
Neste tutorial, presumimos que você já conheça Google Cloud, AlloyDB e a programação assíncrona do Python.
Objetivos
Este tutorial mostra como fazer o seguinte:
- Extrair dados de um banco de dados de vetores.
- Conecte-se ao AlloyDB.
- Inicialize a tabela do AlloyDB.
- Inicialize um objeto de armazenamento de vetores.
- Execute o script de migração para inserir os dados.
Custos
Neste documento, você usará os seguintes componentes faturáveis do Google Cloud:
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 uma das seguintes lojas de vetores de banco de dados de terceiros do LangChain:
Ativar o faturamento e as APIs necessárias
No console do Google Cloud, na página do seletor de projetos, selecione ou crie um projetoGoogle Cloud .
Verifique se o faturamento foi ativado para o Google Cloud projeto.
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 em que você vai fazer mudanças.
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 de 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 fazer a autenticação no seu 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 do AlloyDB e uma instância.
- Ative o IP público para executar este tutorial de qualquer lugar. Se você estiver usando o IP particular, execute este tutorial na 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 fricção 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
Clone o repositório para copiar o exemplo de código do GitHub:
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
Extraia IDs de vetores do índice da Pinecone:
Em seguida, busque os registros por ID no índice da Pinecone:
Weaviate
Chroma
Qdrant
Milvus
Inicializar a tabela do AlloyDB
Defina o serviço de incorporação.
A interface VectorStore requer um serviço de incorporação. Esse fluxo de trabalho não gera novas embeddings. Portanto, 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 Como especificar o tipo de endereço IP.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Crie uma tabela para copiar os dados, caso ela ainda não exista.
Pinecone
Weaviate
Chroma
Qdrant
Milvus
Inicializar um objeto de armazenamento de vetores
Esse código adiciona metadados de incorporação de vetores adicionais à coluna langchain_metadata
em um formato JSON.
Para tornar a filtragem mais eficiente, organize esses metadados em colunas separadas.
Para mais informações, consulte Criar uma loja de vetores personalizada.
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 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 namespace da Pinecone.PINECONE_INDEX_NAME
: o nome do índice da 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 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 coletânea 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 o exemplo:
CHROMADB_PATH
: o caminho do banco de dados do Chroma.CHROMADB_COLLECTION_NAME
: o nome da coleção de banco de dados do 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 o exemplo:
QDRANT_PATH
: o caminho do banco de dados do 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 o exemplo:
MILVUS_URI
: o URI do Milvus.MILVUS_COLLECTION_NAME
: o nome da coleção 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 a estes 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 do 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 excluir o cluster.
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 do console do Google Cloud e clique em Excluir rede VPC.