OCI GenAI + Spring AI = 向量检索的最强组合,你准备好了吗?

52 阅读4分钟



有时候,程序员的快乐真的很简单——比如,终于搞懂了 OCI 的 GenAI 向量模型!那天我在办公室喝着第二杯美式,看着控制台跑出那行“Embedding completed successfully”,差点起立鼓掌。今天,小米就带你走进 Spring AI 的世界,一起玩转 OCI GenAI 向量模型 ——它不止能“理解文本”,还能为 AI 应用赋能,让智能检索、知识问答、语义搜索都变得又准又快!

故事从一次“语义搜索”说起

那是一个项目上线前的晚上。我们的客服知识库太庞大,用户提的问题和文档标题完全不匹配。

我想了想,单纯关键字匹配肯定不行,于是盯上了“向量检索”这条路。

就在那时,我发现了 Spring AI 的 OCI GenAI 向量模型(Oracle Cloud Infrastructure Generative AI) —— 它支持直接生成文本向量嵌入(Embedding),还完美兼容 Spring Boot。

一句话总结:

这是一个可以让你轻松用上 Oracle 云 AI 能力的神器!

什么是 OCI GenAI 向量模型?

简单来说,OCI GenAI 向量模型(OCI Generative AI Embedding Model)能把文本转化为高维向量表示(Embedding)。

这些向量可以理解为文本的“语义指纹”——语义相似的文本,它们的向量距离也会更近。

举个例子:

“买机票到东京”和“预订去日本的航班”虽然文字不同,但通过 Embedding 向量后,它们的语义距离会非常接近。

Spring AI 提供了非常优雅的封装,让我们通过简单的配置就能调用 OCI 的 Embedding 服务。

OCI Embedding 模型页面

在 OCI 控制台中,进入 Generative AI 模型页面,我们可以选择:

  • 模型类型:Text Embedding
  • 模型名称:如 cohere.embed-english-v3.0 或 cohere.embed-multilingual-v3.0
  • 部署区域(Region)
  • 模型端点(Endpoint)

每个模型都有不同的特点,比如英文模型速度快、多语言模型覆盖广。

小米小贴士:

如果你的系统要支持中文和英文双语知识库,推荐用 embed-multilingual-v3.0,效果会比单语模型更好。

OCI 文本嵌入页面

进入 OCI 控制台 → Generative AI → Text Embedding 页面,就能直接测试文本嵌入。

你只需输入一段文本,控制台就会返回一串向量数组。例如输入:

“Spring AI 是 Java 世界的 AI 框架。”

返回的结果可能是一个 1024 维的浮点数组。这些数字看起来平平无奇,但它们代表了文本的语义特征。

而在实际项目中,我们会将这些向量存入向量数据库(如 Milvus、Pinecone、PGVector)用于语义检索。

先决条件(Prerequisites)

在使用 Spring AI 集成 OCI GenAI 之前,你需要准备以下内容:

添加存储库和 BOM

在 pom.xml 中添加依赖即可轻松接入。

这一步就像打通了任督二脉——从此,你的 Spring Boot 项目拥有了 AI 的灵魂。

自动配置(Auto Configuration)

Spring AI 已经为我们准备好了 OciEmbeddingAutoConfiguration,只需在 application.yml 中配置 OCI 参数即可自动启用。

这样,Spring Boot 启动时就会自动创建 OciEmbeddingClient 实例,无需手动 Bean 配置。

是不是有点“Plug and Play”的感觉?

Embedding 属性详解

Spring AI 为 OCI GenAI 提供了详细的配置属性。我们来看看两个核心属性组:

1. spring.ai.oci.genai 属性

2. spring.ai.oci.genai.embedding 属性

运行时选项(OCIEmbeddingOptions)

在运行时,我们还可以灵活调整嵌入行为。

Spring AI 提供了 OCIEmbeddingOptions 类,可以让我们动态控制参数:

这样我们可以针对不同场景灵活切换模型或调整批处理策略。

示例代码(Sample Code)

现在到了大家最喜欢的环节——上代码!

以下是一个完整的 Spring Boot 示例,展示如何调用 OCI GenAI 向量模型进行文本嵌入。

运行之后,访问 POST /embedding 接口,输入一段文本,就能获得一个漂亮的向量数组。

就这么简单,你的系统已经拥有了语义理解能力!

手动配置(Manual Configuration)

当然,如果你想更灵活地控制,可以手动配置 OCIEmbeddingClient Bean:

这种方式适合想要在多模型、多环境之间动态切换的开发者。

尾声:AI 的向量世界才刚刚开始

当我第一次用 OCI GenAI 生成向量时,脑子里闪过一句话:

“人类理解语言靠情感,AI 理解语言靠向量。”

向量,是 AI 理解世界的方式。而 Spring AI + OCI GenAI 的组合,让 Java 开发者终于可以用熟悉的方式驾驭这种能力。

你可以用它做:

  • 智能问答
  • 语义搜索
  • 向量数据库检索
  • 推荐系统
  • 文档聚类分析

未来的应用,不仅要“存储数据”,还要“存储语义”。而这,就是向量的意义。

总结

END

“代码是冷的,但 AI 让它有了灵魂。”

当你把 OCI GenAI 接入项目的那一刻,你不仅让系统更智能,也让自己更靠近未来。

下次,我们来聊聊——如何用 Spring AI + 向量数据库构建一个真正懂语义的知识问答系统。

我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!