Spring Boot连接Chroma向量数据库时遭遇404错误求助
兄弟,我看你这情况是Spring AI的Chroma客户端和本地Chroma服务的API路径没匹配上才触发的404,我给你一步步拆解排查:
先理清楚你当前的环境细节,避免踩版本兼容的坑:
- Spring Boot 3.3.5 + Java 17 + Spring AI 1.0.0
- Chroma 0.4.15,本地运行,浏览器能正常访问
localhost:8000/api/v1/collections查看集合
问题根源分析
你之前试了两种base-url配置都不行,核心问题大概率是Spring AI的Chroma客户端默认会自动拼接API前缀,导致你配置的路径叠加后变成了无效地址。比如你如果把base-url设为http://localhost:8000/api/v1,客户端可能会再拼一次/api/v1,最终请求http://localhost:8000/api/v1/api/v1/xxx,这肯定会404。
具体解决步骤
1. 修正application.properties配置
直接按下面的配置来,明确拆分base地址和API前缀,让客户端生成正确的请求路径:
spring.ai.vectorstore.chroma.initialize-schema=true spring.ai.vectorstore.chroma.base-url=http://localhost:8000 spring.ai.vectorstore.chroma.api-prefix=/api/v1 spring.ai.vectorstore.chroma.collection-name=demo
这里的关键是把base-url设为Chroma服务的根地址(不带/api/v1),然后通过api-prefix显式指定API的前缀路径,这样客户端就会正确拼接成http://localhost:8000/api/v1/xxx的有效请求。
2. 先手动验证Chroma接口可用性
在启动Spring Boot应用前,你可以用curl模拟客户端的初始化请求,确认Chroma的接口正常:
curl -X POST http://localhost:8000/api/v1/collections -H "Content-Type: application/json" -d '{"name": "demo"}'
如果这个请求能成功返回集合的JSON信息,说明Chroma的服务和接口路径都是没问题的,接下来启动Spring Boot应用应该就不会报404了。
3. 临时关闭初始化验证(可选排查用)
如果还是有问题,你可以先把spring.ai.vectorstore.chroma.initialize-schema设为false,启动应用后通过日志或者调试工具,看一下Spring AI客户端实际发送的请求URL是什么,这样就能精准定位路径拼接的问题。
额外注意点
你用的Spring AI 1.0.0和Chroma 0.4.15是兼容的,官方明确说过1.0.x版本支持Chroma 0.4.x系列,所以不用怀疑版本兼容的问题,重点还是配置的路径叠加问题。
内容来源于stack exchange

