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

使用自定义Schema和表基于pgvector/Postgres实现RAG时,出现Vector类型不存在错误及程序端搜索失败问题

使用自定义Schema和表基于pgvector/Postgres实现RAG时,出现Vector类型不存在错误及程序端搜索失败问题

嘿,我之前用Spring AI+pgvector做自定义schema的RAG时,完完全全踩过和你一样的坑!先给你捋捋问题根源和能快速解决的办法:

首先你说的两个核心问题——手动跑SQL一切正常,但程序调用就报错,还有Vector类型不存在的提示,大概率是这几个细节没处理到位:

一、Vector类型找不到的核心原因(对应BadSqlGrammarException)

当你用了自定义Schema后,Spring AI的默认集成很可能没正确找到pgvector的类型定义:

  • pgvector的vector类型默认是装在public schema下的,但你把业务表建在了自己的自定义schema里,如果程序连接数据库时没让Postgres同时搜索public和你的自定义schema,数据库就会找不到vector类型。
  • 快速解决的三个方向:
    1. 建表时显式指定类型的schema:把vector(1536)改成public.vector(1536)(1536换成你实际的向量维度)
    2. 数据库连接URL加参数:在URL末尾加?currentSchema=你的自定义schema名,public,让Postgres自动搜这两个schema的类型
    3. 给数据库用户设置默认搜索路径:执行SQL ALTER USER 你的数据库用户名 SET search_path TO 你的自定义schema名, public;

二、程序端搜索失败但手动SQL正常的问题

这个基本是Spring AI的默认查询模板没适配你的自定义表结构导致的:

  • Spring AI的pgvector starter默认用的是它预设的表结构(比如默认表名document,字段content、embedding),如果你改了表名、字段名或者用了自定义schema,它自动生成的SQL肯定和你手动跑的不一样,自然查不到结果。
  • 解决办法:
    1. 自定义PgVectorStore的Bean配置,把你的schema、表名、字段名都指定清楚:
      @Bean
      public PgVectorStore pgVectorStore(DataSource dataSource, EmbeddingModel embeddingModel) {
          return PgVectorStore.builder()
              .dataSource(dataSource)
              .embeddingModel(embeddingModel)
              .schemaName("你的自定义schema名")
              .tableName("你的业务表名")
              .vectorColumnName("你的向量字段名")
              .contentColumnName("你的文本内容字段名")
              .build();
      }
      
    2. 要是嫌配置麻烦,也可以直接自定义查询语句,用PgVectorStore的withQuery方法写和你手动跑的完全一样的SQL
    3. 另外别忘了检查数据库用户权限:确保程序用的用户有自定义schema的读写权限,有时候权限不够也会伪装成“搜索失败”的问题

额外排查小技巧

  • 开Spring JDBC的SQL日志,看看程序实际生成的SQL是什么,和你手动跑的对比,差异一眼就能看出来(比如少了schema前缀、字段名不对)
  • 确认pgvector扩展装对了:在数据库里跑SELECT * FROM pg_extension WHERE extname='vector';,没结果就是扩展没装成功
  • 检查连接的搜索路径:在程序里跑SHOW search_path;,看看是不是同时包含public和你的自定义schema

备注:内容来源于stack exchange,提问作者saran3h

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 15:59:42