You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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维度向量时触发维度校验错误。

解决步骤

  1. 修正维度配置
    修改应用配置中PGVector的dimensions值为4096,与Llama3模型的实际输出维度一致:

    spring:
      ai:
        vectorstore:
            pgvector:
              dimensions: 4096
    
  2. 调整数据库表结构
    由于已创建1596维度的vector_store表,需二选一行事:

    • 删除数据库中的vector_store表,重启应用后Spring AI会自动创建4096维度的新表;
    • 手动执行SQL修改表字段维度:
      ALTER TABLE vector_store ALTER COLUMN vector TYPE vector(4096);
      
  3. 重启验证
    重启应用后重新执行文档加载逻辑,即可正常插入向量数据。


内容的提问来源于stack exchange,提问作者user1640826

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 13:02:44