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

[Bug] Erro de Dependência com Apache Cassandra Vector Store

Criei um projeto no Spring Initializr para fazer RAG em bancos de dados vetoriais e adicionei o Apache Cassandra Vector Store, além das demais dependências necessárias. 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: class 'org.apache.cassandra.db.compaction.UnifiedCompactionStrategy'

Fiz o mesmo projeto usando Redis e funcionou sem problema algum!

2 respostas
solução!

Oi

Esse erro indica que o Spring AI está tentando instanciar a classe CassandraChatMemory, mas não encontra a estratégia de compactação UnifiedCompactionStrategy no Cassandra. Pode ser um problema com a versão do Cassandra, já que o suporte a vetores foi adicionado nas versões mais recentes (5.x ou superior). Também vale conferir se a dependência do Cassandra no pom.xml ou build.gradle está correta e inclui os módulos de compactação. Caso esteja rodando localmente, verifique se a compactação UnifiedCompactionStrategy está ativada na configuração do Cassandra. Se puder compartilhar seu pom.xml ou as versões que está usando, fica mais fácil ajudar na depuração!

Desculpe-me, marquei sem querer em "Solucionada".

Segui a documentação do Spring: https://docs.spring.io/spring-ai/reference/api/vectordbs/apache-cassandra.html

Esse é o pom.xml padrão gerado pelo Spring Initializr: 4.0.0 org.springframework.boot spring-boot-starter-parent 3.4.3 com.example demo 0.0.1-SNAPSHOT demo Demo project for Spring Boot <java.version>21</java.version> <spring-ai.version>1.0.0-M6</spring-ai.version> org.springframework.boot spring-boot-starter-data-cassandra org.springframework.ai spring-ai-cassandra-store-spring-boot-starter org.springframework.ai spring-ai-openai-spring-boot-starter org.springframework.ai spring-ai-pdf-document-reader org.springframework.ai spring-ai-transformers-spring-boot-starter

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>${spring-ai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>