有时候,技术就像一场冒险。那天,我泡着手磨咖啡,看着屏幕上的 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
- 前往官网 ollama.ai,根据系统选择版本。
- 安装好后,在命令行中输入:ollama run mistral
- 这行命令能验证 Ollama 是否可用,并下载模型。
2、Spring Boot 3.3+
- SpringAI 依赖 Spring Boot 的新版本生态。
3、引入依赖
在你的 pom.xml 中添加:
4、网络 or 本地模型
- 如果你使用 HuggingFace 模型,请提前下载或确认已拉取。
自动配置:Spring Boot 的魔法就在这里
最让我喜欢的地方就是——Spring Boot 的自动配置机制。
只要依赖导入正确,SpringAI 会自动检测到你安装了 Ollama,并自动创建 OllamaEmbeddingModel Bean。
你不需要手写复杂的配置类,@Autowired 一下就能用了!
内部的流程大致如下:
- 检查 spring.ai.ollama 配置;
- 初始化 OllamaClient;
- 构建 OllamaEmbeddingModel;
- 自动注册到 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岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货!