Spring AI启动时调用OpenAI Embedding接口失败求助
问题分析与解决
错误原因
启动时自动发起OpenAI请求是因为PgVectorStore初始化过程中需要确定嵌入向量的维度,默认逻辑会调用EmbeddingClient.dimensions()方法,该方法会发送一个使用text-embedding-ada-002模型的测试请求(内容为Hello World)到OpenAI Embedding API。
报错java.net.HttpRetryException: cannot retry due to server authentication, in streaming mode的核心原因:
- 认证请求失败后,流式模式下无法重试(OpenAI Embedding API默认采用流式响应,重试机制不支持该场景下的认证重试)
- 可能伴随API密钥配置错误、网络代理拦截认证请求等问题。
解决方法
1. 手动指定嵌入向量维度(最直接有效)
在Spring Boot配置文件中添加配置,直接指定PgVectorStore的向量维度,避免初始化时调用OpenAI API:
# application.yml spring: ai: vectorstore: pgvector: dimensions: 1536 # text-embedding-ada-002模型的固定维度为1536
或者properties格式:
# application.properties spring.ai.vectorstore.pgvector.dimensions=1536
2. 验证API密钥配置
确认spring.ai.openai.api-key配置正确:
- 密钥无拼写错误、未过期且权限充足
- 配置在对应环境的配置文件中(避免环境配置混淆)
3. 调整重试策略(可选)
如果是重试机制导致的问题,可禁用或调整Spring AI的重试配置:
spring: ai: openai: embedding: retry: enabled: false
4. 升级Spring AI版本
当前使用的是0.8.0-SNAPSHOT快照版本,后续稳定版本可能优化了PgVectorStore初始化逻辑,避免启动时的强制API请求,可尝试升级至正式稳定版本。
内容的提问来源于stack exchange,提问作者pvpkiran
相关产品推荐
相关产品推荐

