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

Erro de Dependência com Apache Cassandra Vector Store ainda persiste.

Desculpem-me, marquei sem querer em "Solucionada". Segue novamente a descrição do problema:

Criei um projeto no Spring Initializr para fazer RAG em bancos de dados vetoriais seguindo a documentação do Spring: https://docs.spring.io/spring-ai/reference/api/vectordbs/apache-cassandra.html

Incluí as seguintes dependências:

  • Spring Data for Apache Cassandra
  • Apache Cassandra Vector Store
  • OpenAI
  • PDF Document Reader
  • Transformers (ONNX) Embeddings

Porém, dá o seguinte erro:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'cassandraVectorApplication': Unsatisfied dependency expressed through field 'ch': Error creating bean with name 'chatMemory' defined in class path resource [org/springframework/ai/autoconfigure/chat/memory/cassandra/CassandraChatMemoryAutoConfiguration.class]: Failed to instantiate [org.springframework.ai.chat.memory.cassandra.CassandraChatMemory]: Factory method 'chatMemory' threw exception with message: Unable to find compaction strategy class 'org.apache.cassandra.db.compaction.UnifiedCompactionStrategy' at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor

Pesquisei, porém não encontrei o jar/dependência que possua essa classe: 'org.apache.cassandra.db.compaction.UnifiedCompactionStrategy'

Fiz o mesmo projeto, só que usando o Redis e funcionou sem problema algum!

2 respostas
solução!

Oi, Marcos! Como vai?

Sinto muito pela demora em obter um retorno.

O erro que apareceu indica que o Spring AI não está encontrando a classe UnifiedCompactionStrategy no Apache Cassandra. Isso pode estar ligado à versão do Cassandra que você está utilizando ou à falta de uma dependência específica.

O que verificar?

  1. Versão do Apache Cassandra

    • O Spring AI pode estar exigindo uma versão específica do Cassandra. Se estiver usando uma versão mais antiga, tente atualizar para Cassandra 4.x ou 5.x.
  2. Dependências faltantes

    • A biblioteca do Cassandra pode não estar trazendo todas as classes necessárias. Teste adicionar a seguinte dependência ao seu pom.xml (caso use Maven):
    
    <dependency>
        <groupId>org.apache.cassandra</groupId>
        <artifactId>cassandra-all</artifactId>
        <version>4.1.3</version>
    </dependency>
    

    Se estiver usando Gradle, adicione ao build.gradle:

    
    implementation 'org.apache.cassandra:cassandra-all:4.1.3'
    
  3. Verifique a Configuração do Cassandra

    • O Cassandra 4.x exige que a estratégia de compactação seja declarada corretamente. No arquivo de configuração do Cassandra, garanta que há algo assim:
    
    compaction_strategy_class: org.apache.cassandra.db.compaction.UnifiedCompactionStrategy
    
  4. Tente remover a dependência do Apache Cassandra Vector Store e adicioná-la novamente

    • Isso pode forçar a resolução correta das dependências:
    
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-cassandra-store</artifactId>
        <version>1.0.0</version>
    </dependency>
    

Como você comentou que o projeto funcionou com o Redis, isso sugere que sua configuração geral do Spring está correta, e o problema está especificamente relacionado ao Cassandra.

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição.

Abraços e bons estudos!

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

Nossa......... Rafaela, muito obrigado!!! Atualizei a versão do Cassandra no Docker, para 5.0 e funcionou corretamente!!!!!

Infelizmente as mensagens de erro do Spring que aparecem no console não são nem um pouco elucidativas. Jamais iria imaginar que o problema estivesse na versão do banco de dados, mas sim na falta de um jar.

Outro problema muito grande, quando iniciamos em alguma tecnologia/framework/biblioteca é a falta de documentação adequada e atualizada. No guia do Spring "Accessing Data with Cassandra" (https://spring.io/guides/gs/accessing-data-cassandra) ele usa a versão 4.0.7 do Cassandra.

Muito Obrigado mesmo pela ajuda!!!