package cn.yinlihupo.common.config; import org.springframework.ai.chat.client.ChatClient; import org.springframework.ai.embedding.EmbeddingModel; import org.springframework.ai.vectorstore.VectorStore; import org.springframework.ai.vectorstore.pgvector.PgVectorStore; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Primary; import org.springframework.jdbc.core.JdbcTemplate; /** * Spring AI 配置类 * 配置ChatClient和向量存储 */ @Configuration public class SpringAiConfig { /** * 配置ChatClient * * @param builder ChatClient.Builder * @return ChatClient */ @Bean public ChatClient chatClient(ChatClient.Builder builder) { return builder.build(); } /** * 配置PgVectorStore向量存储 * 使用@Primary标记,覆盖Spring AI的自动配置 * * @param jdbcTemplate JDBC模板 * @param embeddingModel 嵌入模型 * @return VectorStore */ @Bean @Primary public VectorStore vectorStore(JdbcTemplate jdbcTemplate, EmbeddingModel embeddingModel) { return PgVectorStore.builder(jdbcTemplate, embeddingModel) .dimensions(1536) // 向量维度,与配置一致 .distanceType(PgVectorStore.PgDistanceType.COSINE_DISTANCE) .initializeSchema(true) // 自动初始化schema .build(); } }