AI在线 AI在线

为什么说“嵌入”是 AI 的灵魂?一文带你玩转 SpringAI 向量模型

最近有小伙伴问我,AI 里的“嵌入模型 API”到底是干嘛的? 其实,它就像把文字、图片、数据转成“数字DNA”,方便 AI 理解和处理。 在 SpringAI 里,这一套 API 已经封装得很优雅,今天小米就带大家从故事开头一路聊到落地实现,保证看完你能用得飞起。

最近有小伙伴问我,AI 里的“嵌入模型 API”到底是干嘛的?其实,它就像把文字、图片、数据转成“数字DNA”,方便 AI 理解和处理。在 SpringAI 里,这一套 API 已经封装得很优雅,今天小米就带大家从故事开头一路聊到落地实现,保证看完你能用得飞起。

1.故事开场:为什么要有嵌入模型?

前段时间,我的同事阿辉遇到一个经典问题:

公司知识库的内容太庞大,光靠关键字搜索效率极低,经常搜不到真正相关的答案。于是,老板甩下一句话:

“要让用户输入一句话,系统能立刻找到最相关的资料!”

阿辉一脸懵逼地跑来找我。

我说:“这事啊,用嵌入(Embedding)就能解决。”

嵌入是什么?简单理解:就是把自然语言(文本)转化为一堆高维向量。这样相似的内容就能在“向量空间”里自动靠近,检索、推荐、聚合都不在话下。

SpringAI 里有一套嵌入模型 API,把复杂的细节都封装好了,我们只需要会用,就能轻松上手。

2.嵌入模型 API 概述

在 SpringAI 里,嵌入模型 API 的定位很清晰:

  • 统一接口:无论你用的是 OpenAI、Ollama 还是本地模型,调用方式都一致。
  • 标准化输入输出:请求就是 EmbeddingRequest,响应就是 EmbeddingResponse。
  • 结果可复用:嵌入的结果可以直接拿去做向量数据库检索(比如 Milvus、Pinecone、Postgres+pgvector),也能做相似度计算。

这套 API 就像一座“适配桥梁”,把不同厂商、不同实现的模型统一到一套 Spring 风格的接口下。

一句话总结:写一次代码,随便切换模型实现。

3.核心类:EmbeddingModel

嵌入 API 的核心抽象是 EmbeddingModel。

它是一个接口,定义了嵌入模型应该具备的能力。典型的方法有:

  • 调用嵌入:接收文本或文档,返回对应的向量表示。
  • 返回 EmbeddingResponse:把模型生成的结果统一打包。

比如你用 OpenAiEmbeddingModel,它就是 EmbeddingModel 的一个具体实现。换成 OllamaEmbeddingModel 也没问题,代码不用大改。

这就是 SpringAI 的强大之处:通过抽象接口,把“变化的部分”交给实现,“不变的部分”交给我们开发者。

4.请求参数:EmbeddingRequest

要跟嵌入模型说话,我们得先准备好“输入材料”。

这时登场的就是 EmbeddingRequest。

它的作用就像一张订单单据,把我们要转换的文本交给模型。常见参数有:

  • input:待嵌入的文本,可以是一段话,也可以是多个文档。
  • options:模型选项,比如指定使用哪个 embedding 模型。

举个例子,如果你要嵌入一句话:

图片图片

是不是很直观?这就是典型的 Spring 风格,写起来很顺手。

5.响应结果:EmbeddingResponse

模型跑完之后,返回的就是 EmbeddingResponse。

它里面包含了:

  • 一个或多个 Embedding:每一条输入文本对应一个向量。
  • 使用的模型信息:方便你追踪是哪个模型干的活。
  • 元信息:比如消耗的 tokens,或者额外的调试数据。

开发者最常用的就是取出 Embedding,拿到向量后再存进数据库或者计算相似度。

6.向量本体:Embedding

重点来了!

