SpringAI加载Java文件至PG Vector DB时维度不匹配问题求助
PGVector向量存储维度不匹配报错问题解决
报错信息
caused by: org.postgresql.util.PSQLException: ERROR: expected 1596 dimensions, not 4096
配置、代码及依赖
应用配置
spring: ai: ollama: base-url: http://localhost:11434 embedding: options: model: llama3 vectorstore: pgvector: index-type: HNSW distance-type: COSINE_DISTANCE dimensions: 1596
文档加载代码
for (File file : javaFiles) { log.info("Loading document: {}", file.getName()); Resource resource = new FileSystemResource(file); TextReader documentReader = new TextReader(resource); List<Document> documents = documentReader.get(); TextSplitter textSplitter = new TokenTextSplitter(); List<Document> splitDocuments = textSplitter.apply(documents); vectorStore.add(splitDocuments); }
项目依赖
<dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-ollama-spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.ai</groupId> <artifactId>spring-ai-pgvector-store-spring-boot-starter</artifactId> </dependency>
问题原因
配置的PGVector维度(1596)与Ollama使用的Llama3模型实际输出的嵌入维度(4096)不匹配。Llama3系列模型(如7B、8B版本)的嵌入向量默认维度为4096,而PGVector表按配置的1596维度创建,导致插入Ollama返回的4096维度向量时触发维度校验错误。
解决步骤
修正维度配置
修改应用配置中PGVector的dimensions值为4096,与Llama3模型的实际输出维度一致:spring: ai: vectorstore: pgvector: dimensions: 4096调整数据库表结构
由于已创建1596维度的vector_store表,需二选一行事:- 删除数据库中的
vector_store表,重启应用后Spring AI会自动创建4096维度的新表; - 手动执行SQL修改表字段维度:
ALTER TABLE vector_store ALTER COLUMN vector TYPE vector(4096);
- 删除数据库中的
重启验证
重启应用后重新执行文档加载逻辑,即可正常插入向量数据。
内容的提问来源于stack exchange,提问作者user1640826
相关产品推荐
相关产品推荐

