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.
Pré-requisitos
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 do Google Cloud , na página do seletor de projetos, selecione ou crie um projeto doGoogle Cloud .
Verifique se o faturamento está ativado para seu projeto do 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 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 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 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 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.