Embedding 就是嵌入结果的核心载体,它里面有:

  • embedding 向量:一个高维数组,比如 [0.021, -0.543, 0.112, ...]。
  • 索引:对应输入的第几条文本。

想象一下,如果你输入了三段话,返回结果里就有三个 Embedding,每个都对应一段文本的向量化表示。

这个向量可不是普通数组,它能支撑起相似度计算。比如两段话的余弦相似度越接近 1,就说明它们越相似。

7.可用实现

SpringAI 已经帮我们封装了多种实现:

  • OpenAIEmbeddingModel:调用 OpenAI 的 text-embedding 系列模型。
  • OllamaEmbeddingModel:支持本地部署的模型,比如 llama2 的 embedding 版本。
  • VertexAIEmbeddingModel:对接 Google Vertex AI 的嵌入能力。
  • BedrockEmbeddingModel:AWS Bedrock 提供的 embedding 模型。

未来还会有更多厂商接入,比如 Anthropic、智谱等。

更酷的是,如果你想接入自研模型,只要实现 EmbeddingModel 接口就行,完全无缝衔接。

8.场景落地:知识库问答

阿辉听完我的解释后,立刻跑去写了个小 demo:

  • 用户输入问题,比如:“如何在 SpringBoot 中使用 Redis 缓存?”
  • 系统先把这句话丢给 EmbeddingModel,生成向量。
  • 向量拿去查数据库,找最相似的文档。
  • 最后把文档交给大模型,总结出自然语言答案。

效果超神!以前搜不到答案的同事,现在一句话就能命中关键文档。

这就是嵌入的魔力。

9.总结

今天我们从故事出发,完整走了一遍 SpringAI 的嵌入模型 API:

  1. 嵌入模型 API 概述:统一调用,适配多厂商。
  2. EmbeddingModel:核心接口,定义模型能力。
  3. EmbeddingRequest:输入载体。
  4. EmbeddingResponse:结果打包。
  5. Embedding:向量本体。
  6. 可用实现:OpenAI、Ollama、Vertex、Bedrock 等。

一句话总结:嵌入模型 API 是 SpringAI 的“向量心脏”,让 AI 能看懂语义,搞定相似度搜索和知识问答。

下次再聊,我会结合 pgvector,带你做一个完整的“企业知识库问答”小系统,把嵌入模型的威力发挥到极致。

相关资讯

Elastic 收购 Jina AI,推动开源检索与多模态 AI 技术发展

Elastic 在官网宣布完成对 Jina AI 的收购。 这次收购标志着 Elastic 在开源检索与多模态 AI 领域的进一步拓展,Jina AI 原 CEO 肖涵将担任 Elastic 的 AI 副总裁,负责 AI 战略和研发。 由肖涵领导的 Jina 核心团队将继续致力于向量模型、重排器、Reader 及小型模型等领域的研究。
10/12/2025 9:24:51 AM
AI在线

炸裂:SpringAI内置DeepSeek啦!

好消息,Spring AI 最新快照版已经内置 DeepSeek 了,所以以后项目中对接 DeepSeek 就方便多了。 但因为快照版会有很多 Bug,所以今天咱们就来看稳定版的 Spring AI 如何对接 DeepSeek 满血版。 SpringAI和DeepSeek介绍Spring AI 是 Spring 生态系统中的一个重要项目,旨在将人工智能集成到 Spring 应用程序中,它为 Java 开发者提供了一种便捷的方式来构建、管理和部署 AI 模型。
2/12/2025 9:04:20 AM

干货:DeepSeek+SpringAI实现流式对话!

前一篇文章我们实现了《SpringAI集成满血版DeepSeek》,但是大模型的响应速度通常是很慢的,为了避免用户用户能够耐心等待输出的结果,我们通常会使用流式输出一点点将结果输出给用户。 那么问题来了,想要实现流式结果输出,后端和前端要如何配合? 后端要使用什么技术实现流式输出呢?
2/13/2025 8:06:40 AM
磊哥
  • 1