Spring Boot应用无法创建/初始化/连接ChromaDB集合求助
解决方案:Spring Boot + ChromaDB 兼容版本组合及配置调整
核心问题分析
你遇到的cannot unpack non-iterable coroutine object错误,本质是Spring AI Chroma客户端与ChromaDB服务端版本不兼容,早期Spring AI里程碑版本(M4/M5)对ChromaDB 0.5.x的API协程处理逻辑存在缺陷,同时initialize-schema=true配置无法正常触发集合创建,导致连接失败。
经过验证的兼容版本组合
以下版本组合可稳定实现集合创建、初始化与连接:
- Java版本:21(保持不变)
- Spring Boot版本:3.2.5
- Spring AI版本:1.0.0-M6
- ChromaDB Docker镜像版本:0.4.24
操作步骤
1. 调整项目依赖版本
Maven(pom.xml)
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.5</version> <relativePath/> </parent> <dependencies> <!-- Spring AI Chroma Vector Store --> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-chroma-store</artifactId> <version>1.0.0-M6</version> </dependency> <!-- 其他必要依赖,如OpenAI Embedding等 --> </dependencies>
Gradle(build.gradle)
plugins { id 'org.springframework.boot' version '3.2.5' id 'io.spring.dependency-management' version '1.1.4' } dependencies { implementation 'org.springframework.ai:spring-ai-chroma-store:1.0.0-M6' // 其他必要依赖 }
2. 启动兼容版本的ChromaDB容器
替换原Docker命令为:
docker run -it --rm --name chroma -p 8000:8000 ghcr.io/chroma-core/chroma:0.4.24
3. 完善application.properties配置
添加Chroma服务地址(确保客户端能正确寻址):
spring.ai.vectorstore.chroma.base-url=http://localhost:8000 spring.ai.vectorstore.chroma.initialize-schema=true spring.ai.vectorstore.chroma.collection-name=demo
验证结果
- 启动ChromaDB容器后,启动Spring Boot应用,Chroma控制台会输出类似如下日志,表明集合创建成功:
INFO: [xx-xx-xxxx xx:xx:xx] 172.17.0.1:xxxx - "POST /api/v1/collections HTTP/1.1" 200 - 浏览器访问
http://localhost:8000/api/v1/collections/demo,会返回集合的详细信息,而非InvalidCollection错误。
内容的提问来源于stack exchange,提问作者Arvind Kumar Avinash
相关产品推荐
相关产品推荐

