Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] AULA 03 Incompatibilidade de versões: CacheBackedEmbeddings + LocalFileStore + GoogleGenerativeAIEmbeddings

No seguimento "Explorando o caching de embeddings" da aula 03, não consegui encontrar nenhuma maneira de fazer a chamada das bibliotecas abaixo funcionarem.

from langchain.storage import LocalFileStore
from langchain.embeddings import CacheBackedEmbeddings

Tentei encontrar postagens e as sugestões do próprio colab. Sem sucesso.
Com chatGPT, com Copilot, nada também. E a Documentação do Langchain achei confusa (hora, o pacote está no core, hora no community, hora como storage ou store)

Como última alternativa tentei criar os arquivos de requirements pra congelar as versões que "supostamente" seriam compatíveis, como:

%%bash
cat > requirements_base.in <<'REQ'
langchain==1.0.7
langchain-core==1.0.6
langchain-community==0.4.1
langchain-google-genai==3.0.0
google-generativeai==0.8.4
pip-tools==7.2.0
REQ

echo "Arquivo requirements_base.in criado:"
cat requirements_base.in
!pip install -q \
  google-generativeai==0.7.2 \
  google-ai-generativelanguage==0.7.0 \
  langchain-google-genai==3.0.0 \
  langchain==1.0.7 \
  langchain-community==0.4.1

A partir desse ponto também houve muitas incompatibilidades com as bibliotecas do google (entre si e com o langchain) abaixo também é um exemplo de uma tentativa de restringir as versões que seriam compatíveis com:

google-generativeai==0.7.2 usa a API antiga (compatível).
google-ai-generativelanguage==0.7.0 satisfaz langchain-google-genai>=2.0.2.
langchain-google-genai==2.0.2 é estavelmente compatível.

!pip install -q \
  google-generativeai==0.7.2 \
  google-ai-generativelanguage==0.7.0 \
  langchain-google-genai==2.0.2 \
  langchain==1.0.7 \
  langchain-community==0.4.1

Existe algum lugar onde podemos verificar e relacionar compatibilidade de versões de bibliotecas pacotes e python ao mesmo tempo?

Obrigado!

2 respostas
solução!

Ei! Tudo bem, Felippe?

Esse tipo de erro é bem comum quando trabalhamos com LangChain + Google GenAI, porque essas bibliotecas mudam de versão rápido e cada uma depende de outra que nem sempre acompanha o ritmo.

Uma abordagem que você pode considerar é usar um ambiente virtual para isolar suas dependências e garantir que as versões das bibliotecas não entrem em conflito. Isso pode ser feito usando o venv ou o conda.

Aqui está um exemplo usando venv:

  1. Crie um ambiente virtual:

    python3 -m venv meu_ambiente
    
  2. Ative o ambiente virtual:

    • No Windows:

      meu_ambiente\Scripts\activate
      
    • No macOS/Linux:

      source meu_ambiente/bin/activate
      
  3. Instale as bibliotecas no ambiente virtual:

    pip install google-generativeai==0.7.2 google-ai-generativelanguage==0.7.0 langchain-google-genai==2.0.2 langchain==1.0.7 langchain-community==0.4.1
    

Dessa forma, você pode testar diferentes combinações de versões sem afetar o sistema global de pacotes Python.

Ou usar uma versão mais estável:

!pip install langchain==0.2.14 \
             langchain-community==0.2.10 \
             langchain-core==0.2.10 \
             langchain-google-genai==0.3.1 \
             google-generativeai==0.8.3

Imports:

from langchain_google_genai import GoogleGenerativeAIEmbeddings
from langchain_community.embeddings import CacheBackedEmbeddings
from langchain_community.storage import LocalFileStore

store = LocalFileStore("./cache-embeds")
embeddings = CacheBackedEmbeddings.from_bytes_store(
    GoogleGenerativeAIEmbeddings(model="models/text-embedding-004"),
    store,
)

Sobre verificar a compatibilidade de versões, você pode usar ferramentas como o pipdeptree para visualizar a árvore de dependências e identificar possíveis conflitos.

Infelizmente, não há um recurso único que liste todas as compatibilidades de versões entre bibliotecas, mas você pode verificar os repositórios do GitHub das bibliotecas em questão, onde geralmente há um arquivo requirements.txt ou setup.py que pode dar uma ideia das versões compatíveis.

Conteúdos relacionados
  • Estes conteúdos podem abrir em inglês e se preferir ler em português, recomendo que utilize o tradutor automático do navegador.

    Espero ter ajudado e qualquer dúvida, compartilhe no fórum.

    Até mais!

    Caso este post tenha lhe ajudado, por favor, marcar como solucionado!

Tudo certo, Nathalia?!
Primeiro de tudo, muito obrigado pela resposta.

No final das contas tentei seguir a abordagem de criar um ambiente virtual, o que no colab se tornou um pesadelo, então tentei instalas ar versões que tu referenciou acima, e, infelizmente, nenhuma delas não teve conflitos, mas pelo menos me alertou que estava tentando incluir a biblioteca "google-generativeai" sem necessidade (acho que vinha de aulas anteriores e acabei incluindo no pip quando cheguei nesse ponto).
Dito isso, acabei tentando na força bruta mesmo. kkk

No git desse curso específico nao há um arquivo de requirements.txt, então a solução que encontrei foi basicamente varrer o log do output da instalação que o instrutor executou na aula #01 e definir quais as versões finais que foram instaladas no momento da gravação do curso.

!pip install langchain==0.3.26 langchain-community==0.3.27 langchain-core==0.3.71 langchain-google-genai==2.1.8 sentence-transformers==4.1.0  scikit-learn==1.6.1

Inicial mente me preocupei com o fato de o colab atualmente estar rodando o python12 ao invés do 11 como consta nos logs de instalação da aula, mas não foi problema.
Instalando as versões acima funcionou tudo certinho!

Inclusive fica a sugestão de incluir um requirements.txt contendo as bibliotecas com os versionamentos acima no git desse módulo que vai ajudar bastante quem vier depois!

Abraço!