Spring AI中如何修改PGVector Store的VECTOR_TABLE_NAME?
修改Spring AI 0.8.1中PGVector Store的默认表名
在Spring AI 0.8.1版本中,官方未提供直接配置属性修改PGVector Store的默认表名(默认表名为vector_store),需要通过自定义PgVectorStore Bean的方式实现。具体步骤如下:
1. 自定义PgVectorStore Bean
创建配置类,手动实例化PgVectorStore并传入自定义表名。需要注入EmbeddingModel和PgVectorStore.PgVectorStoreConfig(该配置类会自动读取Spring Boot数据源及PGVector相关配置):
import org.springframework.ai.embedding.EmbeddingModel; import org.springframework.ai.pgvector.PgVectorStore; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class PgVectorCustomConfig { @Bean public PgVectorStore pgVectorStore(EmbeddingModel embeddingModel, PgVectorStore.PgVectorStoreConfig config) { // 替换为你的自定义表名,例如"my_custom_vector_table" String customTableName = "my_custom_vector_table"; return new PgVectorStore(embeddingModel, config, customTableName); } }
2. 创建自定义表结构
由于默认的自动建表逻辑针对vector_store表,你需要手动在PostgreSQL中创建自定义表,表结构需与PGVector Store的要求匹配(维度需与使用的Embedding模型一致):
-- 创建自定义向量表 CREATE TABLE IF NOT EXISTS my_custom_vector_table ( id UUID PRIMARY KEY, content TEXT NOT NULL, metadata JSONB, embedding vector(1536) -- 此处维度需和你的EmbeddingModel输出维度一致 ); -- 创建向量索引(提升查询性能) CREATE INDEX IF NOT EXISTS idx_my_custom_vector_embedding ON my_custom_vector_table USING ivfflat (embedding vector_cosine_ops) WITH (lists = 100);
3. 保持基础配置不变
数据源及PGVector的核心配置仍通过Spring Boot属性文件(application.properties或application.yml)指定:
# 数据源配置 spring.datasource.url=jdbc:postgresql://localhost:5432/your_database spring.datasource.username=your_username spring.datasource.password=your_password # PGVector配置(维度需与表结构中的embedding字段维度一致) spring.ai.pgvector.dimension=1536
完成以上步骤后,PGVector Store就会使用你指定的自定义表名进行数据操作。
内容的提问来源于stack exchange,提问作者Luiz Henrique Salazar
相关产品推荐
相关产品推荐

