大家好呀,我是你们的朋友小米,31岁,依旧喜欢折腾各种新技术,也乐意把自己踩过的坑分享出来,省得大家再跳一遍坑。
最近一个项目里,有小伙伴问我:
“小米,我们团队准备用 Spring Boot + PostgresML 来做向量搜索和 Embedding 存储,能不能用 SpringAI 直接搞定?”
我当时眼睛一亮,这个问题问得太对了!因为 SpringAI 最近真的越来越强大,不仅能接入 OpenAI、Ollama、Mistral 这些大模型,还能直接对接 PostgresML 向量模型。这意味着——我们既能利用 PostgreSQL 这套成熟数据库系统,又能原生支持 Embedding 和向量搜索,性能、扩展性和易用性全都兼顾。
今天,小米就带你来一次从 0 到 1 的实战:如何在 SpringAI 中使用 PostgresML 向量模型。文章很长,但干货超多,建议收藏慢慢看。
PostgresML 向量模型是什么?
简单来说,PostgresML = PostgreSQL + AI 能力扩展。
它直接把机器学习、深度学习和向量检索能力,集成进 PostgreSQL 数据库里。
我们知道传统 Embedding 往往要单独调用外部 API,比如 OpenAI Embedding,再把结果存到数据库。但有了 PostgresML,你可以直接在数据库内部生成和存储 Embedding,甚至直接跑推理。
优点很明显:
- 一站式:数据和 Embedding 都在 PostgreSQL 内部,管理更方便。
- 高性能:直接利用 PG 内核优化和 GPU 支持,性能杠杠的。
- 无缝集成:向量检索、SQL 查询天然融合。
在 SpringAI 中,PostgresML 向量模型也被官方支持,我们只需要配置好依赖和属性,就能像调用其他大模型一样使用它。
添加存储库和 BOM
第一步当然是加依赖啦。SpringAI 提供了官方 BOM,我们只需要在 pom.xml 里加上:
然后添加 PostgresML 的依赖:
注意:这里使用了 pgvector starter,它其实就是 SpringAI 对 PostgresML 向量功能 的封装。
自动配置
SpringAI 对 PostgresML 向量模型做了自动配置,只要你在 application.yml 里写好连接信息,系统启动时就能自动加载。
示例配置:
这样一来,Spring Boot 项目启动时,就会自动连接 Postgres 数据库,并且准备好向量存储表。
Embedding 属性
SpringAI 提供了丰富的配置项,下面小米整理成表格,方便你查阅
是不是很清晰?有了这张表,你就可以根据业务需要灵活调整参数。
运行时选项
除了配置文件里的属性,SpringAI 还提供了 运行时选项,也就是 PostgresMlEmbeddingOptions。
比如你可以在代码里动态设置:
这意味着,你可以在不同场景下灵活调整 Embedding 的参数,而不是写死在配置文件里。
示例控制器
好啦,说了这么多,来点实际代码吧!我们写一个最简单的 Spring Boot 控制器,演示如何用 PostgresML 来存储和查询向量。
这个小控制器能做两件事:
- 接收一段文本
- 调用 PostgresML 生成向量,并返回维度
是不是很丝滑?
手动配置
有些小伙伴不喜欢“自动配置”,想自己完全掌控,那也没问题。
SpringAI 允许你手动配置 Bean,例如:
这样你就能灵活控制连接池、事务,甚至不同的数据库环境。
总结
今天小米带你完整体验了一次 SpringAI 集成 PostgresML 向量模型 的实战,从 BOM 配置、自动配置,到 Embedding 属性、运行时选项、示例控制器,再到手动配置,应该已经一套流程打通了。
可以看到,SpringAI 把复杂的 Embedding 操作大大简化了,你完全不需要关心底层 SQL 或者 pgvector 细节,只管用就行。
如果你项目里已经用 PostgreSQL 作为数据库,那么直接用 PostgresML + SpringAI 来做向量存储,几乎是最优解!
END
那么问题来了:
你们团队在做向量存储时,更多是倾向于 外部 Embedding API(比如 OpenAI) ,还是 数据库内置的 PostgresML 呢?
欢迎留言讨论,我们一起交流经验~
我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!# 数据库秒变 AI 引擎!PostgresML + SpringAI 教程来了