不联网也能跑大模型?SpringAI Ollama 来了!

126 阅读5分钟



有时候,技术就像一场冒险。那天,我泡着手磨咖啡,看着屏幕上的 spring.ai.ollama 配置文档,心想:“SpringAI 居然也能接 Ollama 模型?这也太酷了吧!”

于是,我的探索之旅,从一杯咖啡开始。

从 Ollama 说起:本地也能玩向量模型

过去我们提到向量模型(Embedding Models),总会想到 OpenAI、Azure、或者 Mistral 这些云端服务。可每次用都要联网、要 API Key、要额度,一不小心还超费。

后来我遇见了 Ollama —— 一个可以在你自己电脑上运行大模型的神器!

Ollama 的定位其实非常简单:

“让开发者在本地像调用 API 一样,运行 LLM。”

而现在,SpringAI 已经支持直接集成 Ollama 的向量模型啦!这意味着——

你可以在 Spring Boot 项目中,用和调用 OpenAI Embedding 一样的方式,创建自己的 OllamaEmbeddingModel

想象一下,你在本地搭一个小应用,调用 Llama、Mistral、Phi、甚至 HuggingFace 的模型,做向量检索、语义搜索、知识问答……这一切都不用出网!

是不是有点小激动?

OllamaEmbeddingModel:本地的智能核心

在 SpringAI 的世界里,每种向量模型都有自己的实现类。比如:

  • OpenAI 是 OpenAiEmbeddingModel
  • Azure 是 AzureOpenAiEmbeddingModel
  • 而 Ollama 则是——OllamaEmbeddingModel

这个类就是 Ollama 在 SpringAI 里的“接口代表”。它通过 HTTP 与本地的 Ollama 服务通信,把文本转换成向量。只要你在本地启动了 Ollama 服务(默认端口 11434),SpringAI 就能直接连上。

用一句话总结它的作用:

OllamaEmbeddingModel = “让 SpringAI 能直接使用本地模型生成向量的桥梁。”

这在很多企业级场景中都特别有意义:

数据不出内网、安全性高、部署成本低,还能离线运行。

先决条件:出发前要准备什么?

要跑起来 OllamaEmbeddingModel,我们先准备好这些工具包:

1、安装 Ollama

2、Spring Boot 3.3+

  • SpringAI 依赖 Spring Boot 的新版本生态。

3、引入依赖

在你的 pom.xml 中添加:

4、网络 or 本地模型

  • 如果你使用 HuggingFace 模型,请提前下载或确认已拉取。

自动配置:Spring Boot 的魔法就在这里

最让我喜欢的地方就是——Spring Boot 的自动配置机制。

只要依赖导入正确,SpringAI 会自动检测到你安装了 Ollama,并自动创建 OllamaEmbeddingModel Bean。

你不需要手写复杂的配置类,@Autowired 一下就能用了!

内部的流程大致如下:

  1. 检查 spring.ai.ollama 配置;
  2. 初始化 OllamaClient;
  3. 构建 OllamaEmbeddingModel;
  4. 自动注册到 Spring 容器。

所以,只要你的配置文件中有 Ollama 的信息,它就能自动工作。

这就是真正的“即插即用式 AI 模型支持”。

Embedding 属性详解

说到配置,就离不开我们开发者最爱的 application.yml。在 Ollama 模型中,主要的属性分为两类:

1. spring.ai.ollama 属性

2. spring.ai.ollama.embedding 属性

这些配置足以覆盖大部分使用场景。比如你想换模型:

一句话搞定!是不是比自己写 HTTP Client 爽多了?

运行时选项

有时候我们希望对 Ollama 的运行方式做一些调整,比如:

  • 控制显存占用;
  • 修改最大 token 数;
  • 调整温度(生成随机性);
  • 指定自定义参数。

SpringAI 通过 OllamaOptions 让你轻松完成这些操作。

示例配置:

然后注入到模型中使用:

通过这种方式,我们可以灵活控制每次向量生成的行为,就像给模型“加个油门”。

自动拉取模型:让模型管理更智能

Ollama 的一个贴心功能,就是能自动下载(pull)模型。

SpringAI 对此也提供了三种模式:

我个人最推荐的是 when_missing,既安全又高效。

比如当你第一次调用某个模型,SpringAI 会自动帮你触发下载;后面再用,就不会重复拉取。

如果你在内网环境中,建议设为 never,避免访问外网。

支持 HuggingFace 模型?没错!

除了官方的 Ollama 模型(如 mistral、llama3),你还可以直接使用 HuggingFace 上的模型!

只需一行命令:

ollama pull hf.co/myuser/awesome-embedding-model

这意味着你可以本地加载各种开源 Embedding 模型,比如:

  • all-MiniLM
  • sentence-transformers
  • text-embedding-3-large(非官方)

SpringAI 不做区分,它只认 model name。只要 Ollama 能运行,SpringAI 就能接。这让整个生态彻底打通:

从 HuggingFace → Ollama → SpringAI → 应用服务层

示例控制器:三行代码跑起来!

最后,来个实战小例子,让你看看 Ollama 在 Spring 中多简单:

启动应用后,访问:

返回的就是文本对应的向量数据。这串数字,可以直接喂给向量数据库(如 Milvus、PGVector、Chroma),实现语义检索、知识问答等功能。

是不是有点“端到端智能检索系统”的味道?

手动配置 OllamaEmbeddingModel(进阶玩法)

虽然 Spring Boot 自动配置已经很方便,但有时候我们需要更多定制化,比如:

  • 自定义 HTTP 客户端;
  • 连接远程的 Ollama 节点;
  • 使用特定的模型版本。

可以手动在配置类中定义:

这样就能完全掌控模型初始化的细节。

总结:AI,本地也可以很优雅

当我第一次用 Ollama 跑向量模型的时候,真的有种“AI 私有化”的满足感。

没有延迟、没有限额、没有隐私顾虑。再加上 SpringAI 这种优雅的封装,你甚至不用写几行代码,就能拥有一套本地智能向量引擎

想象一下:

  • 企业内部知识库问答;
  • 离线语义检索系统;
  • 安全合规的 AI 辅助工具。

都可以用 SpringAI + Ollama 来构建!

END

我常说:“AI 不是遥远的云端能力,而是开发者手边的一杯咖啡。”

喝着咖啡,写几行 Spring Boot 配置,AI 的世界,就在你的电脑里悄悄运转起来了。

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